@@ -5,6 +5,8 @@ import play.api.data._, Forms._, validation.Constraints._
5
5
6
6
import org .json4s ._ , ext .JodaTimeSerializers
7
7
import com .github .tototoshi .play2 .json4s .native ._
8
+
9
+ import scala .concurrent .Future
8
10
import scala .concurrent .ExecutionContext .Implicits .global
9
11
10
12
import models ._
@@ -13,17 +15,13 @@ object Programmers extends Controller with Json4s {
13
15
14
16
implicit val formats = DefaultFormats ++ JodaTimeSerializers .all
15
17
16
- def all = Action {
17
- Async {
18
- Programmer .findAll.map(programmers => Ok (Extraction .decompose(programmers)))
19
- }
18
+ def all = Action .async {
19
+ Programmer .findAll.map(programmers => Ok (Extraction .decompose(programmers)))
20
20
}
21
21
22
- def show (id : Long ) = Action {
23
- Async {
24
- Programmer .find(id).map { programmerOpt =>
25
- programmerOpt map { programmer => Ok (Extraction .decompose(programmer)) } getOrElse NotFound
26
- }
22
+ def show (id : Long ) = Action .async {
23
+ Programmer .find(id).map { programmerOpt =>
24
+ programmerOpt map { programmer => Ok (Extraction .decompose(programmer)) } getOrElse NotFound
27
25
}
28
26
}
29
27
@@ -36,82 +34,68 @@ object Programmers extends Controller with Json4s {
36
34
)(ProgrammerForm .apply)(ProgrammerForm .unapply)
37
35
)
38
36
39
- def create = Action { implicit req =>
37
+ def create = Action .async { implicit req =>
40
38
programmerForm.bindFromRequest.fold(
41
- formWithErrors => BadRequest (" invalid parameters" ),
42
- form => {
43
- Async {
44
- Programmer .create(name = form.name, companyId = form.companyId).map { programmer =>
45
- Created .withHeaders(LOCATION -> s " /programmers/ ${programmer.id}" )
46
- }
47
- }
39
+ formWithErrors => Future .successful(BadRequest (" invalid parameters" )),
40
+ form => Programmer .create(name = form.name, companyId = form.companyId).map { programmer =>
41
+ Created .withHeaders(LOCATION -> s " /programmers/ ${programmer.id}" )
48
42
}
49
43
)
50
44
}
51
45
52
- def addSkill (programmerId : Long , skillId : Long ) = Action {
53
- Async {
54
- Programmer .find(programmerId).map { programmerOpt =>
55
- programmerOpt map { programmer =>
56
- try {
57
- Skill .find(skillId).map { skillOpt =>
58
- skillOpt map { skill => programmer.addSkill(skill) }
59
- }
60
- Ok
61
- } catch { case e : Exception => Conflict }
62
- } getOrElse NotFound
63
- }
64
- }
65
- }
66
-
67
- def deleteSkill (programmerId : Long , skillId : Long ) = Action {
68
- Async {
69
- Programmer .find(programmerId).map { programmerOpt =>
70
- programmerOpt map { programmer =>
46
+ def addSkill (programmerId : Long , skillId : Long ) = Action .async {
47
+ Programmer .find(programmerId).map { programmerOpt =>
48
+ programmerOpt map { programmer =>
49
+ try {
71
50
Skill .find(skillId).map { skillOpt =>
72
51
skillOpt map { skill => programmer.addSkill(skill) }
73
52
}
74
53
Ok
75
- } getOrElse NotFound
76
- }
54
+ } catch { case e : Exception => Conflict }
55
+ } getOrElse NotFound
77
56
}
78
57
}
79
58
80
- def joinCompany (programmerId : Long , companyId : Long ) = Action {
81
- Async {
82
- for {
83
- companyOpt <- Company .find(companyId)
84
- programmerOpt <- Programmer .find(programmerId)
85
- } yield {
86
- companyOpt map { company =>
87
- programmerOpt.map { programmer =>
88
- programmer.copy(companyId = Some (company.id)).save()
89
- Ok
90
- } getOrElse BadRequest (" Programmer not found!" )
91
- } getOrElse BadRequest (" Company not found!" )
92
- }
59
+ def deleteSkill (programmerId : Long , skillId : Long ) = Action .async {
60
+ Programmer .find(programmerId).map { programmerOpt =>
61
+ programmerOpt map { programmer =>
62
+ Skill .find(skillId).map { skillOpt =>
63
+ skillOpt map { skill => programmer.addSkill(skill) }
64
+ }
65
+ Ok
66
+ } getOrElse NotFound
93
67
}
94
68
}
95
69
96
- def leaveCompany (programmerId : Long ) = Action {
97
- Async {
98
- Programmer .find(programmerId).map { programmerOpt =>
99
- programmerOpt map { programmer =>
100
- programmer.copy(companyId = None ).save()
70
+ def joinCompany (programmerId : Long , companyId : Long ) = Action .async {
71
+ for {
72
+ companyOpt <- Company .find(companyId)
73
+ programmerOpt <- Programmer .find(programmerId)
74
+ } yield {
75
+ companyOpt map { company =>
76
+ programmerOpt.map { programmer =>
77
+ programmer.copy(companyId = Some (company.id)).save()
101
78
Ok
102
79
} getOrElse BadRequest (" Programmer not found!" )
103
- }
80
+ } getOrElse BadRequest ( " Company not found! " )
104
81
}
105
82
}
106
83
107
- def delete (id : Long ) = Action {
108
- Async {
109
- Programmer .find(id).map { programmerOpt =>
110
- programmerOpt map { programmer =>
111
- programmer.destroy()
112
- NoContent
113
- } getOrElse NotFound
114
- }
84
+ def leaveCompany (programmerId : Long ) = Action .async {
85
+ Programmer .find(programmerId).map { programmerOpt =>
86
+ programmerOpt map { programmer =>
87
+ programmer.copy(companyId = None ).save()
88
+ Ok
89
+ } getOrElse BadRequest (" Programmer not found!" )
90
+ }
91
+ }
92
+
93
+ def delete (id : Long ) = Action .async {
94
+ Programmer .find(id).map { programmerOpt =>
95
+ programmerOpt map { programmer =>
96
+ programmer.destroy()
97
+ NoContent
98
+ } getOrElse NotFound
115
99
}
116
100
}
117
101
0 commit comments