mandarina-server 1.3.3 → 1.3.4

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.
Files changed (37) hide show
  1. package/build/Action/CustomAction.d.ts +1 -1
  2. package/build/Action/CustomAction.js +8 -4
  3. package/build/Action/CustomAction.js.map +1 -1
  4. package/build/Prisma2/Prisma2.d.ts +0 -0
  5. package/build/Prisma2/Prisma2.js +1 -0
  6. package/build/Prisma2/Prisma2.js.map +1 -0
  7. package/build/Table/Table.d.ts +2 -2
  8. package/build/Table/Table.js +16 -2
  9. package/build/Table/Table.js.map +1 -1
  10. package/build/cli/gen-files/genFilesUtils.d.ts +7 -5
  11. package/build/cli/gen-files/prisma2.d.ts +1 -0
  12. package/build/cli/gen-files/prisma2.js +220 -0
  13. package/build/cli/gen-files/prisma2.js.map +1 -0
  14. package/build/cli/index.js +5 -0
  15. package/build/cli/index.js.map +1 -1
  16. package/build/cli/utils.d.ts +1 -0
  17. package/build/cli/utils.js.map +1 -1
  18. package/package.json +1 -1
  19. package/src/Action/CustomAction.js +108 -0
  20. package/src/Action/CustomAction.js.map +1 -0
  21. package/src/Action/CustomAction.ts +8 -4
  22. package/src/Errors/TableInstanceNotFound.js +28 -0
  23. package/src/Errors/TableInstanceNotFound.js.map +1 -0
  24. package/src/Errors/UniqueActionError.js +31 -0
  25. package/src/Errors/UniqueActionError.js.map +1 -0
  26. package/src/Mandarina.js +58 -0
  27. package/src/Mandarina.js.map +1 -0
  28. package/src/Prisma2/Prisma2.ts +0 -0
  29. package/src/Table/Table.js.map +1 -0
  30. package/src/Table/Table.ts +12 -2
  31. package/src/cli/gen-files/prisma2.ts +220 -0
  32. package/src/cli/index.ts +24 -18
  33. package/src/cli/utils.js +91 -0
  34. package/src/cli/utils.js.map +1 -0
  35. package/src/cli/utils.ts +1 -0
  36. package/src/index.js +16 -0
  37. package/src/index.js.map +1 -0
