Skip to content
This repository was archived by the owner on May 28, 2019. It is now read-only.

Commit 21b9920

Browse files
authored
Merge pull request #72 from buildo/71-allow_to_ignore_routes
#71: Allow to ignore routes (closes #71)
2 parents a1d441d + 8c9b2e1 commit 21b9920

5 files changed

Lines changed: 131 additions & 99 deletions

File tree

core/shared/src/main/scala/io.buildo.metarpheus/core/extractors/controller.scala

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import scala.meta.contrib._
77

88
package object controller {
99

10+
implicit val extractVarMods: Extract[Decl.Def, Mod] =
11+
Extract(_.mods)
12+
1013
private[this] def extractMethod(m: Decl.Def): String =
1114
m.mods.collectFirst {
1215
case Mod.Annot(Ctor.Ref.Name("query")) => "get"
@@ -77,9 +80,9 @@ package object controller {
7780

7881
def extractRoute(source: Source, t: Defn.Trait): List[intermediate.Route] = {
7982
val methods = t.collect {
80-
case m: Decl.Def if m.mods.collect {
81-
case Mod.Annot(Ctor.Ref.Name("query" | "command")) => ()
82-
}.nonEmpty =>
83+
case m: Decl.Def
84+
if (m.hasMod(mod"@query") || m.hasMod(mod"@command")) &&
85+
!m.hasMod(mod"@metarpheusIgnore") =>
8386
m
8487
}
8588

core/shared/src/test/resources/fixtures/controllers.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ trait CampingController {
5959
*/
6060
@command
6161
def create(camping: Camping, parameters: OperationParameters): Future[Either[String, Camping]]
62+
63+
@command @metarpheusIgnore
64+
def ignoreMe(ignore: IgnoreMe): Future[Either[String, String]]
6265
}
6366

6467
class CampingControllerImpl(
@@ -87,4 +90,7 @@ class CampingControllerImpl(
8790

8891
@command
8992
def create(camping: Camping): Future[Either[String, Camping]] = ???
93+
94+
@command
95+
def ignoreMe(ignore: IgnoreMe): Future[Either[String, String]] = ???
9096
}

core/shared/src/test/resources/fixtures/models.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,7 @@ object Surface {
6969
/* Not sure campings exist */
7070
Another
7171
}
72+
73+
case class IgnoreMe(
74+
ignore: String
75+
)

core/shared/src/test/scala/io.buildo.metarpheus/core/extractors/ApiSuite.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,17 @@ class ApiSuite extends FunSuite {
2929
), _, _, _, _, _, _, _) => ()
3030
// format: on
3131
}.isDefined)
32+
33+
assert(api.models.collectFirst {
34+
case CaseClass(
35+
"IgnoreMe",
36+
_,
37+
_,
38+
_,
39+
_
40+
) =>
41+
()
42+
}.isEmpty)
3243
}
3344

3445
}

core/shared/src/test/scala/io.buildo.metarpheus/core/extractors/ModelSuite.scala

