rapida-partner 1.1.4 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/examples/components/forms/character.form.ts +9 -22
- package/src/examples/components/forms/company.form.ts +47 -44
- package/src/examples/components/forms/movie.form.ts +19 -131
- package/src/examples/components/forms/movieEpisode.form.ts +78 -0
- package/src/examples/components/forms/movieGenre.form.ts +12 -6
- package/src/examples/components/forms/person.form.ts +44 -41
- package/src/interfaces/form-condition.interface.ts +1 -1
- package/src/interfaces/form.interface.ts +28 -1
- package/src/schemas/form.ref.json +78 -6
package/package.json
CHANGED
|
@@ -12,27 +12,15 @@ export const characterForm: IForm = {
|
|
|
12
12
|
endpoint: "/characters",
|
|
13
13
|
methods: [{ verb: "POST" }, { verb: "PUT" }, { verb: "GET" }, { verb: "DELETE" }],
|
|
14
14
|
request: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: "characterDescription",
|
|
26
|
-
dataType: EFormContractDataType.WYSIWYG,
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
name: "characterType",
|
|
30
|
-
dataType: EFormContractDataType.TEXT,
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: "characterGender",
|
|
34
|
-
dataType: EFormContractDataType.TEXT,
|
|
35
|
-
},
|
|
15
|
+
entity: "Character",
|
|
16
|
+
description: "Represents a character in a story or narrative.",
|
|
17
|
+
fields: [
|
|
18
|
+
{ name: "_id", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
19
|
+
{ name: "characterName", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
|
|
20
|
+
{ name: "characterImage", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
21
|
+
{ name: "characterDescription", dataType: EFormContractDataType.LONGTEXT, isRequired: false },
|
|
22
|
+
{ name: "characterType", dataType: EFormContractDataType.NVARCHAR, enum: ["protagonist", "antagonist", "hero", "villain", "sidekick", "supporting"], isRequired: false },
|
|
23
|
+
{ name: "characterGender", dataType: EFormContractDataType.NVARCHAR, enum: ["male", "female", "other"], isRequired: false },
|
|
36
24
|
],
|
|
37
25
|
},
|
|
38
26
|
}
|
|
@@ -86,7 +74,6 @@ export const characterForm: IForm = {
|
|
|
86
74
|
options: [
|
|
87
75
|
{ value: "male", label: "Masculino" },
|
|
88
76
|
{ value: "female", label: "Feminino" },
|
|
89
|
-
{ value: "non-binary", label: "Não-binário" },
|
|
90
77
|
{ value: "other", label: "Outro" },
|
|
91
78
|
],
|
|
92
79
|
}
|
|
@@ -12,50 +12,52 @@ export const companyForm: IForm = {
|
|
|
12
12
|
endpoint: "/companies",
|
|
13
13
|
methods: [{ verb: "POST" }, { verb: "PUT" }, { verb: "GET" }, { verb: "DELETE" }],
|
|
14
14
|
request: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
{name: "
|
|
19
|
-
{name: "
|
|
20
|
-
{name: "
|
|
21
|
-
{name: "
|
|
22
|
-
{name: "
|
|
23
|
-
{name: "
|
|
24
|
-
{name: "
|
|
25
|
-
{name: "
|
|
26
|
-
{name: "
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{name: "
|
|
35
|
-
{name: "
|
|
36
|
-
{name: "
|
|
37
|
-
{name: "
|
|
38
|
-
{name: "
|
|
39
|
-
{name: "
|
|
40
|
-
{name: "
|
|
41
|
-
{name: "
|
|
42
|
-
{name: "
|
|
43
|
-
{name: "
|
|
44
|
-
{name: "
|
|
45
|
-
{name: "
|
|
46
|
-
{name: "
|
|
47
|
-
{name: "
|
|
48
|
-
{name: "
|
|
49
|
-
{name: "
|
|
50
|
-
{name: "
|
|
51
|
-
{name: "
|
|
52
|
-
{name: "
|
|
53
|
-
{name: "
|
|
54
|
-
{name: "
|
|
55
|
-
{name: "
|
|
56
|
-
{name: "
|
|
57
|
-
{name: "
|
|
58
|
-
{name: "
|
|
15
|
+
entity: "Companies",
|
|
16
|
+
description: "Represents a company or business entity.",
|
|
17
|
+
fields: [
|
|
18
|
+
{ name: "_id", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
19
|
+
{ name: "country", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
|
|
20
|
+
{ name: "cnpj", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
21
|
+
{ name: "name", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
|
|
22
|
+
{ name: "businessName", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
23
|
+
{ name: "birthday", dataType: EFormContractDataType.DATE, isRequired: false },
|
|
24
|
+
{ name: "legalNature", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
25
|
+
{ name: "stateRegistration", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
26
|
+
{ name: "municipalRegistration", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
27
|
+
{ name: "description", dataType: EFormContractDataType.LONGTEXT, isRequired: false },
|
|
28
|
+
{ name: "logo", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
29
|
+
{ name: "partners", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: false, foreignKey: {
|
|
30
|
+
entity: "People",
|
|
31
|
+
connectionAttribute: "_id",
|
|
32
|
+
relationship: "many-to-many"
|
|
33
|
+
} },
|
|
34
|
+
{ name: "phoneOne", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
|
|
35
|
+
{ name: "emailOne", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
|
|
36
|
+
{ name: "addressOneZipCode", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
37
|
+
{ name: "addressOneStreet", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
38
|
+
{ name: "addressOneDistrict", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
39
|
+
{ name: "addressOneNumber", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
40
|
+
{ name: "addressOneComplement", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
41
|
+
{ name: "addressOneCity", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
42
|
+
{ name: "addressOneState", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
43
|
+
{ name: "addressOneLatitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
44
|
+
{ name: "addressOneLongitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
45
|
+
{ name: "addressTwoZipCode", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
46
|
+
{ name: "addressTwoStreet", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
47
|
+
{ name: "addressTwoDistrict", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
48
|
+
{ name: "addressTwoNumber", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
49
|
+
{ name: "addressTwoComplement", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
50
|
+
{ name: "addressTwoCity", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
51
|
+
{ name: "addressTwoState", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
52
|
+
{ name: "addressTwoLatitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
53
|
+
{ name: "addressTwoLongitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
54
|
+
{ name: "phoneTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
55
|
+
{ name: "emailTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
56
|
+
{ name: "siteOne", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
57
|
+
{ name: "siteTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
58
|
+
{ name: "linkedin", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
59
|
+
{ name: "instagram", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
60
|
+
{ name: "facebook", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
59
61
|
]
|
|
60
62
|
}
|
|
61
63
|
}],
|
|
@@ -406,6 +408,7 @@ export const companyForm: IForm = {
|
|
|
406
408
|
valueField: "_id",
|
|
407
409
|
paramsToFilter: ["personCpf", "personName"],
|
|
408
410
|
paramType: "query",
|
|
411
|
+
relatedEntity: "People",
|
|
409
412
|
},
|
|
410
413
|
isMultiple: true,
|
|
411
414
|
},
|
|
@@ -11,78 +11,24 @@ export const movieForm: IForm = {
|
|
|
11
11
|
endpoint: "/movies",
|
|
12
12
|
methods: [{ verb: "POST" }, { verb: "PUT" }, { verb: "GET" }, { verb: "DELETE" }],
|
|
13
13
|
request: {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
name: "imdbRating",
|
|
33
|
-
dataType: EFormContractDataType.NUMBER,
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
name: "movieGenres",
|
|
37
|
-
dataType: "array",
|
|
38
|
-
elements: [
|
|
39
|
-
{
|
|
40
|
-
name: "movieGenreId",
|
|
41
|
-
dataType: EFormContractDataType.TEXT,
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: "link1",
|
|
47
|
-
dataType: EFormContractDataType.TEXT,
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: "link2",
|
|
51
|
-
dataType: EFormContractDataType.TEXT,
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: "link3",
|
|
55
|
-
dataType: EFormContractDataType.TEXT,
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: "episodes",
|
|
59
|
-
dataType: "array",
|
|
60
|
-
elements: [
|
|
61
|
-
{
|
|
62
|
-
name: "episodeTitle",
|
|
63
|
-
dataType: EFormContractDataType.TEXT,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: "episodeDescription",
|
|
67
|
-
dataType: EFormContractDataType.WYSIWYG,
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
name: "episodeReleaseDate",
|
|
71
|
-
dataType: EFormContractDataType.DATE,
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
name: "charactersId",
|
|
75
|
-
dataType: "array",
|
|
76
|
-
elements: [
|
|
77
|
-
{
|
|
78
|
-
name: "characterId",
|
|
79
|
-
dataType: EFormContractDataType.TEXT,
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
],
|
|
84
|
-
},
|
|
85
|
-
]
|
|
14
|
+
entity: "Movie",
|
|
15
|
+
description: "Represents a movie or TV series in the system.",
|
|
16
|
+
fields: [
|
|
17
|
+
{ name: "_id", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
18
|
+
{ name: "pictureFile", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
19
|
+
{ name: "name", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
|
|
20
|
+
{ name: "description", dataType: EFormContractDataType.LONGTEXT, isRequired: true },
|
|
21
|
+
{ name: "releaseDate", dataType: EFormContractDataType.DATE, isRequired: true },
|
|
22
|
+
{ name: "imdbRating", dataType: EFormContractDataType.DECIMAL, isRequired: true },
|
|
23
|
+
{ name: "movieGenres", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
|
|
24
|
+
entity: "MovieGenre",
|
|
25
|
+
connectionAttribute: "_id",
|
|
26
|
+
relationship: "many-to-many"
|
|
27
|
+
} },
|
|
28
|
+
{ name: "link1", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
|
|
29
|
+
{ name: "link2", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
30
|
+
{ name: "link3", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
|
|
31
|
+
],
|
|
86
32
|
}
|
|
87
33
|
}
|
|
88
34
|
],
|
|
@@ -147,6 +93,7 @@ export const movieForm: IForm = {
|
|
|
147
93
|
valueField: "_id",
|
|
148
94
|
paramsToFilter: ["name"],
|
|
149
95
|
paramType: "query",
|
|
96
|
+
relatedEntity: "MovieGenres"
|
|
150
97
|
},
|
|
151
98
|
isMultiple: true,
|
|
152
99
|
isRequired: true,
|
|
@@ -172,65 +119,6 @@ export const movieForm: IForm = {
|
|
|
172
119
|
},
|
|
173
120
|
],
|
|
174
121
|
},
|
|
175
|
-
{
|
|
176
|
-
id: "episodesTab",
|
|
177
|
-
title: "Episódios",
|
|
178
|
-
elements: [
|
|
179
|
-
{
|
|
180
|
-
type: "array",
|
|
181
|
-
id: "episodes",
|
|
182
|
-
name: "episodes",
|
|
183
|
-
title: "Episódio",
|
|
184
|
-
elements: [
|
|
185
|
-
{
|
|
186
|
-
type: "input",
|
|
187
|
-
dataType: EDataType.TEXT,
|
|
188
|
-
label: "Título do episódio",
|
|
189
|
-
name: "episodeTitle",
|
|
190
|
-
isRequired: true,
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
type: "input",
|
|
194
|
-
dataType: EDataType.WYSIWYG,
|
|
195
|
-
label: "Descrição do episódio",
|
|
196
|
-
name: "episodeDescription",
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
type: "input",
|
|
200
|
-
dataType: EDataType.DATE,
|
|
201
|
-
label: "Data de lançamento do episódio",
|
|
202
|
-
name: "episodeReleaseDate",
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
type: "autocomplete",
|
|
206
|
-
dataType: EDataType.TEXT,
|
|
207
|
-
name: "charactersId",
|
|
208
|
-
label: "Personagens no episódio",
|
|
209
|
-
optionsApi: {
|
|
210
|
-
endpoint: "/characters",
|
|
211
|
-
labelField: ["characterName"],
|
|
212
|
-
valueField: "_id",
|
|
213
|
-
paramsToFilter: ["characterName"],
|
|
214
|
-
paramType: "query",
|
|
215
|
-
relatedEntity: "Character",
|
|
216
|
-
},
|
|
217
|
-
},
|
|
218
|
-
],
|
|
219
|
-
},
|
|
220
|
-
],
|
|
221
|
-
conditions: [
|
|
222
|
-
{
|
|
223
|
-
type: "form",
|
|
224
|
-
elements: [
|
|
225
|
-
{
|
|
226
|
-
key: "movieGenres",
|
|
227
|
-
comparisonOperator: "===",
|
|
228
|
-
value: "Série de TV",
|
|
229
|
-
},
|
|
230
|
-
],
|
|
231
|
-
},
|
|
232
|
-
],
|
|
233
|
-
},
|
|
234
122
|
],
|
|
235
123
|
},
|
|
236
124
|
],
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { EFormContractDataType } from "../../../enums/form-contract.enum";
|
|
2
|
+
import { EDataType } from "../../../enums/form.enum";
|
|
3
|
+
import type { IForm } from "../../../interfaces/form.interface";
|
|
4
|
+
|
|
5
|
+
export const movieEpisodeForm: IForm = {
|
|
6
|
+
title: "Gerenciar episódio",
|
|
7
|
+
componentType: "form",
|
|
8
|
+
id: "movieEpisodeForm",
|
|
9
|
+
contracts: [
|
|
10
|
+
{
|
|
11
|
+
endpoint: "/movies-episodes",
|
|
12
|
+
methods: [{ verb: "PUT" }, { verb: "GET" }, { verb: "DELETE" }, { verb: "POST" }],
|
|
13
|
+
request: {
|
|
14
|
+
entity: "MovieEpisode",
|
|
15
|
+
description: "Represents an episode of a TV series or show.",
|
|
16
|
+
fields: [
|
|
17
|
+
{ name: "_id", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
18
|
+
{ name: "movieId", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
|
|
19
|
+
entity: "Movie",
|
|
20
|
+
connectionAttribute: "_id",
|
|
21
|
+
relationship: "one-to-many"
|
|
22
|
+
} },
|
|
23
|
+
{ name: "title", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
|
|
24
|
+
{ name: "description", dataType: EFormContractDataType.LONGTEXT, isRequired: true },
|
|
25
|
+
{ name: "releaseDate", dataType: EFormContractDataType.DATETIME2, isRequired: true },
|
|
26
|
+
{ name: "characters", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: false, foreignKey: {
|
|
27
|
+
entity: "Character",
|
|
28
|
+
connectionAttribute: "_id",
|
|
29
|
+
relationship: "many-to-many"
|
|
30
|
+
} },
|
|
31
|
+
],
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
elements: [
|
|
36
|
+
{
|
|
37
|
+
type: "array",
|
|
38
|
+
id: "episodes",
|
|
39
|
+
name: "episodes",
|
|
40
|
+
title: "Episódio",
|
|
41
|
+
elements: [
|
|
42
|
+
{
|
|
43
|
+
type: "input",
|
|
44
|
+
dataType: EDataType.TEXT,
|
|
45
|
+
label: "Título do episódio",
|
|
46
|
+
name: "episodeTitle",
|
|
47
|
+
isRequired: true,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: "input",
|
|
51
|
+
dataType: EDataType.WYSIWYG,
|
|
52
|
+
label: "Descrição do episódio",
|
|
53
|
+
name: "episodeDescription",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
type: "input",
|
|
57
|
+
dataType: EDataType.DATE,
|
|
58
|
+
label: "Data de lançamento do episódio",
|
|
59
|
+
name: "episodeReleaseDate",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: "autocomplete",
|
|
63
|
+
dataType: EDataType.TEXT,
|
|
64
|
+
name: "charactersId",
|
|
65
|
+
label: "Personagens no episódio",
|
|
66
|
+
optionsApi: {
|
|
67
|
+
endpoint: "/characters",
|
|
68
|
+
labelField: ["characterName"],
|
|
69
|
+
valueField: "_id",
|
|
70
|
+
paramsToFilter: ["characterName"],
|
|
71
|
+
paramType: "query",
|
|
72
|
+
relatedEntity: "Character",
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
}
|
|
@@ -10,18 +10,24 @@ export const movieGenreForm: IForm = {
|
|
|
10
10
|
{
|
|
11
11
|
endpoint: "/movie-genres",
|
|
12
12
|
methods: [{ verb: "POST" }, { verb: "PUT" }, { verb: "GET" }, { verb: "DELETE" }],
|
|
13
|
-
request: {
|
|
14
|
-
|
|
13
|
+
request : {
|
|
14
|
+
entity: "moviesGenres",
|
|
15
|
+
description: "",
|
|
16
|
+
fields: [
|
|
15
17
|
{
|
|
16
18
|
name: "name",
|
|
17
19
|
dataType: EFormContractDataType.TEXT,
|
|
20
|
+
isRequired: true,
|
|
21
|
+
maxSize: 255,
|
|
18
22
|
},
|
|
19
23
|
{
|
|
20
24
|
name: "description",
|
|
21
|
-
dataType: EFormContractDataType.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
dataType: EFormContractDataType.TEXT,
|
|
26
|
+
isRequired: true,
|
|
27
|
+
maxSize: 255,
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
25
31
|
}
|
|
26
32
|
],
|
|
27
33
|
id: "movieGenreForm",
|
|
@@ -12,48 +12,51 @@ export const personForm: IForm = {
|
|
|
12
12
|
endpoint: "/people",
|
|
13
13
|
methods: [{ verb: "GET" }, { verb: "POST" }, { verb: "PUT" }, { verb: "DELETE" }],
|
|
14
14
|
request: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
{ name: "
|
|
19
|
-
{ name: "
|
|
20
|
-
{ name: "
|
|
21
|
-
{ name: "
|
|
22
|
-
{ name: "
|
|
23
|
-
{ name: "
|
|
24
|
-
{ name: "
|
|
25
|
-
{ name: "
|
|
26
|
-
{ name: "
|
|
27
|
-
{ name: "
|
|
28
|
-
{ name: "
|
|
29
|
-
{ name: "
|
|
30
|
-
{ name: "
|
|
31
|
-
{ name: "
|
|
32
|
-
{ name: "
|
|
33
|
-
{ name: "
|
|
34
|
-
{ name: "
|
|
35
|
-
{ name: "
|
|
36
|
-
{ name: "
|
|
37
|
-
{ name: "
|
|
38
|
-
{ name: "
|
|
39
|
-
{ name: "
|
|
40
|
-
{ name: "
|
|
41
|
-
{ name: "
|
|
42
|
-
{ name: "
|
|
43
|
-
{ name: "
|
|
44
|
-
{ name: "
|
|
45
|
-
{ name: "
|
|
46
|
-
{ name: "
|
|
47
|
-
{ name: "
|
|
48
|
-
{ name: "
|
|
49
|
-
{ name: "
|
|
50
|
-
{ name: "
|
|
51
|
-
{ name: "
|
|
52
|
-
{ name: "
|
|
53
|
-
{ name: "
|
|
54
|
-
{ name: "
|
|
15
|
+
entity: "People",
|
|
16
|
+
description: "Represents an individual person with personal details and contact information.",
|
|
17
|
+
fields: [
|
|
18
|
+
{ name: "_id", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
19
|
+
{ name: "country", dataType: EFormContractDataType.NVARCHAR, isRequired: true, maxSize: 100 },
|
|
20
|
+
{ name: "cpf", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 14 },
|
|
21
|
+
{ name: "passport", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20 },
|
|
22
|
+
{ name: "passportIssueDate", dataType: EFormContractDataType.DATETIME2, isRequired: false },
|
|
23
|
+
{ name: "passportExpiryDate", dataType: EFormContractDataType.DATETIME2, isRequired: false },
|
|
24
|
+
{ name: "name", dataType: EFormContractDataType.NVARCHAR, isRequired: true, maxSize: 200 },
|
|
25
|
+
{ name: "gender", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 10, enum: ["male", "female", "other"] },
|
|
26
|
+
{ name: "birthday", dataType: EFormContractDataType.DATETIME2, isRequired: false },
|
|
27
|
+
{ name: "picture", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
28
|
+
{ name: "phoneOne", dataType: EFormContractDataType.NVARCHAR, isRequired: true, maxSize: 20 },
|
|
29
|
+
{ name: "emailOne", dataType: EFormContractDataType.NVARCHAR, isRequired: true, maxSize: 100 },
|
|
30
|
+
{ name: "addressOneZipCode", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 10 },
|
|
31
|
+
{ name: "addressOneStreet", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
32
|
+
{ name: "addressOneDistrict", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
33
|
+
{ name: "addressOneNumber", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20 },
|
|
34
|
+
{ name: "addressOneComplement", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
35
|
+
{ name: "addressOneCity", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
36
|
+
{ name: "addressOneState", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
37
|
+
{ name: "addressOneLatitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 50 },
|
|
38
|
+
{ name: "addressOneLongitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 50 },
|
|
39
|
+
{ name: "addressTwoZipCode", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 10 },
|
|
40
|
+
{ name: "addressTwoStreet", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
41
|
+
{ name: "addressTwoDistrict", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
42
|
+
{ name: "addressTwoNumber", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20 },
|
|
43
|
+
{ name: "addressTwoComplement", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
44
|
+
{ name: "addressTwoCity", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
45
|
+
{ name: "addressTwoState", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
46
|
+
{ name: "addressTwoLatitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 50 },
|
|
47
|
+
{ name: "addressTwoLongitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 50 },
|
|
48
|
+
{ name: "phoneTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20 },
|
|
49
|
+
{ name: "emailTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
50
|
+
{ name: "siteOne", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
51
|
+
{ name: "siteTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
52
|
+
{ name: "linkedin", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
53
|
+
{ name: "instagram", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
54
|
+
{ name: "facebook", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
55
|
+
{ name: "nickname", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
56
|
+
{ name: "personDescription", dataType: EFormContractDataType.LONGTEXT, isRequired: false },
|
|
57
|
+
{ name: "personMaritalStatus", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20, enum: ["single", "married", "divorced", "widower", "engaged", "stableUnion"] },
|
|
55
58
|
]
|
|
56
|
-
}
|
|
59
|
+
},
|
|
57
60
|
}],
|
|
58
61
|
guards: "isAuthorized",
|
|
59
62
|
elements: [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IBusinessRule } from "./project.interface";
|
|
2
2
|
|
|
3
3
|
export interface IFormCondition {
|
|
4
|
-
type: "form" | "code" | "array";
|
|
4
|
+
type: "form" | "code" | "array" | "button";
|
|
5
5
|
elements?: IConditionElement[];
|
|
6
6
|
code?: IConditionCode;
|
|
7
7
|
businessRules?: IBusinessRule[];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { EFormContractDataType } from "../enums/form-contract.enum";
|
|
2
|
+
import type { EDataType } from "../enums/form.enum";
|
|
2
3
|
import type { IFormArray } from "./form-array.interface";
|
|
3
4
|
import type { IFormAutocomplete } from "./form-autocomplete.interface";
|
|
4
5
|
import type { IFormButton } from "./form-button.interface";
|
|
@@ -22,7 +23,7 @@ export interface IForm {
|
|
|
22
23
|
contracts: {
|
|
23
24
|
endpoint: string;
|
|
24
25
|
methods: { verb: "GET" | "POST" | "PUT" | "DELETE" }[];
|
|
25
|
-
request?:
|
|
26
|
+
request?: IContractRequest;
|
|
26
27
|
}[];
|
|
27
28
|
kanban?: {
|
|
28
29
|
status: "toDo" | "inProgress" | "done";
|
|
@@ -40,6 +41,32 @@ interface IFormContractGeneral {
|
|
|
40
41
|
dataType: EFormContractDataType;
|
|
41
42
|
}
|
|
42
43
|
|
|
44
|
+
interface IContractRequest {
|
|
45
|
+
entity: string,
|
|
46
|
+
description?: string,
|
|
47
|
+
fields: IContractRequestField[]
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface IContractRequestField {
|
|
51
|
+
name: string;
|
|
52
|
+
dataType: EFormContractDataType;
|
|
53
|
+
isRequired?: boolean;
|
|
54
|
+
foreignKey?: IContractRequestFieldForeignKey;
|
|
55
|
+
isPrimaryKey?: boolean;
|
|
56
|
+
minSize?: number;
|
|
57
|
+
maxSize?: number;
|
|
58
|
+
enum?: string[];
|
|
59
|
+
isUnique?: boolean;
|
|
60
|
+
uniqueComposedFields?: string[];
|
|
61
|
+
methodsExceptions?: { verb: "GET" | "POST" | "PUT" | "DELETE" }[];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface IContractRequestFieldForeignKey {
|
|
65
|
+
entity: string;
|
|
66
|
+
connectionAttribute: string;
|
|
67
|
+
relationship: "many-to-many" | "one-to-many" | "one-to-one"
|
|
68
|
+
}
|
|
69
|
+
|
|
43
70
|
interface IFormContractArray {
|
|
44
71
|
name: string;
|
|
45
72
|
dataType: "array";
|
|
@@ -51,16 +51,88 @@
|
|
|
51
51
|
"request": {
|
|
52
52
|
"type": "object",
|
|
53
53
|
"properties": {
|
|
54
|
-
"
|
|
54
|
+
"entity": {
|
|
55
|
+
"type": "string"
|
|
56
|
+
},
|
|
57
|
+
"description": {
|
|
58
|
+
"type": "string"
|
|
59
|
+
},
|
|
60
|
+
"fields": {
|
|
55
61
|
"type": "array",
|
|
56
62
|
"items": {
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
"type": "object",
|
|
64
|
+
"properties": {
|
|
65
|
+
"name": {
|
|
66
|
+
"type": "string"
|
|
67
|
+
},
|
|
68
|
+
"dataType": {
|
|
69
|
+
"$ref": "types-datatype.ref.json"
|
|
70
|
+
},
|
|
71
|
+
"isRequired": {
|
|
72
|
+
"type": "boolean"
|
|
73
|
+
},
|
|
74
|
+
"foreignKey": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"properties": {
|
|
77
|
+
"entity": {
|
|
78
|
+
"type": "string"
|
|
79
|
+
},
|
|
80
|
+
"connectionAttribute": {
|
|
81
|
+
"type": "string"
|
|
82
|
+
},
|
|
83
|
+
"relationship": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"enum": ["one-to-one", "one-to-many", "many-to-many"]
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"required": [
|
|
89
|
+
"entity",
|
|
90
|
+
"connectionAttribute",
|
|
91
|
+
"relationship"
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"isPrimaryKey": {
|
|
95
|
+
"type": "boolean"
|
|
96
|
+
},
|
|
97
|
+
"minSize": {
|
|
98
|
+
"type": "number"
|
|
99
|
+
},
|
|
100
|
+
"maxSize": {
|
|
101
|
+
"type": "number"
|
|
102
|
+
},
|
|
103
|
+
"enum": {
|
|
104
|
+
"type": "array",
|
|
105
|
+
"items": {
|
|
106
|
+
"type": "string"
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"isUnique": {
|
|
110
|
+
"type": "boolean"
|
|
111
|
+
},
|
|
112
|
+
"uniqueComposedFields": {
|
|
113
|
+
"type": "array",
|
|
114
|
+
"items": {
|
|
115
|
+
"type": "string"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"methods": {
|
|
119
|
+
"type": "array",
|
|
120
|
+
"items": {
|
|
121
|
+
"type": "object",
|
|
122
|
+
"properties": {
|
|
123
|
+
"verb": {
|
|
124
|
+
"type": "string",
|
|
125
|
+
"enum": ["GET", "POST", "PUT", "DELETE", "PATCH"]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"required": ["name", "dataType"]
|
|
61
132
|
}
|
|
62
133
|
}
|
|
63
|
-
}
|
|
134
|
+
},
|
|
135
|
+
"required": ["entity", "fields"]
|
|
64
136
|
}
|
|
65
137
|
},
|
|
66
138
|
"required": ["endpoint", "methods"]
|