@@ -59,17 +59,21 @@ export class CustomAction {
59
59
 
60
60
  Object.keys(actions).forEach((action) => {
61
61
  result[action] = async (_: any, args: any, context: any, info: any): Promise<any> => {
62
- //todo: check permissions
63
62
  const user = await Mandarina.config.getUser(context)
64
63
  const roles=(user && user.roles ) || []
65
64
  if (roles.includes('nobody')){
66
65
  throw new Error('Action not allowed')
67
66
  }
68
67
  const permissions: string[]= actions[action].permission || []
69
- if (roles.includes('everybody') || permissions.some(permission=>roles.includes(permission))){
70
- return await actions[action].action(_, args, context, info)
68
+ if (permissions.includes('everybody') || permissions.some(permission=>roles.includes(permission))){
69
+ console.log('***************111***************')
70
+ console.warn(user && user.id,action)
71
+ console.warn(user && user.roles,permissions)
72
+ console.log('***************222***************')
73
+
74
+ // return await actions[action].action(_, args, context, info)
71
75
  }
72
- throw new Error('Action not allowed for this user')
76
+ throw new Error(`Action "${action}" not allowed for this user`)
73
77
  };
74
78
  });
75
79
 
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ var __importDefault = (this && this.__importDefault) || function (mod) {
16
+ return (mod && mod.__esModule) ? mod : { "default": mod };
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ var BaseError_1 = __importDefault(require("mandarina/build/Errors/BaseError"));
20
+ var TableInstanceNotFound = /** @class */ (function (_super) {
21
+ __extends(TableInstanceNotFound, _super);
22
+ function TableInstanceNotFound(schemaName) {
23
+ return _super.call(this, "The table " + schemaName + " was not instantiated") || this;
24
+ }
25
+ return TableInstanceNotFound;
26
+ }(BaseError_1.default));
27
+ exports.TableInstanceNotFound = TableInstanceNotFound;
28
+ //# sourceMappingURL=TableInstanceNotFound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableInstanceNotFound.js","sourceRoot":"","sources":["TableInstanceNotFound.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,+EAAyD;AAEzD;IAA2C,yCAAS;IACnD,+BAAY,UAAkB;eAC7B,kBAAM,eAAa,UAAU,0BAAuB,CAAC;IACtD,CAAC;IACF,4BAAC;AAAD,CAAC,AAJD,CAA2C,mBAAS,GAInD;AAJY,sDAAqB"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ var __importDefault = (this && this.__importDefault) || function (mod) {
16
+ return (mod && mod.__esModule) ? mod : { "default": mod };
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ var BaseError_1 = __importDefault(require("mandarina/build/Errors/BaseError"));
20
+ var UniqueActionError = /** @class */ (function (_super) {
21
+ __extends(UniqueActionError, _super);
22
+ function UniqueActionError(schemaName) {
23
+ var _this = this;
24
+ var name = typeof schemaName === "string" ? schemaName : schemaName.name;
25
+ _this = _super.call(this, "The action \"" + name + "\" already exists, action name should be unique.") || this;
26
+ return _this;
27
+ }
28
+ return UniqueActionError;
29
+ }(BaseError_1.default));
30
+ exports.UniqueActionError = UniqueActionError;
31
+ //# sourceMappingURL=UniqueActionError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniqueActionError.js","sourceRoot":"","sources":["UniqueActionError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,+EAAyD;AAGzD;IAAuC,qCAAS;IAC/C,2BAAY,UAA2B;QAAvC,iBAGC;QAFA,IAAM,IAAI,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAA;QAC1E,QAAA,kBAAM,kBAAe,IAAI,qDAAiD,CAAC,SAAC;;IAC7E,CAAC;IACF,wBAAC;AAAD,CAAC,AALD,CAAuC,mBAAS,GAK/C;AALY,8CAAiB"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ var Table_1 = require("./Table/Table");
15
+ var CustomAction_1 = require("./Action/CustomAction");
16
+ var utils_1 = require("./cli/utils");
17
+ var Mandarina = /** @class */ (function () {
18
+ function Mandarina() {
19
+ }
20
+ Mandarina.load = function () {
21
+ var config = utils_1.getConfig();
22
+ utils_1.loadSchemas(config.dir);
23
+ };
24
+ Mandarina.getQuery = function () {
25
+ var Query = {};
26
+ for (var tableName in Table_1.Table.instances) {
27
+ var table = Table_1.Table.getInstance(tableName);
28
+ Query = __assign(__assign({}, Query), table.getDefaultActions('query'));
29
+ }
30
+ return Query;
31
+ };
32
+ Mandarina.getMutation = function () {
33
+ var Mutation = {};
34
+ for (var tableName in Table_1.Table.instances) {
35
+ var table = Table_1.Table.getInstance(tableName);
36
+ Mutation = __assign(__assign({}, Mutation), table.getDefaultActions('mutation'));
37
+ }
38
+ for (var actionName in CustomAction_1.CustomAction.instances) {
39
+ var action = CustomAction_1.CustomAction.getInstance(actionName);
40
+ Mutation = __assign(__assign({}, Mutation), action.getActions());
41
+ }
42
+ return Mutation;
43
+ };
44
+ Mandarina.config = {
45
+ getUser: function (_a) {
46
+ var user = _a.user;
47
+ return user;
48
+ },
49
+ };
50
+ Mandarina.configure = function (options) {
51
+ if (options.getUser) {
52
+ Mandarina.config.getUser = options.getUser;
53
+ }
54
+ };
55
+ return Mandarina;
56
+ }());
57
+ exports.default = Mandarina;
58
+ //# sourceMappingURL=Mandarina.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mandarina.js","sourceRoot":"","sources":["Mandarina.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,uCAA6C;AAC7C,sDAAmD;AACnD,qCAAmD;AAGnD;IAAA;IAsCA,CAAC;IArCU,cAAI,GAAX;QACI,IAAM,MAAM,GAAC,iBAAS,EAAE,CAAA;QACxB,mBAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAaM,kBAAQ,GAAf;QACI,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,KAAK,IAAM,SAAS,IAAI,aAAK,CAAC,SAAS,EAAE;YACrC,IAAM,KAAK,GAAG,aAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAC1C,KAAK,yBAAO,KAAK,GAAK,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;SAC1D;QACD,OAAO,KAAK,CAAA;IAChB,CAAC;IAEM,qBAAW,GAAlB;QACI,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,KAAK,IAAM,SAAS,IAAI,aAAK,CAAC,SAAS,EAAE;YACrC,IAAM,KAAK,GAAG,aAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAC1C,QAAQ,yBAAO,QAAQ,GAAK,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAA;SACnE;QACD,KAAK,IAAM,UAAU,IAAI,2BAAY,CAAC,SAAS,EAAE;YAC7C,IAAM,MAAM,GAAG,2BAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;YACnD,QAAQ,yBAAO,QAAQ,GAAK,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;SACnD;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IA/BM,gBAAM,GAA2B;QACpC,OAAO,EAAE,UAAC,EAAM;gBAAL,cAAI;YAAM,OAAA,IAAI;QAAJ,CAAI;KAE5B,CAAA;IAEM,mBAAS,GAAG,UAAC,OAA+B;QAC/C,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;SAC9C;IACL,CAAC,CAAA;IAuBL,gBAAC;CAAA,AAtCD,IAsCC;kBAtCoB,SAAS"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["Table.ts"],"names":[],"mappings":"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"}
@@ -151,7 +151,7 @@ export class Table {
151
151
  if (data.errors){
152
152
  console.error(data.errors)
153
153
  }
154
- result = data.data[info.path.key]
154
+ result =Object.values(data.data)[0]
155
155
  context.result = result
156
156
  await this.callHook(this.name, <HookName>`after${capitalizedAction}`, _, args, context, query);
157
157
  this.schema.validateQuery(fields, user && user.roles || []);
@@ -174,7 +174,7 @@ export class Table {
174
174
  if (data.errors){
175
175
  console.error(data.errors)
176
176
  }
177
- result = data.data[info.path.key]
177
+ result = Object.values(data.data)[0]
178
178
  if (operationName===this.schema.names.query.single){
179
179
  result = data.data[this.schema.names.query.plural]
180
180
  result=result && result.length===1 ? result[0] : null
@@ -193,8 +193,18 @@ export class Table {
193
193
  const field: string[] = []
194
194
  const fields = new Set<string>()
195
195
  let required = false
196
+ const allowedVariables=info.fieldNodes[0]?.arguments?.map(({name:{value}})=>value) || []
197
+ console.log(allowedVariables)
196
198
  const query = visit(info.operation, {
197
199
  enter: (node, key, parent, path, ancestors) => {
200
+ if (node.kind==='VariableDefinition'){
201
+ if (!allowedVariables.includes(node?.variable.name.value)){
202
+ return null
203
+ }
204
+ }
205
+ if (node.kind === 'Field' && ancestors.length===2 && node!==info.fieldNodes[0]){
206
+ return null
207
+ }
198
208
  if (node.kind === 'Field' && node.name.value !== '__typename') {
199
209
  field.push(node.name.value)
200
210
  const internalField = field.slice(1).join('.')
@@ -0,0 +1,220 @@
1
+ import {getConfig, loadSchemas} from "../utils";
2
+ import {createDir, resetDir} from "./genFilesUtils";
3
+ import {Table} from "../..";
4
+ import {Schema} from "mandarina";
5
+ import {capitalize, isRequired} from "mandarina/build/Schema/utils";
6
+ import path from "path";
7
+ import fs from "fs";
8
+ import {FieldDefinition} from "mandarina/build/Schema/Schema";
9
+
10
+
11
+ const prisma2Models: { [schemaName: string]: { [fieldName: string]: string } } = {}
12
+ const proccesed: string[] = []
13
+ let c = 0
14
+ export const genFile = () => {
15
+ const config = getConfig()
16
+ loadSchemas(config.dir)
17
+ createDir(config.dir.prisma2)
18
+ resetDir(config.dir.prisma2)
19
+ for (const schemaName in Table.instances) {
20
+ const schema = Schema.getInstance(schemaName)
21
+ getPrisma2Model(schema)
22
+ }
23
+ let prisma = `generator client {
24
+ provider = "prisma-client-js"
25
+ }
26
+
27
+ datasource db {
28
+ provider = "postgresql"
29
+ url = env("DATABASE_URL")
30
+ }
31
+ `
32
+ Object.keys(prisma2Models).forEach(modelName => {
33
+ const model = prisma2Models[modelName]
34
+ prisma += `model ${modelName} {\n `
35
+ Object.keys(model).forEach(fieldName => {
36
+ const field = model[fieldName]
37
+ prisma += `\t${fieldName} ${field}\n`
38
+ })
39
+ prisma += `}\n\n`
40
+ })
41
+ const prismaDir = path.join(process.cwd(), config.dir.prisma2,)
42
+ const fileAbs = `${prismaDir}/schema.prisma`;
43
+ fs.writeFileSync(fileAbs, prisma);
44
+ }
45
+
46
+ function getRelationName(parentDef: FieldDefinition) {
47
+ if (!parentDef.table.relation) return ''
48
+ if (typeof parentDef.table.relation === 'string') {
49
+ return parentDef.table.relation
50
+ }
51
+ return parentDef.table.relation.name || ''
52
+ }
53
+
54
+ const getPrisma2Model = (schema: Schema, parent?: Schema, parentName?: string) => {
55
+ prisma2Models[schema.name] = prisma2Models[schema.name] || {}
56
+ let selfDef: FieldDefinition | null = null
57
+ for (const key of schema.keys) {
58
+ if (key === 'id') {
59
+ c++
60
+ prisma2Models[schema.name].id = `String @id @default(cuid()) //${c}`;
61
+ } else {
62
+ const fieldDefinition = schema.getPathDefinition(key)
63
+ let required = fieldDefinition.isArray || isRequired(fieldDefinition)
64
+ const fieldType = getGraphQLType(fieldDefinition, key, required);
65
+ const unique = fieldDefinition.table.unique ? '@unique' : ''
66
+ let defaultValue = ''
67
+ if (fieldDefinition.table.default !== undefined) {
68
+ const wrapper = (fieldDefinition.type === String) ? '"' : ''
69
+ defaultValue = `@default(${wrapper}${fieldDefinition.table.default}${wrapper})`
70
+ }
71
+ let relation: string = ''
72
+ if (fieldDefinition.isTable) {
73
+
74
+ const processedName = [schema.name, key].join('-')
75
+ let relationName = getRelationName(fieldDefinition)
76
+ let childExists=false
77
+ if (parent && parentName) {
78
+ const parentDef = parent.getPathDefinition(parentName)
79
+ let parentRelationName = getRelationName(parentDef)
80
+ if (parent && (fieldDefinition.type === parent.name ) && (parentRelationName === relationName)) { //child exists
81
+ selfDef = fieldDefinition
82
+ childExists=true
83
+ }
84
+ }
85
+ if (!proccesed.includes(processedName)) {
86
+ proccesed.push(processedName)
87
+ if (!childExists) {
88
+ getPrisma2Model(Schema.getInstance(fieldDefinition.type), schema, key)
89
+ }
90
+ }
91
+ } else {
92
+
93
+ let createdAt = '', updatedAt = ''
94
+ if ((fieldDefinition.table.createdAt === true || (fieldDefinition.table.createdAt !== false && key === 'createdAt'))) {
95
+ createdAt = `@default(now())`
96
+ }
97
+ if ((fieldDefinition.table.updatedAt === true || (fieldDefinition.table.updatedAt !== false && key === 'updatedAt'))) {
98
+ createdAt = `@default(now())`
99
+ }
100
+ if (!fieldType) {
101
+ throw new Error('no type')
102
+ }
103
+ prisma2Models[schema.name][key] = `${fieldType} ${unique} ${createdAt} ${updatedAt} ${defaultValue} ${relation} `;
104
+ }
105
+ }
106
+ }// end for
107
+ if (parent && parentName) {
108
+ const parentDef = parent.getPathDefinition(parentName)
109
+ let parentRelationName = getRelationName(parentDef)
110
+ const parentArray = parentDef.isArray
111
+ if (selfDef) {
112
+ if (selfDef.key==='visitStaff'){
113
+ console.log('visitStaff')
114
+ }
115
+ let childRelationName = getRelationName(selfDef)
116
+ const childArray = selfDef.isArray
117
+ if (childRelationName !== parentRelationName) {
118
+ throw new Error(`${childRelationName}-parentRelationName`)
119
+ }
120
+ if (!parentArray && !childArray) { //1 - 1
121
+ const relation = getRelationName(parentDef) || `${[parent.name, `${selfDef.type}_${selfDef.key}`].join('_Exist_')}`
122
+ if (typeof parentDef.table?.relation !== 'string' && parentDef.table?.relation?.link) {
123
+ prisma2Models[parent.name][parentDef.key] = `${parentDef.type}? @relation(fields: [${parentDef.key}Id], references: [id],name: "${relation}") // 1`
124
+ prisma2Models[parent.name][`${parentDef.key}Id`] = `String?`
125
+ prisma2Models[schema.name][`${selfDef.key}`] = `${selfDef.type}? @relation(name: "${relation}") // 2`
126
+ } else {
127
+ if (schema.name===parent.name){
128
+ prisma2Models[schema.name][`${relation}`] = `${parentDef.type}? @relation(name: "${relation}") // 3.1 `
129
+ prisma2Models[schema.name][`${selfDef.key}`] = `${selfDef.type}? @relation(fields: [${selfDef.key}Id], references: [id], name: "${relation}") // 4.1 ${parentDef.key} ${selfDef.key}`
130
+ prisma2Models[schema.name][`${selfDef.key}Id`] = `String?`
131
+ }else{
132
+ prisma2Models[parent.name][parentDef.key] = `${parentDef.type}? @relation(name: "${relation}") // 3`
133
+ prisma2Models[schema.name][`${selfDef.key}`] = `${selfDef.type}? @relation(fields: [${selfDef.key}Id], references: [id], name: "${relation}") // 4`
134
+ prisma2Models[schema.name][`${selfDef.key}Id`] = `String?`
135
+ }
136
+
137
+ }
138
+ }
139
+ if (parentArray && !childArray) { // n - 1
140
+ const relation = getRelationName(parentDef) || `${[parent.name, `${schema.name}_${selfDef.key}`].join('_Exist_')}`
141
+ prisma2Models[parent.name][parentDef.key] = `${parentDef.type}[] @relation(name: "${relation}") //5 `
142
+ prisma2Models[schema.name][selfDef.key] = `${selfDef.type}? @relation(fields: [${selfDef.key}Id], references: [id], name: "${relation}") // 6`
143
+ prisma2Models[schema.name][`${selfDef.key}Id`] = `String?`
144
+
145
+ }
146
+ if (!parentArray && childArray) { // 1 - n
147
+ const relation = getRelationName(parentDef) || `${[parent.name, `${schema.name}_${selfDef.key}`].join('_Exist_')}`
148
+ prisma2Models[schema.name][selfDef.key] = `${selfDef.type}[] @relation(name: "${relation}") //7`
149
+ prisma2Models[parent.name][parentDef.key] = `${parentDef.type}? @relation(fields: [${parentDef.key}Id], references: [id], name: "${relation}") //7.1`
150
+ prisma2Models[parent.name][`${parentDef.key}Id`] = `String?`
151
+ }
152
+ if (parentArray && childArray) { // n - n
153
+ const relation = getRelationName(parentDef) || `${[parent.name, `${schema.name}_${selfDef.key}`].join('_Exist_')}`
154
+ if (schema.name===parent.name){
155
+ prisma2Models[parent.name][parentDef.key] = `${parentDef.type}[] @relation(name: "${relation}", references: [id]) // 8 self1`
156
+ prisma2Models[schema.name][`${selfDef.key}2`] = `${selfDef.type}[] @relation(name: "${relation}", references: [id]) // 9 self2`
157
+ }else{
158
+ prisma2Models[parent.name][parentDef.key] = `${parentDef.type}[] @relation(name: "${relation}") // 8`
159
+ prisma2Models[schema.name][selfDef.key] = `${selfDef.type}[] @relation(name: "${relation}") // 9`
160
+ }
161
+
162
+ }
163
+ } else {
164
+ const parentRelationName= getRelationName(parentDef)
165
+
166
+ if (!parentArray) { //1 - n
167
+ const relation =parentRelationName || `${[parent.name, `${schema.name}_${parentDef.key}`].join('_Exist_')}`
168
+ prisma2Models[parent.name][parentDef.key] = `${parentDef.type}? @relation(name: "${relation}") //10`
169
+ prisma2Models[schema.name][`${parentRelationName || parent.name}${parent.names.query.single}`] = `${parent.name}? @relation(fields: [${parentRelationName ||parent.name}${parent.names.query.single}Id], references: [id], name: "${relation}") // 11`
170
+ prisma2Models[schema.name][`${parentRelationName || parent.name}${parent.names.query.single}Id`] = `String?`
171
+
172
+ }
173
+ if (parentArray) { // n - 1
174
+ const name = parent.names.query.single
175
+ const relation =parentRelationName || `${[parent.name, `${schema.name}_${name}`].join('_Exist_')}`
176
+ prisma2Models[parent.name][parentDef.key] = `${parentDef.type}[] @relation(name: "${relation}") // 12 `
177
+ prisma2Models[schema.name][`${parentRelationName || parent.name}${capitalize(parentDef.key)}`] = `${parent.name}? @relation(fields: [${parentRelationName || parent.name}${capitalize(parentDef.key)}Id], references: [id], name: "${relation}") // 13`
178
+ prisma2Models[schema.name][`${parentRelationName || parent.name}${capitalize(parentDef.key)}Id`] = `String?`
179
+
180
+ }
181
+ }
182
+ }
183
+ }
184
+ // if (typeof fieldDefinition.table?.relation !== 'string' && fieldDefinition.table?.relation?.link) {
185
+ // const nameId = `${key}Id`
186
+ // prisma2Models[schema.name][nameId] = `String //id with link`;
187
+ // relations.push(`fields: [${nameId}]`)
188
+ // relations.push(`references: [id]`)
189
+ // }
190
+ // if (relations.length > 0) {
191
+ // relation = `@relation(${relations.join(', ')})`
192
+ // }
193
+ // prisma2Models[schema.name][key] = `${fieldType} ${unique} ${defaultValue} ${relation} //deeping call=> ${fieldDefinition.type}`;
194
+ const getGraphQLType = (def: FieldDefinition, key: string, required: boolean): string => {
195
+ const optional = !def.isArray && !required ? '?' : ''
196
+ switch (true) {
197
+ case (!def.isArray && !def.isTable && def.type.name === 'String'):
198
+ return `String${optional}`;
199
+
200
+ case (!def.isArray && !def.isTable && def.type.name === 'Boolean'):
201
+ return `Boolean${optional}`;
202
+
203
+ case (!def.isArray && !def.isTable && def.type.name === 'Number'):
204
+ return `Float${optional}`;
205
+
206
+ case (!def.isArray && !def.isTable && def.type.name === 'Integer'):
207
+ return `Int${optional}`;
208
+ case (!def.isArray && !def.isTable && def.type.name === 'Date'):
209
+ return `DateTime${optional}`;
210
+ case (def.isArray && def.isTable):
211
+ return `${def.type}[]`
212
+ case (def.isArray && !def.isTable):
213
+ const scalarName = getGraphQLType({...def, isArray: false}, key, def.isArray && required)
214
+ return `${scalarName}[]`
215
+ default:
216
+ return def.type + optional;
217
+ }
218
+ }
219
+
220
+
package/src/cli/index.ts CHANGED
@@ -3,29 +3,35 @@ import {createProject} from "./createProject";
3
3
  import {watch} from "./watch";
4
4
  import {deploy} from "./deploy";
5
5
  import {genFile} from "./gen-files/genFiles";
6
+ import {genFile as genPrisma2} from "./gen-files/prisma2";
7
+
8
+ console.log('cesar')
6
9
 
7
10
  //@ts-ignore
8
11
  const [nodeDir, dir, cmd, ...args] = process.argv
9
12
 
10
13
  switch (cmd) {
11
- case "create":
12
- const project = args && args[0] || 'mandarina'
13
- createProject(project)
14
- break
15
- case 'gen-files':
16
- genFile()
17
- break;
18
- case 'deploy':
19
- deploy()
20
- break;
21
- case 'watch':
22
- watch()
23
- break;
24
- case undefined:
25
- console.info(`You need to pass a command at first argument`)
26
- break
27
- default:
28
- console.info(`command ${cmd} not found, available commands: "create","gen-files","deploy","watch`)
14
+ case "create":
15
+ const project = args && args[0] || 'mandarina'
16
+ createProject(project)
17
+ break
18
+ case 'gen-files':
19
+ genFile()
20
+ break;
21
+ case 'gen-prisma2':
22
+ genPrisma2()
23
+ break;
24
+ case 'deploy':
25
+ deploy()
26
+ break;
27
+ case 'watch':
28
+ watch()
29
+ break;
30
+ case undefined:
31
+ console.info(`You need to pass a command at first argument`)
32
+ break
33
+ default:
34
+ console.info(`command ${cmd} not found, available commands: "create","gen-files","deploy","watch`)
29
35
  }
30
36
 
31
37
  /*
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var fs_1 = __importDefault(require("fs"));
7
+ var path_1 = __importDefault(require("path"));
8
+ exports.getConfig = function () {
9
+ var rawData;
10
+ try {
11
+ rawData = fs_1.default.readFileSync(path_1.default.join(process.cwd(), 'mandarina.json'), 'utf8');
12
+ }
13
+ catch (e) {
14
+ throw Error('Error: Be sure you are running your server from the root (where mandarina.json file is located');
15
+ }
16
+ var config = JSON.parse(rawData);
17
+ if (!config.dir) {
18
+ throw Error('Error: please set "dir" in madarina.json file');
19
+ }
20
+ if (!config.dir.schemas || !Array.isArray(config.dir.schemas) || config.dir.schemas.length === 0) {
21
+ throw Error('Error: please set "dir.schemas" in madarina.json file. Make sure it is a array');
22
+ }
23
+ if (config.dir.actions && !Array.isArray(config.dir.actions)) {
24
+ throw Error('Error: please make sure "dir.actions" is a array');
25
+ }
26
+ if (config.dir.tables && !Array.isArray(config.dir.tables)) {
27
+ throw Error('Error: please make sure "dir.tables" is a array');
28
+ }
29
+ if (!config.dir.prisma) {
30
+ throw Error('Error: please set "dir.prisma" in madarina.json file');
31
+ }
32
+ if (!config.dir.generated) {
33
+ throw Error('Error: please set "dir.generated" in madarina.json file');
34
+ }
35
+ return (config);
36
+ };
37
+ var walkSync = function (dir, fileList) {
38
+ var files = fs_1.default.readdirSync(dir);
39
+ fileList = fileList || [];
40
+ files.forEach(function (file) {
41
+ var pathFile = path_1.default.join(dir, file);
42
+ if (fs_1.default.statSync(pathFile).isDirectory()) {
43
+ fileList = walkSync(pathFile, fileList);
44
+ }
45
+ else {
46
+ if (path_1.default.extname(file) === '.js')
47
+ fileList.push(pathFile);
48
+ }
49
+ });
50
+ return fileList;
51
+ };
52
+ exports.loadSchemas = function (dir) {
53
+ var tables = [];
54
+ var schemas = [];
55
+ var actions = [];
56
+ dir.schemas.forEach(function (dir) {
57
+ schemas = walkSync(path_1.default.join(process.cwd(), dir), schemas);
58
+ });
59
+ if (dir.actions) {
60
+ dir.actions.forEach(function (dir) {
61
+ actions = walkSync(path_1.default.join(process.cwd(), dir), actions);
62
+ });
63
+ }
64
+ if (dir.tables) {
65
+ dir.tables.forEach(function (dir) {
66
+ tables = walkSync(path_1.default.join(process.cwd(), dir), tables);
67
+ });
68
+ }
69
+ schemas.forEach(function (schema) {
70
+ var content = fs_1.default.readFileSync(schema, 'utf8');
71
+ if (true || content.match(/new *Schema/)) {
72
+ console.info('loading schema: ', schema);
73
+ require(schema);
74
+ }
75
+ });
76
+ tables.forEach(function (table) {
77
+ var content = fs_1.default.readFileSync(table, 'utf8');
78
+ if (true || content.match(/new *Table/)) {
79
+ console.info('loading table: ', table);
80
+ require(table);
81
+ }
82
+ });
83
+ actions.forEach(function (action) {
84
+ var content = fs_1.default.readFileSync(action, 'utf8');
85
+ if (true || content.match(/new *Table/)) {
86
+ console.info('loading action: ', action);
87
+ require(action);
88
+ }
89
+ });
90
+ };
91
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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"}
package/src/cli/utils.ts CHANGED
@@ -68,6 +68,7 @@ export interface ConfigDirInterface {
68
68
  actions?: string[]
69
69
  generated: string
70
70
  prisma: string
71
+ prisma2: string
71
72
  }
72
73
 
73
74
  export const loadSchemas = (dir: ConfigDirInterface) => {
package/src/index.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var CustomAction_1 = require("./Action/CustomAction");
7
+ exports.CustomAction = CustomAction_1.CustomAction;
8
+ var Table_1 = require("./Table/Table");
9
+ exports.Table = Table_1.Table;
10
+ var Mandarina_1 = __importDefault(require("./Mandarina"));
11
+ var utils_1 = require("./cli/utils");
12
+ exports.getConfig = utils_1.getConfig;
13
+ var Action = CustomAction_1.CustomAction; //for backward compatibility
14
+ exports.Action = Action;
15
+ exports.default = Mandarina_1.default;
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;AAAA,sDAAkD;AAW9C,uBAXI,2BAAY,CAWJ;AAVhB,uCAAmC;AAY/B,gBAZI,aAAK,CAYJ;AAXT,0DAAmC;AACnC,qCAAqC;AAOjC,oBAPI,iBAAS,CAOJ;AAJb,IAAM,MAAM,GAAC,2BAAY,CAAA,CAAC,4BAA4B;AAMlD,wBAAM;AAJV,kBAAe,mBAAS,CAAA"}