rapida-partner 1.3.0 → 1.4.1

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.
@@ -27,4 +27,5 @@ export enum EFormContractDataType {
27
27
  DATETIME2 = "datetime2",
28
28
  UNIQUEIDENTIFIER = "uniqueidentifier",
29
29
  BOOLEAN = "boolean",
30
+ ARRAY = "array",
30
31
  }
@@ -1,4 +1,3 @@
1
- import { EFormContractDataType } from "../../../enums/form-contract.enum";
2
1
  import { EDataType } from "../../../enums/form.enum";
3
2
  import type { IForm } from "../../../interfaces/form.interface";
4
3
 
@@ -9,18 +8,19 @@ export const characterForm: IForm = {
9
8
  id: "characterForm",
10
9
  contracts: [
11
10
  {
11
+ id: "characters",
12
12
  endpoint: "/characters",
13
13
  actions: ["create", "get", "getById", "update", "delete"],
14
14
  request: {
15
15
  entity: "Character",
16
16
  description: "Represents a character in a story or narrative.",
17
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 },
18
+ { name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
19
+ { name: "characterName", dataType: EDataType.NVARCHAR, isRequired: true },
20
+ { name: "characterImage", dataType: EDataType.NVARCHAR, isRequired: false },
21
+ { name: "characterDescription", dataType: EDataType.LONGTEXT, isRequired: false },
22
+ { name: "characterType", dataType: EDataType.NVARCHAR, enum: ["protagonist", "antagonist", "hero", "villain", "sidekick", "supporting"], isRequired: false },
23
+ { name: "characterGender", dataType: EDataType.NVARCHAR, enum: ["male", "female", "other"], isRequired: false },
24
24
  ],
25
25
  },
26
26
  }
@@ -1,5 +1,4 @@
1
1
  import { COUNTRIES_FROM_EARTH } from "../../../constants/options/countriesFromEarth";
2
- import { EFormContractDataType } from "../../../enums/form-contract.enum";
3
2
  import { EDataType } from "../../../enums/form.enum";
4
3
  import type { IForm } from "../../../interfaces/form.interface";
5
4
 
@@ -9,55 +8,56 @@ export const companyForm: IForm = {
9
8
  componentType: "form",
10
9
  id: "companyForm",
11
10
  contracts: [{
11
+ id: "companies",
12
12
  endpoint: "/companies",
13
13
  actions: ["create", "get", "getById", "update", "delete"],
14
14
  request: {
15
15
  entity: "Companies",
16
16
  description: "Represents a company or business entity.",
17
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: {
18
+ { name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
19
+ { name: "country", dataType: EDataType.NVARCHAR, isRequired: true },
20
+ { name: "cnpj", dataType: EDataType.NVARCHAR, isRequired: false },
21
+ { name: "name", dataType: EDataType.NVARCHAR, isRequired: true },
22
+ { name: "businessName", dataType: EDataType.NVARCHAR, isRequired: false },
23
+ { name: "birthday", dataType: EDataType.DATE, isRequired: false },
24
+ { name: "legalNature", dataType: EDataType.NVARCHAR, isRequired: false },
25
+ { name: "stateRegistration", dataType: EDataType.NVARCHAR, isRequired: false },
26
+ { name: "municipalRegistration", dataType: EDataType.NVARCHAR, isRequired: false },
27
+ { name: "description", dataType: EDataType.LONGTEXT, isRequired: false },
28
+ { name: "logo", dataType: EDataType.NVARCHAR, isRequired: false },
29
+ { name: "partners", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: false, foreignKey: {
30
30
  entity: "People",
31
31
  connectionAttribute: "_id",
32
32
  relationship: "many-to-many"
33
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 },
34
+ { name: "phoneOne", dataType: EDataType.NVARCHAR, isRequired: true },
35
+ { name: "emailOne", dataType: EDataType.NVARCHAR, isRequired: true },
36
+ { name: "addressOneZipCode", dataType: EDataType.NVARCHAR, isRequired: false },
37
+ { name: "addressOneStreet", dataType: EDataType.NVARCHAR, isRequired: false },
38
+ { name: "addressOneDistrict", dataType: EDataType.NVARCHAR, isRequired: false },
39
+ { name: "addressOneNumber", dataType: EDataType.NVARCHAR, isRequired: false },
40
+ { name: "addressOneComplement", dataType: EDataType.NVARCHAR, isRequired: false },
41
+ { name: "addressOneCity", dataType: EDataType.NVARCHAR, isRequired: false },
42
+ { name: "addressOneState", dataType: EDataType.NVARCHAR, isRequired: false },
43
+ { name: "addressOneLatitude", dataType: EDataType.NVARCHAR, isRequired: false },
44
+ { name: "addressOneLongitude", dataType: EDataType.NVARCHAR, isRequired: false },
45
+ { name: "addressTwoZipCode", dataType: EDataType.NVARCHAR, isRequired: false },
46
+ { name: "addressTwoStreet", dataType: EDataType.NVARCHAR, isRequired: false },
47
+ { name: "addressTwoDistrict", dataType: EDataType.NVARCHAR, isRequired: false },
48
+ { name: "addressTwoNumber", dataType: EDataType.NVARCHAR, isRequired: false },
49
+ { name: "addressTwoComplement", dataType: EDataType.NVARCHAR, isRequired: false },
50
+ { name: "addressTwoCity", dataType: EDataType.NVARCHAR, isRequired: false },
51
+ { name: "addressTwoState", dataType: EDataType.NVARCHAR, isRequired: false },
52
+ { name: "addressTwoLatitude", dataType: EDataType.NVARCHAR, isRequired: false },
53
+ { name: "addressTwoLongitude", dataType: EDataType.NVARCHAR, isRequired: false },
54
+ { name: "phoneTwo", dataType: EDataType.NVARCHAR, isRequired: false },
55
+ { name: "emailTwo", dataType: EDataType.NVARCHAR, isRequired: false },
56
+ { name: "siteOne", dataType: EDataType.NVARCHAR, isRequired: false },
57
+ { name: "siteTwo", dataType: EDataType.NVARCHAR, isRequired: false },
58
+ { name: "linkedin", dataType: EDataType.NVARCHAR, isRequired: false },
59
+ { name: "instagram", dataType: EDataType.NVARCHAR, isRequired: false },
60
+ { name: "facebook", dataType: EDataType.NVARCHAR, isRequired: false },
61
61
  ]
62
62
  }
63
63
  }],
@@ -1,4 +1,3 @@
1
- import { EFormContractDataType } from "../../../enums/form-contract.enum";
2
1
  import { EDataType } from "../../../enums/form.enum";
3
2
  import type { IForm } from "../../../interfaces/form.interface";
4
3
  import { companyForm } from "./company.form";
@@ -10,16 +9,20 @@ export const customerForm: IForm = {
10
9
  componentType: "form",
11
10
  contracts: [
12
11
  {
12
+ id: "customerPeople",
13
13
  endpoint: "/customers/people",
14
14
  actions: ["create", "update", "get", "getById", "delete"],
15
15
  request: {
16
16
  entity: "Customers",
17
- relatedEntity: "People",
18
- fields: [
19
- ...(personForm.contracts[0].request?.fields || []),
20
- { name: "entityId", dataType: EFormContractDataType.UNIQUEIDENTIFIER },
21
- { name: "entityRelated", dataType: EFormContractDataType.NVARCHAR }
22
- ]
17
+ relatedEntity: {
18
+ entity: "People", // adiciona campo chamado relatedEntity amaarrado ao valor
19
+ connectionAttribute: "_id", // vai criar um campo chamado relatedEntityId
20
+ fieldsFromEntity: [{
21
+ fields: personForm,
22
+ contractId: "people",
23
+ }]
24
+ },
25
+ fields: []
23
26
  },
24
27
  conditions: [
25
28
  {
@@ -35,15 +38,24 @@ export const customerForm: IForm = {
35
38
  ]
36
39
  },
37
40
  {
41
+ id: "customerCompanies",
38
42
  endpoint: "/customers/companies",
39
43
  actions: ["create", "update", "get", "getById", "delete"],
40
44
  request: {
41
45
  entity: "Customers",
42
- relatedEntity: "Companies",
46
+ relatedEntity: {
47
+ entity: "Companies",
48
+ connectionAttribute: "_id",
49
+ fieldsFromEntity: [
50
+ {
51
+ fields: companyForm,
52
+ contractId: "companies"
53
+ }
54
+ ]
55
+ },
43
56
  fields: [
44
- ...(companyForm.contracts[0].request?.fields || []),
45
- { name: "entityId", dataType: EFormContractDataType.UNIQUEIDENTIFIER },
46
- { name: "entityRelated", dataType: EFormContractDataType.NVARCHAR }
57
+ { name: "entityId", dataType: EDataType.UNIQUEIDENTIFIER },
58
+ { name: "entityRelated", dataType: EDataType.NVARCHAR }
47
59
  ]
48
60
  },
49
61
  conditions: [
@@ -1,4 +1,3 @@
1
- import { EFormContractDataType } from "../../../enums/form-contract.enum";
2
1
  import { EDataType } from "../../../enums/form.enum";
3
2
  import type { IForm } from "../../../interfaces/form.interface";
4
3
 
@@ -8,26 +7,27 @@ export const movieForm: IForm = {
8
7
  componentType: "form",
9
8
  contracts: [
10
9
  {
10
+ id: "movies",
11
11
  endpoint: "/movies",
12
12
  actions: ["create", "update", "getById", "get", "delete"],
13
13
  request: {
14
14
  entity: "Movie",
15
15
  description: "Represents a movie or TV series in the system.",
16
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: {
17
+ { name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
18
+ { name: "pictureFile", dataType: EDataType.NVARCHAR, isRequired: false },
19
+ { name: "name", dataType: EDataType.NVARCHAR, isRequired: true },
20
+ { name: "description", dataType: EDataType.LONGTEXT, isRequired: true },
21
+ { name: "releaseDate", dataType: EDataType.DATE, isRequired: true },
22
+ { name: "imdbRating", dataType: EDataType.DECIMAL, isRequired: true },
23
+ { name: "movieGenres", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
24
24
  entity: "MovieGenre",
25
25
  connectionAttribute: "_id",
26
26
  relationship: "many-to-many"
27
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 },
28
+ { name: "link1", dataType: EDataType.NVARCHAR, isRequired: true },
29
+ { name: "link2", dataType: EDataType.NVARCHAR, isRequired: false },
30
+ { name: "link3", dataType: EDataType.NVARCHAR, isRequired: false },
31
31
  ],
32
32
  }
33
33
  }
@@ -1,4 +1,3 @@
1
- import { EFormContractDataType } from "../../../enums/form-contract.enum";
2
1
  import { EDataType } from "../../../enums/form.enum";
3
2
  import type { IForm } from "../../../interfaces/form.interface";
4
3
 
@@ -8,22 +7,23 @@ export const movieEpisodeForm: IForm = {
8
7
  id: "movieEpisodeForm",
9
8
  contracts: [
10
9
  {
10
+ id: "moviesEpisodes",
11
11
  endpoint: "/movies-episodes",
12
12
  actions: ["create", "get", "getById", "update", "delete"],
13
13
  request: {
14
14
  entity: "MovieEpisode",
15
15
  description: "Represents an episode of a TV series or show.",
16
16
  fields: [
17
- { name: "_id", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
18
- { name: "movieId", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
17
+ { name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
18
+ { name: "movieId", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
19
19
  entity: "Movie",
20
20
  connectionAttribute: "_id",
21
21
  relationship: "one-to-many"
22
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: {
23
+ { name: "title", dataType: EDataType.NVARCHAR, isRequired: true },
24
+ { name: "description", dataType: EDataType.LONGTEXT, isRequired: true },
25
+ { name: "releaseDate", dataType: EDataType.DATETIME2, isRequired: true },
26
+ { name: "characters", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: false, foreignKey: {
27
27
  entity: "Character",
28
28
  connectionAttribute: "_id",
29
29
  relationship: "many-to-many"
@@ -1,4 +1,3 @@
1
- import { EFormContractDataType } from "../../../enums/form-contract.enum";
2
1
  import { EDataType } from "../../../enums/form.enum";
3
2
  import type { IForm } from "../../../interfaces/form.interface";
4
3
 
@@ -8,6 +7,7 @@ export const movieGenreForm: IForm = {
8
7
  componentType: "form",
9
8
  contracts: [
10
9
  {
10
+ id: "moviesGenres",
11
11
  endpoint: "/movie-genres",
12
12
  actions: ["create", "get", "getById", "update", "delete"],
13
13
  request : {
@@ -16,13 +16,13 @@ export const movieGenreForm: IForm = {
16
16
  fields: [
17
17
  {
18
18
  name: "name",
19
- dataType: EFormContractDataType.TEXT,
19
+ dataType: EDataType.TEXT,
20
20
  isRequired: true,
21
21
  maxSize: 255,
22
22
  },
23
23
  {
24
24
  name: "description",
25
- dataType: EFormContractDataType.TEXT,
25
+ dataType: EDataType.TEXT,
26
26
  isRequired: true,
27
27
  maxSize: 255,
28
28
  }
@@ -1,5 +1,4 @@
1
1
  import { COUNTRIES_FROM_EARTH } from "../../../constants/options/countriesFromEarth";
2
- import { EFormContractDataType } from "../../../enums/form-contract.enum";
3
2
  import { EDataType } from "../../../enums/form.enum";
4
3
  import type { IForm } from "../../../interfaces/form.interface";
5
4
 
@@ -9,52 +8,53 @@ export const personForm: IForm = {
9
8
  componentType: "form",
10
9
  id: "personForm",
11
10
  contracts: [{
11
+ id: "people",
12
12
  endpoint: "/people",
13
13
  actions: ["create", "get", "getById", "update", "delete"],
14
14
  request: {
15
15
  entity: "People",
16
16
  description: "Represents an individual person with personal details and contact information.",
17
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"] },
18
+ { name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
19
+ { name: "country", dataType: EDataType.NVARCHAR, isRequired: true, maxSize: 100 },
20
+ { name: "cpf", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 14 },
21
+ { name: "passport", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20 },
22
+ { name: "passportIssueDate", dataType: EDataType.DATETIME2, isRequired: false },
23
+ { name: "passportExpiryDate", dataType: EDataType.DATETIME2, isRequired: false },
24
+ { name: "name", dataType: EDataType.NVARCHAR, isRequired: true, maxSize: 200 },
25
+ { name: "gender", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 10, enum: ["male", "female", "other"] },
26
+ { name: "birthday", dataType: EDataType.DATETIME2, isRequired: false },
27
+ { name: "picture", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
28
+ { name: "phoneOne", dataType: EDataType.NVARCHAR, isRequired: true, maxSize: 20 },
29
+ { name: "emailOne", dataType: EDataType.NVARCHAR, isRequired: true, maxSize: 100 },
30
+ { name: "addressOneZipCode", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 10 },
31
+ { name: "addressOneStreet", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
32
+ { name: "addressOneDistrict", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
33
+ { name: "addressOneNumber", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20 },
34
+ { name: "addressOneComplement", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
35
+ { name: "addressOneCity", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
36
+ { name: "addressOneState", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
37
+ { name: "addressOneLatitude", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 50 },
38
+ { name: "addressOneLongitude", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 50 },
39
+ { name: "addressTwoZipCode", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 10 },
40
+ { name: "addressTwoStreet", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
41
+ { name: "addressTwoDistrict", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
42
+ { name: "addressTwoNumber", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20 },
43
+ { name: "addressTwoComplement", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
44
+ { name: "addressTwoCity", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
45
+ { name: "addressTwoState", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
46
+ { name: "addressTwoLatitude", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 50 },
47
+ { name: "addressTwoLongitude", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 50 },
48
+ { name: "phoneTwo", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20 },
49
+ { name: "emailTwo", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
50
+ { name: "siteOne", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
51
+ { name: "siteTwo", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
52
+ { name: "linkedin", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
53
+ { name: "instagram", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
54
+ { name: "facebook", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
55
+ { name: "nickname", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
56
+ { name: "personDescription", dataType: EDataType.LONGTEXT, isRequired: false },
57
+ { name: "personMaritalStatus", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20, enum: ["single", "married", "divorced", "widower", "engaged", "stableUnion"] },
58
58
  ]
59
59
  },
60
60
  }],
@@ -23,10 +23,13 @@ export interface IForm {
23
23
  businessRules?: IBusinessRule[];
24
24
  userStory?: string;
25
25
  contracts: {
26
+ id: string;
26
27
  endpoint: string;
27
28
  actions: ("create" | "get" | "getById" | "update" | "delete" | "clone")[];
28
29
  request?: IContractRequest;
29
30
  conditions?: IFormCondition[];
31
+ businessRules?: IBusinessRule[];
32
+ userStory?: string;
30
33
  }[];
31
34
  kanban?: {
32
35
  status: "toDo" | "inProgress" | "done";
@@ -39,21 +42,28 @@ export interface IForm {
39
42
  }
40
43
  }
41
44
 
42
- interface IFormContractGeneral {
43
- name: string;
44
- dataType: EFormContractDataType;
45
- }
45
+ // interface IFormContractGeneral {
46
+ // name: string;
47
+ // dataType: EFormContractDataType;
48
+ // }
46
49
 
47
50
  interface IContractRequest {
48
51
  entity: string,
49
- relatedEntity?: string,
52
+ relatedEntity?: {
53
+ entity: string;
54
+ connectionAttribute: string;
55
+ fieldsFromEntity: {
56
+ fields: IForm;
57
+ contractId: string;
58
+ }[]
59
+ },
50
60
  description?: string,
51
61
  fields: IContractRequestField[]
52
62
  }
53
63
 
54
64
  interface IContractRequestField {
55
65
  name: string;
56
- dataType: EFormContractDataType;
66
+ dataType: EDataType;
57
67
  isRequired?: boolean;
58
68
  foreignKey?: IContractRequestFieldForeignKey;
59
69
  isPrimaryKey?: boolean;
@@ -71,15 +81,15 @@ interface IContractRequestFieldForeignKey {
71
81
  relationship: "many-to-many" | "one-to-many" | "one-to-one"
72
82
  }
73
83
 
74
- interface IFormContractArray {
75
- name: string;
76
- dataType: "array";
77
- elements: (IFormContractGeneral | IFormContractArray)[];
78
- }
84
+ // interface IFormContractArray {
85
+ // name: string;
86
+ // dataType: "array";
87
+ // elements: (IFormContractGeneral | IFormContractArray)[];
88
+ // }
79
89
 
80
- export interface IApiRequest {
81
- body?: (IFormContractGeneral | IFormContractArray)[];
82
- }
90
+ // export interface IApiRequest {
91
+ // body?: (IFormContractGeneral | IFormContractArray)[];
92
+ // }
83
93
 
84
94
  export type IFormElement =
85
95
  | IFormInput
@@ -33,6 +33,9 @@
33
33
  "items": {
34
34
  "type": "object",
35
35
  "properties": {
36
+ "id": {
37
+ "type": "string"
38
+ },
36
39
  "endpoint": {
37
40
  "type": "string"
38
41
  },
@@ -120,15 +123,48 @@
120
123
  },
121
124
  "required": ["name", "dataType"]
122
125
  }
126
+ },
127
+ "relatedEntity": {
128
+ "type": "object",
129
+ "properties": {
130
+ "entity": {
131
+ "type": "string"
132
+ },
133
+ "connectionAttribute": {
134
+ "type": "string"
135
+ },
136
+ "fieldsFromEntity": {
137
+ "type": "array",
138
+ "items": {
139
+ "type": "object",
140
+ "properties": {
141
+ "fields": {
142
+ "$ref": "form.ref.json"
143
+ },
144
+ "contractId":{
145
+ "type": "string"
146
+ }
147
+ }
148
+ },
149
+ "required": ["fields", "contractId"]
150
+ }
151
+ },
152
+ "required": ["entity", "connectionAttribute", "fieldsFromEntity"]
123
153
  }
124
154
  },
125
155
  "required": ["entity", "fields"]
126
156
  },
127
157
  "conditions": {
128
158
  "$ref": "condition.ref.json"
159
+ },
160
+ "businessRules": {
161
+ "$ref": "business-rules.ref.json"
162
+ },
163
+ "userStory": {
164
+ "type": "string"
129
165
  }
130
166
  },
131
- "required": ["endpoint", "actions"]
167
+ "required": ["id", "endpoint", "actions"]
132
168
  }
133
169
  },
134
170
  "kanban": {