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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rapida-partner",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "main": "dist/index.js",
5
5
  "module": "index.ts",
6
6
  "files": [
@@ -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
- body: [
16
- {
17
- name: "characterName",
18
- dataType: EFormContractDataType.TEXT,
19
- },
20
- {
21
- name: "characterImage",
22
- dataType: EFormContractDataType.TEXT,
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
- body: [
16
- {name: "country", dataType: EFormContractDataType.TEXT },
17
- {name: "cnpj", dataType: EFormContractDataType.TEXT },
18
- {name: "name", dataType: EFormContractDataType.TEXT },
19
- {name: "businessName", dataType: EFormContractDataType.TEXT },
20
- {name: "birthday", dataType: EFormContractDataType.DATE },
21
- {name: "legalNature", dataType: EFormContractDataType.TEXT },
22
- {name: "stateRegistration", dataType: EFormContractDataType.TEXT },
23
- {name: "municipalRegistration", dataType: EFormContractDataType.TEXT },
24
- {name: "description", dataType: EFormContractDataType.TEXT },
25
- {name: "logo", dataType: EFormContractDataType.TEXT },
26
- {name: "partners", dataType: "array", elements: [
27
- {
28
- name: "partnerId",
29
- dataType: EFormContractDataType.TEXT,
30
- },
31
- ]},
32
- {name: "phoneOne", dataType: EFormContractDataType.TEXT },
33
- {name: "emailOne", dataType: EFormContractDataType.TEXT },
34
- {name: "addressOneZipCode", dataType: EFormContractDataType.TEXT },
35
- {name: "addressOneStreet", dataType: EFormContractDataType.TEXT },
36
- {name: "addressOneDistrict", dataType: EFormContractDataType.TEXT },
37
- {name: "addressOneNumber", dataType: EFormContractDataType.TEXT },
38
- {name: "addressOneComplement", dataType: EFormContractDataType.TEXT },
39
- {name: "addressOneCity", dataType: EFormContractDataType.TEXT },
40
- {name: "addressOneState", dataType: EFormContractDataType.TEXT },
41
- {name: "addressOneLatitude", dataType: EFormContractDataType.TEXT },
42
- {name: "addressOneLongitude", dataType: EFormContractDataType.TEXT },
43
- {name: "addressTwoZipCode", dataType: EFormContractDataType.TEXT },
44
- {name: "addressTwoStreet", dataType: EFormContractDataType.TEXT },
45
- {name: "addressTwoDistrict", dataType: EFormContractDataType.TEXT },
46
- {name: "addressTwoNumber", dataType: EFormContractDataType.TEXT },
47
- {name: "addressTwoComplement", dataType: EFormContractDataType.TEXT },
48
- {name: "addressTwoCity", dataType: EFormContractDataType.TEXT },
49
- {name: "addressTwoState", dataType: EFormContractDataType.TEXT },
50
- {name: "addressTwoLatitude", dataType: EFormContractDataType.TEXT },
51
- {name: "addressTwoLongitude", dataType: EFormContractDataType.TEXT },
52
- {name: "phoneTwo", dataType: EFormContractDataType.TEXT },
53
- {name: "emailTwo", dataType: EFormContractDataType.TEXT },
54
- {name: "siteOne", dataType: EFormContractDataType.TEXT },
55
- {name: "siteTwo", dataType: EFormContractDataType.TEXT },
56
- {name: "linkedin", dataType: EFormContractDataType.TEXT },
57
- {name: "instagram", dataType: EFormContractDataType.TEXT },
58
- {name: "facebook", dataType: EFormContractDataType.TEXT },
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
- body: [
15
- {
16
- name: "pictureFile",
17
- dataType: EFormContractDataType.TEXT,
18
- },
19
- {
20
- name: "name",
21
- dataType: EFormContractDataType.TEXT,
22
- },
23
- {
24
- name: "description",
25
- dataType: EFormContractDataType.WYSIWYG,
26
- },
27
- {
28
- name: "releaseDate",
29
- dataType: EFormContractDataType.DATE,
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
- body: [
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.WYSIWYG,
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
- body: [
16
- { name: "country", dataType: EFormContractDataType.TEXT },
17
- { name: "cpf", dataType: EFormContractDataType.TEXT },
18
- { name: "passport", dataType: EFormContractDataType.TEXT },
19
- { name: "passportIssueDate", dataType: EFormContractDataType.DATE },
20
- { name: "passportExpiryDate", dataType: EFormContractDataType.DATE },
21
- { name: "name", dataType: EFormContractDataType.TEXT },
22
- { name: "gender", dataType: EFormContractDataType.TEXT },
23
- { name: "birthday", dataType: EFormContractDataType.DATE },
24
- { name: "picture", dataType: EFormContractDataType.TEXT },
25
- { name: "phoneOne", dataType: EFormContractDataType.TEXT },
26
- { name: "emailOne", dataType: EFormContractDataType.EMAIL },
27
- { name: "addressOneZipCode", dataType: EFormContractDataType.TEXT },
28
- { name: "addressOneStreet", dataType: EFormContractDataType.TEXT },
29
- { name: "addressOneDistrict", dataType: EFormContractDataType.TEXT },
30
- { name: "addressOneNumber", dataType: EFormContractDataType.TEXT },
31
- { name: "addressOneComplement", dataType: EFormContractDataType.TEXT },
32
- { name: "addressOneCity", dataType: EFormContractDataType.TEXT },
33
- { name: "addressOneState", dataType: EFormContractDataType.TEXT },
34
- { name: "addressOneLatitude", dataType: EFormContractDataType.TEXT },
35
- { name: "addressOneLongitude", dataType: EFormContractDataType.TEXT },
36
- { name: "addressTwoZipCode", dataType: EFormContractDataType.TEXT },
37
- { name: "addressTwoStreet", dataType: EFormContractDataType.TEXT },
38
- { name: "addressTwoDistrict", dataType: EFormContractDataType.TEXT },
39
- { name: "addressTwoNumber", dataType: EFormContractDataType.TEXT },
40
- { name: "addressTwoComplement", dataType: EFormContractDataType.TEXT },
41
- { name: "addressTwoCity", dataType: EFormContractDataType.TEXT },
42
- { name: "addressTwoState", dataType: EFormContractDataType.TEXT },
43
- { name: "addressTwoLatitude", dataType: EFormContractDataType.TEXT },
44
- { name: "addressTwoLongitude", dataType: EFormContractDataType.TEXT },
45
- { name: "phoneTwo", dataType: EFormContractDataType.TEXT },
46
- { name: "emailTwo", dataType: EFormContractDataType.EMAIL },
47
- { name: "siteOne", dataType: EFormContractDataType.TEXT },
48
- { name: "siteTwo", dataType: EFormContractDataType.TEXT },
49
- { name: "linkedin", dataType: EFormContractDataType.TEXT },
50
- { name: "instagram", dataType: EFormContractDataType.TEXT },
51
- { name: "facebook", dataType: EFormContractDataType.TEXT },
52
- { name: "nickname", dataType: EFormContractDataType.TEXT },
53
- { name: "personDescription", dataType: EFormContractDataType.WYSIWYG },
54
- { name: "personMaritalStatus", dataType: EFormContractDataType.TEXT },
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?: IApiRequest;
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
- "body": {
54
+ "entity": {
55
+ "type": "string"
56
+ },
57
+ "description": {
58
+ "type": "string"
59
+ },
60
+ "fields": {
55
61
  "type": "array",
56
62
  "items": {
57
- "oneOf": [
58
- { "$ref": "form-contract-request.ref.json" },
59
- { "$ref": "form-contract-request-array.ref.json" }
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"]