Lines changed: 104 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -21,115 +21,123 @@ class ModelSuite extends FunSuite {
2121
import intermediate._
2222

2323
val expected =
24-
List(
25-
CaseClass(
26-
name = "CampingName",
27-
members = List(
28-
CaseClass.Member(name = "s", tpe = Type.Name("String"), desc = None)
29-
),
30-
desc = None,
31-
isValueClass = true,
24+
List(
25+
CaseClass(
26+
name = "CampingName",
27+
members = List(
28+
CaseClass.Member(name = "s", tpe = Type.Name("String"), desc = None)
3229
),
33-
CaseClass(
34-
name = "Camping",
35-
members = List(
36-
CaseClass.Member(name = "id", tpe = Type.Name("UUID"), desc = None),
37-
CaseClass.Member(name = "name", tpe = Type.Name("CampingName"), desc = None),
38-
CaseClass
39-
.Member(name = "size", tpe = Type.Name("Int"), desc = Some("number of tents")),
40-
CaseClass.Member(
41-
name = "location",
42-
tpe = Type.Name("CampingLocation"),
43-
desc = Some("camping location")
44-
),
45-
CaseClass.Member(
46-
name = "rating",
47-
tpe = Type.Name("CampingRating"),
48-
desc = Some("camping rating")
49-
),
50-
CaseClass.Member(
51-
name = "a",
52-
tpe = Type.Name("A"),
53-
desc = None
54-
)
30+
desc = None,
31+
isValueClass = true,
32+
),
33+
CaseClass(
34+
name = "Camping",
35+
members = List(
36+
CaseClass.Member(name = "id", tpe = Type.Name("UUID"), desc = None),
37+
CaseClass.Member(name = "name", tpe = Type.Name("CampingName"), desc = None),
38+
CaseClass
39+
.Member(name = "size", tpe = Type.Name("Int"), desc = Some("number of tents")),
40+
CaseClass.Member(
41+
name = "location",
42+
tpe = Type.Name("CampingLocation"),
43+
desc = Some("camping location")
44+
),
45+
CaseClass.Member(
46+
name = "rating",
47+
tpe = Type.Name("CampingRating"),
48+
desc = Some("camping rating")
5549
),
56-
desc = Some("Represents a camping site"),
57-
typeParams = List(
58-
Type.Name("A")
50+
CaseClass.Member(
51+
name = "a",
52+
tpe = Type.Name("A"),
53+
desc = None
5954
)
6055
),
61-
CaseClass(
62-
name = "Swan",
63-
members = List(
64-
CaseClass.Member(
65-
name = "color",
66-
tpe = Type.Name("String"),
67-
desc = Some("color of the swan")
68-
)
69-
),
70-
desc = Some("Represents a swan")
56+
desc = Some("Represents a camping site"),
57+
typeParams = List(
58+
Type.Name("A")
59+
)
60+
),
61+
CaseClass(
62+
name = "Swan",
63+
members = List(
64+
CaseClass.Member(
65+
name = "color",
66+
tpe = Type.Name("String"),
67+
desc = Some("color of the swan")
68+
)
7169
),
72-
CaseEnum(
73-
name = "CampingLocation",
74-
values = List(
75-
CaseEnum.Member(
76-
name = "Seaside",
77-
desc = Some("Near the sea")
78-
),
79-
CaseEnum.Member(
80-
name = "Mountains",
81-
desc = Some("High up")
82-
)
70+
desc = Some("Represents a swan")
71+
),
72+
CaseEnum(
73+
name = "CampingLocation",
74+
values = List(
75+
CaseEnum.Member(
76+
name = "Seaside",
77+
desc = Some("Near the sea")
8378
),
84-
desc = Some("Location of the camping site")
79+
CaseEnum.Member(
80+
name = "Mountains",
81+
desc = Some("High up")
82+
)
8583
),
86-
CaseEnum(
87-
name = "CampingRating",
88-
values = List(
89-
CaseEnum.Member(
90-
name = "High",
91-
desc = Some("High")
92-
),
93-
CaseEnum.Member(
94-
name = "Medium",
95-
desc = Some("Medium")
96-
),
97-
CaseEnum.Member(
98-
name = "Low",
99-
desc = Some("Low")
100-
)
84+
desc = Some("Location of the camping site")
85+
),
86+
CaseEnum(
87+
name = "CampingRating",
88+
values = List(
89+
CaseEnum.Member(
90+
name = "High",
91+
desc = Some("High")
92+
),
93+
CaseEnum.Member(
94+
name = "Medium",
95+
desc = Some("Medium")
10196
),
102-
desc = Some("Rating of the camping site")
97+
CaseEnum.Member(
98+
name = "Low",
99+
desc = Some("Low")
100+
)
103101
),
104-
CaseEnum(
105-
name = "Planet",
106-
values = List(
107-
CaseEnum.Member(
108-
name = "Earth",
109-
desc = Some("Earth is a blue planet")
110-
),
111-
CaseEnum.Member(
112-
name = "Another",
113-
desc = Some("Not sure campings exist")
114-
)
102+
desc = Some("Rating of the camping site")
103+
),
104+
CaseEnum(
105+
name = "Planet",
106+
values = List(
107+
CaseEnum.Member(
108+
name = "Earth",
109+
desc = Some("Earth is a blue planet")
115110
),
116-
desc = Some("Planet of the camping site")
111+
CaseEnum.Member(
112+
name = "Another",
113+
desc = Some("Not sure campings exist")
114+
)
117115
),
118-
CaseEnum(
119-
name = "Surface",
120-
values = List(
121-
CaseEnum.Member(
122-
name = "Sand",
123-
desc = Some("Sandy")
124-
),
125-
CaseEnum.Member(
126-
name = "Earth",
127-
desc = Some("Dirt")
128-
)
116+
desc = Some("Planet of the camping site")
117+
),
118+
CaseEnum(
119+
name = "Surface",
120+
values = List(
121+
CaseEnum.Member(
122+
name = "Sand",
123+
desc = Some("Sandy")
129124
),
130-
desc = Some("Surface of the camping site")
131-
)
125+
CaseEnum.Member(
126+
name = "Earth",
127+
desc = Some("Dirt")
128+
)
129+
),
130+
desc = Some("Surface of the camping site")
131+
),
132+
CaseClass(
133+
name = "IgnoreMe",
134+
members = List(
135+
CaseClass.Member(name = "ignore", tpe = Type.Name("String"), desc = None)
136+
),
137+
desc = None,
138+
isValueClass = false,
132139
)
140+
)
133141
val comparison = DiffShow.diff[List[Model]](expected, result)
134142
assert(comparison.isIdentical, comparison.string)
135143
}

0 commit comments

Comments
 (0)