prisma_dart_generator 1.0.6 → 1.0.7

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/dist/index.cjs ADDED
@@ -0,0 +1,343 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
18
+ // If the importer is in node compatibility mode or this is not an ESM
19
+ // file that has been converted to a CommonJS file using a Babel-
20
+ // compatible transform (i.e. "__esModule" has not been set), then set
21
+ // "default" to the CommonJS "module.exports" for node compatibility.
22
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
+ mod
24
+ ));
25
+
26
+ // src/index.ts
27
+ var import_fs = __toESM(require("fs"), 1);
28
+ var import_path = __toESM(require("path"), 1);
29
+ var import_internals = require("@prisma/internals");
30
+
31
+ // src/parts/utils.ts
32
+ var capitalize = (text) => text.substring(0, 1).toUpperCase() + text.substring(1).toLowerCase();
33
+ var snakeToCamel = (text) => {
34
+ if (!text.includes("_")) return text.toLowerCase();
35
+ return text.split("_").map((t, i) => i == 0 ? t.toLowerCase() : capitalize(t)).join("");
36
+ };
37
+
38
+ // src/parts/enum.ts
39
+ var enumToDartName = (name) => {
40
+ const modelName = name.split("_").map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
41
+ return `${modelName}Enum`;
42
+ };
43
+ var Enum = class {
44
+ constructor({ name, values }) {
45
+ this.name = name;
46
+ this.values = values;
47
+ }
48
+ toString() {
49
+ return `
50
+ enum ${enumToDartName(this.name)} {
51
+
52
+ ${this.values.map((value) => ` ${snakeToCamel(value)}("${value}")`).join(",\n")};
53
+
54
+ final String _text;
55
+
56
+ const ${enumToDartName(this.name)}(String text):_text = text;
57
+
58
+ static ${enumToDartName(this.name)}? fromText(String? value) {
59
+ if(value == null) return null;
60
+ try {
61
+ return ${enumToDartName(
62
+ this.name
63
+ )}.values.firstWhere((v) => v._text == value);
64
+ } catch (e) {
65
+ return null;
66
+ }
67
+ }
68
+
69
+ String get text => _text;
70
+
71
+ @override
72
+ String toString() => _text;
73
+ }
74
+ `;
75
+ }
76
+ };
77
+ var enum_default = Enum;
78
+
79
+ // src/parts/class.ts
80
+ var modelNameToDartName = (name) => {
81
+ const modelName = name.split("_").map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
82
+ return `${modelName}Model`;
83
+ };
84
+ var Class = class {
85
+ constructor({ name, fields }) {
86
+ this.name = name;
87
+ this.fields = fields;
88
+ }
89
+ toString() {
90
+ return `
91
+ class ${modelNameToDartName(this.name)} {
92
+ ${this.getFields()}
93
+
94
+ ${this.getConstructor()}
95
+
96
+ ${this.getFromJson()}
97
+
98
+ ${this.toJson()}
99
+
100
+ ${this.copyWith()}
101
+
102
+ ${this.toStr()}
103
+ }`;
104
+ }
105
+ getFields() {
106
+ return " " + this.fields.map((field) => field.toString()).join("\n ");
107
+ }
108
+ getConstructor() {
109
+ return `
110
+ ${modelNameToDartName(this.name)}({
111
+ ${this.fields.map((field) => {
112
+ return ` this.${snakeToCamel(field.field.name)}`;
113
+ }).join(",\n")}
114
+ });`;
115
+ }
116
+ getFromJson() {
117
+ function parseFromJson(field) {
118
+ const prismaField = field.field;
119
+ let valueExpr = "";
120
+ if (prismaField.type === "Int" || prismaField.type === "Float")
121
+ valueExpr = `num.tryParse("\${json["${prismaField.name}"]}")`;
122
+ else if (prismaField.type === "DateTime")
123
+ valueExpr = `json["${prismaField.name}"] != null ? DateTime.parse(json["${prismaField.name}"]) : null`;
124
+ else if (prismaField.kind === "scalar")
125
+ valueExpr = `json["${prismaField.name}"]`;
126
+ else if (prismaField.kind === "enum")
127
+ valueExpr = `json["${prismaField.name}"] != null ? ${enumToDartName(
128
+ prismaField.type.replace("[]", "")
129
+ )}.fromText(json["${prismaField.name}"]) : null`;
130
+ else if (prismaField.relationName !== null)
131
+ if (prismaField.isList)
132
+ valueExpr = `json["${prismaField.name}"] != null
133
+ ? List.from(json["${prismaField.name}"]).map((d) => ${modelNameToDartName(
134
+ prismaField.type.replace("[]", "")
135
+ )}.fromJson(d)).toList()
136
+ : null`;
137
+ else
138
+ valueExpr = `json["${prismaField.name}"] != null
139
+ ? ${modelNameToDartName(
140
+ prismaField.type.replace("[]", "")
141
+ )}.fromJson(json['${prismaField.name}'])
142
+ : null`;
143
+ else valueExpr = `json["${prismaField.name}"] as ${prismaField.type}`;
144
+ return valueExpr;
145
+ }
146
+ return `
147
+ factory ${modelNameToDartName(
148
+ this.name
149
+ )}.fromJson(Map<String, dynamic> json) => ${modelNameToDartName(this.name)}(
150
+ ${this.fields.map((field) => {
151
+ return `${snakeToCamel(field.field.name)}: ${parseFromJson(field)},`;
152
+ }).join("\n ")}
153
+ );`;
154
+ }
155
+ toJson() {
156
+ return `
157
+ Map<String, dynamic> toJson() => {
158
+ ${this.fields.map((field) => {
159
+ const prismaField = field.field;
160
+ const name = snakeToCamel(prismaField.name);
161
+ let valueExpr = "";
162
+ if (prismaField.type === "DateTime")
163
+ valueExpr = `${name}?.toIso8601String()`;
164
+ else if (prismaField.kind === "scalar") valueExpr = `${name}`;
165
+ else if (prismaField.kind === "enum") valueExpr = `${name}?.text`;
166
+ else if (prismaField.relationName !== null)
167
+ if (prismaField.isList)
168
+ valueExpr = `${snakeToCamel(
169
+ prismaField.name
170
+ )}?.map((d) => d.toJson()).toList()`;
171
+ else valueExpr = `${name}?.toJson()`;
172
+ else valueExpr = `${name}`;
173
+ return `if(${name} != null) '${prismaField.name}': ${valueExpr}`;
174
+ }).join(",\n ")}
175
+ };`;
176
+ }
177
+ copyWith() {
178
+ function parseFromJson(field) {
179
+ const prismaField = field.field;
180
+ let valueExpr = "";
181
+ if (prismaField.type === "Int" || prismaField.type === "Float")
182
+ valueExpr = `json["${prismaField.name}"] != null ? num.tryParse("\${json["${prismaField.name}"]}") : ${snakeToCamel(field.field.name)}`;
183
+ else if (prismaField.type === "Json")
184
+ valueExpr = `json["${prismaField.name}"] != null ? Map<String, dynamic>.from(json["${prismaField.name}"]) : null`;
185
+ else if (prismaField.type === "Json?")
186
+ valueExpr = `json["${prismaField.name}"] != null ? Map<String, dynamic>.from(json["${prismaField.name}"]) : null`;
187
+ else if (prismaField.type === "DateTime")
188
+ valueExpr = `json["${prismaField.name}"] != null ? DateTime.parse(json["${prismaField.name}"]) : null`;
189
+ else if (prismaField.kind === "scalar")
190
+ valueExpr = `json["${prismaField.name}"] ?? ${snakeToCamel(
191
+ field.field.name
192
+ )}`;
193
+ else if (prismaField.kind === "enum")
194
+ valueExpr = `json["${prismaField.name}"] != null ? ${enumToDartName(
195
+ prismaField.type.replace("[]", "")
196
+ )}.fromText(json["${prismaField.name}"]) : null`;
197
+ else if (prismaField.relationName !== null)
198
+ if (prismaField.isList)
199
+ valueExpr = `json["${prismaField.name}"] != null
200
+ ? List.from(json["${prismaField.name}"]).map((d) => ${modelNameToDartName(
201
+ prismaField.type.replace("[]", "")
202
+ )}.fromJson(d)).toList()
203
+ : ${snakeToCamel(field.field.name)}`;
204
+ else
205
+ valueExpr = `json["${prismaField.name}"] != null
206
+ ? ${modelNameToDartName(
207
+ prismaField.type.replace("[]", "")
208
+ )}.fromJson(json['${prismaField.name}'])
209
+ : ${snakeToCamel(field.field.name)}`;
210
+ else valueExpr = `json["${prismaField.name}"] as ${prismaField.type}`;
211
+ return valueExpr;
212
+ }
213
+ return `
214
+ ${modelNameToDartName(
215
+ this.name
216
+ )} copyWith(Map<String, dynamic> json) => ${modelNameToDartName(this.name)}(
217
+ ${this.fields.map((field) => {
218
+ return `${snakeToCamel(field.field.name)}: ${parseFromJson(field)}`;
219
+ }).join(",\n ")}
220
+ );`;
221
+ }
222
+ toStr() {
223
+ return `
224
+ @override
225
+ String toString() => """
226
+ ${modelNameToDartName(this.name)}(
227
+ ${this.fields.map((field) => {
228
+ const prismaField = field.field;
229
+ const name = snakeToCamel(prismaField.name);
230
+ let valueExpr = "";
231
+ if (prismaField.type === "DateTime")
232
+ valueExpr = `${name}?.toIso8601String()`;
233
+ else if (prismaField.kind === "scalar") valueExpr = `${name}`;
234
+ else if (prismaField.kind === "enum")
235
+ valueExpr = `${name}?.text`;
236
+ else if (prismaField.relationName !== null)
237
+ if (prismaField.isList)
238
+ valueExpr = `${snakeToCamel(
239
+ prismaField.name
240
+ )}?.map((d) => d.toJson()).toList()`;
241
+ else valueExpr = `${name}?.toJson()`;
242
+ else valueExpr = `${name}`;
243
+ return `'${prismaField.name}': \${${valueExpr}}`;
244
+ }).join(",\n ")}
245
+ ) """;`;
246
+ }
247
+ };
248
+ var class_default = Class;
249
+
250
+ // src/parts/field.ts
251
+ var Field = class {
252
+ constructor(field) {
253
+ this.field = field;
254
+ }
255
+ toString() {
256
+ const type = getDartTypeFromPrismaType(this.field.type);
257
+ const name = snakeToCamel(this.field.name);
258
+ if (this.field.kind === "scalar") return `final ${type}? ${name};`;
259
+ else if (this.field.isList)
260
+ if (this.field.relationName !== null)
261
+ return `final List<${modelNameToDartName(
262
+ type.replace("[]", "")
263
+ )}>? ${name};`;
264
+ else return `final List<${type.replace("[]", "")}>? ${name};`;
265
+ else if (this.field.kind === "enum")
266
+ return `final ${enumToDartName(type.replace("[]", ""))}? ${name};`;
267
+ else if (this.field.relationName !== null)
268
+ return `final ${modelNameToDartName(type.replace("[]", ""))}? ${name};`;
269
+ else return `final ${type}? ${name};`;
270
+ }
271
+ };
272
+ var getDartTypeFromPrismaType = (type) => {
273
+ switch (type) {
274
+ case "String":
275
+ return "String";
276
+ case "String?":
277
+ return "String?";
278
+ case "Int":
279
+ return "num";
280
+ case "Int?":
281
+ return "num?";
282
+ case "Float":
283
+ return "num";
284
+ case "Float?":
285
+ return "num?";
286
+ case "Boolean":
287
+ return "bool";
288
+ case "Boolean?":
289
+ return "bool?";
290
+ case "DateTime":
291
+ return "DateTime";
292
+ case "DateTime?":
293
+ return "DateTime?";
294
+ case "Json":
295
+ return "Map<String, dynamic>";
296
+ case "Json?":
297
+ return "Map<String, dynamic>?";
298
+ default:
299
+ return type;
300
+ }
301
+ };
302
+ var field_default = Field;
303
+
304
+ // src/index.ts
305
+ var [, , schemaPath, outputPath] = process.argv;
306
+ async function main() {
307
+ console.log("Starting the generator...");
308
+ if (!schemaPath || !import_fs.default.existsSync(schemaPath))
309
+ throw new Error("Prisma schema not found!");
310
+ if (!outputPath)
311
+ throw new Error("Output path is required as the second argument");
312
+ const schema = import_fs.default.readFileSync(schemaPath, "utf-8");
313
+ const dmmf = await (0, import_internals.getDMMF)({ datamodel: schema });
314
+ const models = dmmf.datamodel.models;
315
+ const enums = dmmf.datamodel.enums;
316
+ let dartString = "";
317
+ for (const e of enums) {
318
+ console.log("Generating enum: ", e.name);
319
+ const dart = new enum_default({
320
+ name: e.name,
321
+ values: e.values.map((value) => value.name)
322
+ });
323
+ dartString += dart.toString();
324
+ }
325
+ for (const model of models) {
326
+ console.log("Generating model: ", model.name);
327
+ const dart = new class_default({
328
+ name: model.name,
329
+ fields: model.fields.map((field) => {
330
+ return new field_default(field);
331
+ })
332
+ });
333
+ dartString += dart.toString();
334
+ }
335
+ const text = `
336
+ //*** AUTO-GENERATED FILE - DO NOT MODIFY ***//
337
+
338
+ ${dartString}
339
+ `;
340
+ if (!import_fs.default.existsSync(outputPath)) import_fs.default.mkdirSync(outputPath, { recursive: true });
341
+ import_fs.default.writeFileSync(import_path.default.join(outputPath, "models.dart"), text, "utf-8");
342
+ }
343
+ main().catch(console.error);
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/index.js ADDED
@@ -0,0 +1,320 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/index.ts
4
+ import fs from "fs";
5
+ import path from "path";
6
+ import { getDMMF } from "@prisma/internals";
7
+
8
+ // src/parts/utils.ts
9
+ var capitalize = (text) => text.substring(0, 1).toUpperCase() + text.substring(1).toLowerCase();
10
+ var snakeToCamel = (text) => {
11
+ if (!text.includes("_")) return text.toLowerCase();
12
+ return text.split("_").map((t, i) => i == 0 ? t.toLowerCase() : capitalize(t)).join("");
13
+ };
14
+
15
+ // src/parts/enum.ts
16
+ var enumToDartName = (name) => {
17
+ const modelName = name.split("_").map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
18
+ return `${modelName}Enum`;
19
+ };
20
+ var Enum = class {
21
+ constructor({ name, values }) {
22
+ this.name = name;
23
+ this.values = values;
24
+ }
25
+ toString() {
26
+ return `
27
+ enum ${enumToDartName(this.name)} {
28
+
29
+ ${this.values.map((value) => ` ${snakeToCamel(value)}("${value}")`).join(",\n")};
30
+
31
+ final String _text;
32
+
33
+ const ${enumToDartName(this.name)}(String text):_text = text;
34
+
35
+ static ${enumToDartName(this.name)}? fromText(String? value) {
36
+ if(value == null) return null;
37
+ try {
38
+ return ${enumToDartName(
39
+ this.name
40
+ )}.values.firstWhere((v) => v._text == value);
41
+ } catch (e) {
42
+ return null;
43
+ }
44
+ }
45
+
46
+ String get text => _text;
47
+
48
+ @override
49
+ String toString() => _text;
50
+ }
51
+ `;
52
+ }
53
+ };
54
+ var enum_default = Enum;
55
+
56
+ // src/parts/class.ts
57
+ var modelNameToDartName = (name) => {
58
+ const modelName = name.split("_").map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
59
+ return `${modelName}Model`;
60
+ };
61
+ var Class = class {
62
+ constructor({ name, fields }) {
63
+ this.name = name;
64
+ this.fields = fields;
65
+ }
66
+ toString() {
67
+ return `
68
+ class ${modelNameToDartName(this.name)} {
69
+ ${this.getFields()}
70
+
71
+ ${this.getConstructor()}
72
+
73
+ ${this.getFromJson()}
74
+
75
+ ${this.toJson()}
76
+
77
+ ${this.copyWith()}
78
+
79
+ ${this.toStr()}
80
+ }`;
81
+ }
82
+ getFields() {
83
+ return " " + this.fields.map((field) => field.toString()).join("\n ");
84
+ }
85
+ getConstructor() {
86
+ return `
87
+ ${modelNameToDartName(this.name)}({
88
+ ${this.fields.map((field) => {
89
+ return ` this.${snakeToCamel(field.field.name)}`;
90
+ }).join(",\n")}
91
+ });`;
92
+ }
93
+ getFromJson() {
94
+ function parseFromJson(field) {
95
+ const prismaField = field.field;
96
+ let valueExpr = "";
97
+ if (prismaField.type === "Int" || prismaField.type === "Float")
98
+ valueExpr = `num.tryParse("\${json["${prismaField.name}"]}")`;
99
+ else if (prismaField.type === "DateTime")
100
+ valueExpr = `json["${prismaField.name}"] != null ? DateTime.parse(json["${prismaField.name}"]) : null`;
101
+ else if (prismaField.kind === "scalar")
102
+ valueExpr = `json["${prismaField.name}"]`;
103
+ else if (prismaField.kind === "enum")
104
+ valueExpr = `json["${prismaField.name}"] != null ? ${enumToDartName(
105
+ prismaField.type.replace("[]", "")
106
+ )}.fromText(json["${prismaField.name}"]) : null`;
107
+ else if (prismaField.relationName !== null)
108
+ if (prismaField.isList)
109
+ valueExpr = `json["${prismaField.name}"] != null
110
+ ? List.from(json["${prismaField.name}"]).map((d) => ${modelNameToDartName(
111
+ prismaField.type.replace("[]", "")
112
+ )}.fromJson(d)).toList()
113
+ : null`;
114
+ else
115
+ valueExpr = `json["${prismaField.name}"] != null
116
+ ? ${modelNameToDartName(
117
+ prismaField.type.replace("[]", "")
118
+ )}.fromJson(json['${prismaField.name}'])
119
+ : null`;
120
+ else valueExpr = `json["${prismaField.name}"] as ${prismaField.type}`;
121
+ return valueExpr;
122
+ }
123
+ return `
124
+ factory ${modelNameToDartName(
125
+ this.name
126
+ )}.fromJson(Map<String, dynamic> json) => ${modelNameToDartName(this.name)}(
127
+ ${this.fields.map((field) => {
128
+ return `${snakeToCamel(field.field.name)}: ${parseFromJson(field)},`;
129
+ }).join("\n ")}
130
+ );`;
131
+ }
132
+ toJson() {
133
+ return `
134
+ Map<String, dynamic> toJson() => {
135
+ ${this.fields.map((field) => {
136
+ const prismaField = field.field;
137
+ const name = snakeToCamel(prismaField.name);
138
+ let valueExpr = "";
139
+ if (prismaField.type === "DateTime")
140
+ valueExpr = `${name}?.toIso8601String()`;
141
+ else if (prismaField.kind === "scalar") valueExpr = `${name}`;
142
+ else if (prismaField.kind === "enum") valueExpr = `${name}?.text`;
143
+ else if (prismaField.relationName !== null)
144
+ if (prismaField.isList)
145
+ valueExpr = `${snakeToCamel(
146
+ prismaField.name
147
+ )}?.map((d) => d.toJson()).toList()`;
148
+ else valueExpr = `${name}?.toJson()`;
149
+ else valueExpr = `${name}`;
150
+ return `if(${name} != null) '${prismaField.name}': ${valueExpr}`;
151
+ }).join(",\n ")}
152
+ };`;
153
+ }
154
+ copyWith() {
155
+ function parseFromJson(field) {
156
+ const prismaField = field.field;
157
+ let valueExpr = "";
158
+ if (prismaField.type === "Int" || prismaField.type === "Float")
159
+ valueExpr = `json["${prismaField.name}"] != null ? num.tryParse("\${json["${prismaField.name}"]}") : ${snakeToCamel(field.field.name)}`;
160
+ else if (prismaField.type === "Json")
161
+ valueExpr = `json["${prismaField.name}"] != null ? Map<String, dynamic>.from(json["${prismaField.name}"]) : null`;
162
+ else if (prismaField.type === "Json?")
163
+ valueExpr = `json["${prismaField.name}"] != null ? Map<String, dynamic>.from(json["${prismaField.name}"]) : null`;
164
+ else if (prismaField.type === "DateTime")
165
+ valueExpr = `json["${prismaField.name}"] != null ? DateTime.parse(json["${prismaField.name}"]) : null`;
166
+ else if (prismaField.kind === "scalar")
167
+ valueExpr = `json["${prismaField.name}"] ?? ${snakeToCamel(
168
+ field.field.name
169
+ )}`;
170
+ else if (prismaField.kind === "enum")
171
+ valueExpr = `json["${prismaField.name}"] != null ? ${enumToDartName(
172
+ prismaField.type.replace("[]", "")
173
+ )}.fromText(json["${prismaField.name}"]) : null`;
174
+ else if (prismaField.relationName !== null)
175
+ if (prismaField.isList)
176
+ valueExpr = `json["${prismaField.name}"] != null
177
+ ? List.from(json["${prismaField.name}"]).map((d) => ${modelNameToDartName(
178
+ prismaField.type.replace("[]", "")
179
+ )}.fromJson(d)).toList()
180
+ : ${snakeToCamel(field.field.name)}`;
181
+ else
182
+ valueExpr = `json["${prismaField.name}"] != null
183
+ ? ${modelNameToDartName(
184
+ prismaField.type.replace("[]", "")
185
+ )}.fromJson(json['${prismaField.name}'])
186
+ : ${snakeToCamel(field.field.name)}`;
187
+ else valueExpr = `json["${prismaField.name}"] as ${prismaField.type}`;
188
+ return valueExpr;
189
+ }
190
+ return `
191
+ ${modelNameToDartName(
192
+ this.name
193
+ )} copyWith(Map<String, dynamic> json) => ${modelNameToDartName(this.name)}(
194
+ ${this.fields.map((field) => {
195
+ return `${snakeToCamel(field.field.name)}: ${parseFromJson(field)}`;
196
+ }).join(",\n ")}
197
+ );`;
198
+ }
199
+ toStr() {
200
+ return `
201
+ @override
202
+ String toString() => """
203
+ ${modelNameToDartName(this.name)}(
204
+ ${this.fields.map((field) => {
205
+ const prismaField = field.field;
206
+ const name = snakeToCamel(prismaField.name);
207
+ let valueExpr = "";
208
+ if (prismaField.type === "DateTime")
209
+ valueExpr = `${name}?.toIso8601String()`;
210
+ else if (prismaField.kind === "scalar") valueExpr = `${name}`;
211
+ else if (prismaField.kind === "enum")
212
+ valueExpr = `${name}?.text`;
213
+ else if (prismaField.relationName !== null)
214
+ if (prismaField.isList)
215
+ valueExpr = `${snakeToCamel(
216
+ prismaField.name
217
+ )}?.map((d) => d.toJson()).toList()`;
218
+ else valueExpr = `${name}?.toJson()`;
219
+ else valueExpr = `${name}`;
220
+ return `'${prismaField.name}': \${${valueExpr}}`;
221
+ }).join(",\n ")}
222
+ ) """;`;
223
+ }
224
+ };
225
+ var class_default = Class;
226
+
227
+ // src/parts/field.ts
228
+ var Field = class {
229
+ constructor(field) {
230
+ this.field = field;
231
+ }
232
+ toString() {
233
+ const type = getDartTypeFromPrismaType(this.field.type);
234
+ const name = snakeToCamel(this.field.name);
235
+ if (this.field.kind === "scalar") return `final ${type}? ${name};`;
236
+ else if (this.field.isList)
237
+ if (this.field.relationName !== null)
238
+ return `final List<${modelNameToDartName(
239
+ type.replace("[]", "")
240
+ )}>? ${name};`;
241
+ else return `final List<${type.replace("[]", "")}>? ${name};`;
242
+ else if (this.field.kind === "enum")
243
+ return `final ${enumToDartName(type.replace("[]", ""))}? ${name};`;
244
+ else if (this.field.relationName !== null)
245
+ return `final ${modelNameToDartName(type.replace("[]", ""))}? ${name};`;
246
+ else return `final ${type}? ${name};`;
247
+ }
248
+ };
249
+ var getDartTypeFromPrismaType = (type) => {
250
+ switch (type) {
251
+ case "String":
252
+ return "String";
253
+ case "String?":
254
+ return "String?";
255
+ case "Int":
256
+ return "num";
257
+ case "Int?":
258
+ return "num?";
259
+ case "Float":
260
+ return "num";
261
+ case "Float?":
262
+ return "num?";
263
+ case "Boolean":
264
+ return "bool";
265
+ case "Boolean?":
266
+ return "bool?";
267
+ case "DateTime":
268
+ return "DateTime";
269
+ case "DateTime?":
270
+ return "DateTime?";
271
+ case "Json":
272
+ return "Map<String, dynamic>";
273
+ case "Json?":
274
+ return "Map<String, dynamic>?";
275
+ default:
276
+ return type;
277
+ }
278
+ };
279
+ var field_default = Field;
280
+
281
+ // src/index.ts
282
+ var [, , schemaPath, outputPath] = process.argv;
283
+ async function main() {
284
+ console.log("Starting the generator...");
285
+ if (!schemaPath || !fs.existsSync(schemaPath))
286
+ throw new Error("Prisma schema not found!");
287
+ if (!outputPath)
288
+ throw new Error("Output path is required as the second argument");
289
+ const schema = fs.readFileSync(schemaPath, "utf-8");
290
+ const dmmf = await getDMMF({ datamodel: schema });
291
+ const models = dmmf.datamodel.models;
292
+ const enums = dmmf.datamodel.enums;
293
+ let dartString = "";
294
+ for (const e of enums) {
295
+ console.log("Generating enum: ", e.name);
296
+ const dart = new enum_default({
297
+ name: e.name,
298
+ values: e.values.map((value) => value.name)
299
+ });
300
+ dartString += dart.toString();
301
+ }
302
+ for (const model of models) {
303
+ console.log("Generating model: ", model.name);
304
+ const dart = new class_default({
305
+ name: model.name,
306
+ fields: model.fields.map((field) => {
307
+ return new field_default(field);
308
+ })
309
+ });
310
+ dartString += dart.toString();
311
+ }
312
+ const text = `
313
+ //*** AUTO-GENERATED FILE - DO NOT MODIFY ***//
314
+
315
+ ${dartString}
316
+ `;
317
+ if (!fs.existsSync(outputPath)) fs.mkdirSync(outputPath, { recursive: true });
318
+ fs.writeFileSync(path.join(outputPath, "models.dart"), text, "utf-8");
319
+ }
320
+ main().catch(console.error);
package/package.json CHANGED
@@ -1,25 +1,40 @@
1
1
  {
2
2
  "name": "prisma_dart_generator",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "bin": {
7
7
  "prisma_dart": "dist/bin/index.js"
8
8
  },
9
- "files": [
10
- "dist"
11
- ],
12
- "scripts": {
13
- "prisma": "bun ./bin/index.ts ./test/prisma/schema.prisma ./test/dart/data/"
14
- },
15
9
  "devDependencies": {
16
10
  "@types/bun": "latest",
17
- "@types/node": "^25.0.8"
11
+ "@types/node": "^25.0.8",
12
+ "tsup": "^8.5.1",
13
+ "typescript": "^5.9.3"
18
14
  },
19
15
  "peerDependencies": {
20
16
  "typescript": "^5.9.3"
21
17
  },
22
18
  "dependencies": {
23
19
  "@prisma/internals": "^7.2.0"
20
+ },
21
+ "description": "",
22
+ "main": "index.js",
23
+ "keywords": [],
24
+ "author": "",
25
+ "license": "ISC",
26
+ "exports": {
27
+ ".": {
28
+ "import": "./dist/index.js",
29
+ "require": "./dist/index.cjs",
30
+ "types": "./dist/index.d.ts"
31
+ }
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "scripts": {
37
+ "build": "tsup src/index.ts --format esm,cjs --dts",
38
+ "prepublishOnly": "npm run build"
24
39
  }
25
40
  }
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":""}
package/dist/bin/index.js DELETED
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env node
2
- const fs = require("fs");
3
- const path = require("path");
4
- const { getDMMF } = require("@prisma/internals");
5
- const Class = require("./parts/class.js");
6
- const Field = require("./parts/field.js");
7
- const Enum = require("./parts/enum.js");
8
- const [, , schemaPath, outputPath] = process.argv;
9
- async function main() {
10
- console.log("Starting the generator...");
11
- if (!schemaPath || !fs.existsSync(schemaPath))
12
- throw new Error("Prisma schema not found!");
13
- if (!outputPath)
14
- throw new Error("Output path is required as the second argument");
15
- const schema = fs.readFileSync(schemaPath, "utf-8");
16
- const dmmf = await getDMMF({ datamodel: schema });
17
- const models = dmmf.datamodel.models;
18
- const enums = dmmf.datamodel.enums;
19
- let dartString = "";
20
- for (const e of enums) {
21
- console.log("Generating enum: ", e.name);
22
- const dart = new Enum({
23
- name: e.name,
24
- values: e.values.map((value) => value.name),
25
- });
26
- dartString += dart.toString();
27
- }
28
- for (const model of models) {
29
- console.log("Generating model: ", model.name);
30
- const dart = new Class({
31
- name: model.name,
32
- fields: model.fields.map((field) => {
33
- return new Field(field);
34
- }),
35
- });
36
- dartString += dart.toString();
37
- }
38
- const text = `
39
- //*** AUTO-GENERATED FILE - DO NOT MODIFY ***//
40
-
41
- ${dartString}
42
- `;
43
- if (!fs.existsSync(outputPath))
44
- fs.mkdirSync(outputPath, { recursive: true });
45
- fs.writeFileSync(path.join(outputPath, "models.dart"), text, "utf-8");
46
- }
47
- main().catch(console.error);
48
- export {};
49
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":";AAEA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACjD,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAExC,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAElD,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU;QACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAEnC,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SACjD,CAAC,CAAC;QAEH,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;gBACtC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC;SACH,CAAC,CAAC;QAEH,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,GAAG;;;EAGb,UAAU;GACT,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=class.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/bin/parts/class.ts"],"names":[],"mappings":""}
@@ -1,198 +0,0 @@
1
- const { enumToDartName } = require("./enum.js");
2
- const Field = require("./field.js");
3
- const { snakeToCamel } = require("./utils.js");
4
- const modelNameToDartName = (name) => {
5
- const modelName = name
6
- .split("_")
7
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
8
- .join("");
9
- return `${modelName}Model`;
10
- };
11
- class Class {
12
- name;
13
- fields;
14
- constructor({ name, fields }) {
15
- this.name = name;
16
- this.fields = fields;
17
- }
18
- toString() {
19
- return `
20
- class ${modelNameToDartName(this.name)} {
21
- ${this.getFields()}
22
-
23
- ${this.getConstructor()}
24
-
25
- ${this.getFromJson()}
26
-
27
- ${this.toJson()}
28
-
29
- ${this.copyWith()}
30
-
31
- ${this.toStr()}
32
- }`;
33
- }
34
- getFields() {
35
- return " " + this.fields.map((field) => field.toString()).join("\n ");
36
- }
37
- getConstructor() {
38
- return `
39
- ${modelNameToDartName(this.name)}({
40
- ${this.fields
41
- .map((field) => {
42
- return ` this.${snakeToCamel(field.field.name)}`;
43
- })
44
- .join(",\n")}
45
- });`;
46
- }
47
- getFromJson() {
48
- function parseFromJson(field) {
49
- const prismaField = field.field;
50
- let valueExpr = "";
51
- // Number types
52
- if (prismaField.type === "Int" || prismaField.type === "Float")
53
- valueExpr = `num.tryParse("\${json["${prismaField.name}"]}")`;
54
- // DateTime
55
- else if (prismaField.type === "DateTime")
56
- valueExpr = `json["${prismaField.name}"] != null ? DateTime.parse(json["${prismaField.name}"]) : null`;
57
- // scalar types
58
- else if (prismaField.kind === "scalar")
59
- valueExpr = `json["${prismaField.name}"]`;
60
- // Enum
61
- else if (prismaField.kind === "enum")
62
- valueExpr = `json["${prismaField.name}"] != null ? ${enumToDartName(prismaField.type.replace("[]", ""))}.fromText(json["${prismaField.name}"]) : null`;
63
- // Relation (another class, object or list of objects)
64
- else if (prismaField.relationName !== null)
65
- if (prismaField.isList)
66
- valueExpr = `json["${prismaField.name}"] != null
67
- ? List.from(json["${prismaField.name}"]).map((d) => ${modelNameToDartName(prismaField.type.replace("[]", ""))}.fromJson(d)).toList()
68
- : null`;
69
- else
70
- valueExpr = `json["${prismaField.name}"] != null
71
- ? ${modelNameToDartName(prismaField.type.replace("[]", ""))}.fromJson(json['${prismaField.name}'])
72
- : null`;
73
- // Fallback: Just assign and type-cast
74
- else
75
- valueExpr = `json["${prismaField.name}"] as ${prismaField.type}`;
76
- return valueExpr;
77
- }
78
- return `
79
- factory ${modelNameToDartName(this.name)}.fromJson(Map<String, dynamic> json) => ${modelNameToDartName(this.name)}(
80
- ${this.fields
81
- .map((field) => {
82
- return `${snakeToCamel(field.field.name)}: ${parseFromJson(field)},`;
83
- })
84
- .join("\n ")}
85
- );`;
86
- }
87
- toJson() {
88
- return `
89
- Map<String, dynamic> toJson() => {
90
- ${this.fields
91
- .map((field) => {
92
- const prismaField = field.field;
93
- const name = snakeToCamel(prismaField.name);
94
- let valueExpr = "";
95
- // DateTime
96
- if (prismaField.type === "DateTime")
97
- valueExpr = `${name}?.toIso8601String()`;
98
- // Scalar
99
- else if (prismaField.kind === "scalar")
100
- valueExpr = `${name}`;
101
- // Enum
102
- else if (prismaField.kind === "enum")
103
- valueExpr = `${name}?.text`;
104
- else if (prismaField.relationName !== null)
105
- if (prismaField.isList)
106
- valueExpr = `${snakeToCamel(prismaField.name)}?.map((d) => d.toJson()).toList()`;
107
- else
108
- valueExpr = `${name}?.toJson()`;
109
- // Fallback: Just assign and type-cast
110
- else
111
- valueExpr = `${name}`;
112
- return `if(${name} != null) '${prismaField.name}': ${valueExpr}`;
113
- })
114
- .join(",\n ")}
115
- };`;
116
- }
117
- copyWith() {
118
- function parseFromJson(field) {
119
- const prismaField = field.field;
120
- let valueExpr = "";
121
- // Number types
122
- if (prismaField.type === "Int" || prismaField.type === "Float")
123
- valueExpr = `json["${prismaField.name}"] != null ? num.tryParse("\${json["${prismaField.name}"]}") : ${snakeToCamel(field.field.name)}`;
124
- // JSON
125
- else if (prismaField.type === "Json")
126
- valueExpr = `json["${prismaField.name}"] != null ? Map<String, dynamic>.from(json["${prismaField.name}"]) : null`;
127
- else if (prismaField.type === "Json?")
128
- valueExpr = `json["${prismaField.name}"] != null ? Map<String, dynamic>.from(json["${prismaField.name}"]) : null`;
129
- // DateTime
130
- else if (prismaField.type === "DateTime")
131
- valueExpr = `json["${prismaField.name}"] != null ? DateTime.parse(json["${prismaField.name}"]) : null`;
132
- // scalar types
133
- else if (prismaField.kind === "scalar")
134
- valueExpr = `json["${prismaField.name}"] ?? ${snakeToCamel(field.field.name)}`;
135
- // Enum
136
- else if (prismaField.kind === "enum")
137
- valueExpr = `json["${prismaField.name}"] != null ? ${enumToDartName(prismaField.type.replace("[]", ""))}.fromText(json["${prismaField.name}"]) : null`;
138
- // Relation (another class, object or list of objects)
139
- else if (prismaField.relationName !== null)
140
- if (prismaField.isList)
141
- valueExpr = `json["${prismaField.name}"] != null
142
- ? List.from(json["${prismaField.name}"]).map((d) => ${modelNameToDartName(prismaField.type.replace("[]", ""))}.fromJson(d)).toList()
143
- : ${snakeToCamel(field.field.name)}`;
144
- else
145
- valueExpr = `json["${prismaField.name}"] != null
146
- ? ${modelNameToDartName(prismaField.type.replace("[]", ""))}.fromJson(json['${prismaField.name}'])
147
- : ${snakeToCamel(field.field.name)}`;
148
- // Fallback: Just assign and type-cast
149
- else
150
- valueExpr = `json["${prismaField.name}"] as ${prismaField.type}`;
151
- return valueExpr;
152
- }
153
- return `
154
- ${modelNameToDartName(this.name)} copyWith(Map<String, dynamic> json) => ${modelNameToDartName(this.name)}(
155
- ${this.fields
156
- .map((field) => {
157
- return `${snakeToCamel(field.field.name)}: ${parseFromJson(field)}`;
158
- })
159
- .join(",\n ")}
160
- );`;
161
- }
162
- toStr() {
163
- return `
164
- @override
165
- String toString() => """
166
- ${modelNameToDartName(this.name)}(
167
- ${this.fields
168
- .map((field) => {
169
- const prismaField = field.field;
170
- const name = snakeToCamel(prismaField.name);
171
- let valueExpr = "";
172
- // DateTime
173
- if (prismaField.type === "DateTime")
174
- valueExpr = `${name}?.toIso8601String()`;
175
- // Scalar
176
- else if (prismaField.kind === "scalar")
177
- valueExpr = `${name}`;
178
- // Enum
179
- else if (prismaField.kind === "enum")
180
- valueExpr = `${name}?.text`;
181
- else if (prismaField.relationName !== null)
182
- if (prismaField.isList)
183
- valueExpr = `${snakeToCamel(prismaField.name)}?.map((d) => d.toJson()).toList()`;
184
- else
185
- valueExpr = `${name}?.toJson()`;
186
- // Fallback: Just assign and type-cast
187
- else
188
- valueExpr = `${name}`;
189
- return `'${prismaField.name}': \${${valueExpr}}`;
190
- })
191
- .join(",\n ")}
192
- ) """;`;
193
- }
194
- }
195
- module.exports = Class;
196
- module.exports.modelNameToDartName = modelNameToDartName;
197
- export {};
198
- //# sourceMappingURL=class.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../src/bin/parts/class.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=enum.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../src/bin/parts/enum.ts"],"names":[],"mappings":""}
@@ -1,48 +0,0 @@
1
- const { snakeToCamel } = require("./utils.js");
2
- const enumToDartName = (name) => {
3
- const modelName = name
4
- .split("_")
5
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
6
- .join("");
7
- return `${modelName}Enum`;
8
- };
9
- class Enum {
10
- name;
11
- values;
12
- constructor({ name, values }) {
13
- this.name = name;
14
- this.values = values;
15
- }
16
- toString() {
17
- return `
18
- enum ${enumToDartName(this.name)} {
19
-
20
- ${this.values
21
- .map((value) => ` ${snakeToCamel(value)}("${value}")`)
22
- .join(",\n")};
23
-
24
- final String _text;
25
-
26
- const ${enumToDartName(this.name)}(String text):_text = text;
27
-
28
- static ${enumToDartName(this.name)}? fromText(String? value) {
29
- if(value == null) return null;
30
- try {
31
- return ${enumToDartName(this.name)}.values.firstWhere((v) => v._text == value);
32
- } catch (e) {
33
- return null;
34
- }
35
- }
36
-
37
- String get text => _text;
38
-
39
- @override
40
- String toString() => _text;
41
- }
42
- `;
43
- }
44
- }
45
- module.exports = Enum;
46
- module.exports.enumToDartName = enumToDartName;
47
- export {};
48
- //# sourceMappingURL=enum.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../src/bin/parts/enum.ts"],"names":[],"mappings":"AAAA,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE;IAC9C,MAAM,SAAS,GAAG,IAAI;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,GAAG,SAAS,MAAM,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,IAAI;IACD,IAAI,CAAS;IACb,MAAM,CAAW;IAExB,YAAY,EAAE,IAAI,EAAE,MAAM,EAAsC;QAC9D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,OAAO;OACJ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;IAE5B,IAAI,CAAC,MAAM;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;aACtD,IAAI,CAAC,KAAK,CAAC;;;;UAIN,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;WAExB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;;eAGrB,cAAc,CACrB,IAAI,CAAC,IAAI,CACV;;;;;;;;;;;CAWN,CAAC;IACA,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=field.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/bin/parts/field.ts"],"names":[],"mappings":""}
@@ -1,60 +0,0 @@
1
- const { modelNameToDartName } = require("./class.js");
2
- const { enumToDartName } = require("./enum.js");
3
- const { snakeToCamel } = require("./utils.js");
4
- const { PrismaField } = require("@prisma/dmmf");
5
- class Field {
6
- field;
7
- constructor(field) {
8
- this.field = field;
9
- }
10
- toString() {
11
- const type = getDartTypeFromPrismaType(this.field.type);
12
- const name = snakeToCamel(this.field.name);
13
- if (this.field.kind === "scalar")
14
- return `final ${type}? ${name};`;
15
- else if (this.field.isList)
16
- if (this.field.relationName !== null)
17
- return `final List<${modelNameToDartName(type.replace("[]", ""))}>? ${name};`;
18
- else
19
- return `final List<${type.replace("[]", "")}>? ${name};`;
20
- else if (this.field.kind === "enum")
21
- return `final ${enumToDartName(type.replace("[]", ""))}? ${name};`;
22
- else if (this.field.relationName !== null)
23
- return `final ${modelNameToDartName(type.replace("[]", ""))}? ${name};`;
24
- else
25
- return `final ${type}? ${name};`;
26
- }
27
- }
28
- const getDartTypeFromPrismaType = (type) => {
29
- switch (type) {
30
- case "String":
31
- return "String";
32
- case "String?":
33
- return "String?";
34
- case "Int":
35
- return "num";
36
- case "Int?":
37
- return "num?";
38
- case "Float":
39
- return "num";
40
- case "Float?":
41
- return "num?";
42
- case "Boolean":
43
- return "bool";
44
- case "Boolean?":
45
- return "bool?";
46
- case "DateTime":
47
- return "DateTime";
48
- case "DateTime?":
49
- return "DateTime?";
50
- case "Json":
51
- return "Map<String, dynamic>";
52
- case "Json?":
53
- return "Map<String, dynamic>?";
54
- default:
55
- return type;
56
- }
57
- };
58
- module.exports = Field;
59
- export {};
60
- //# sourceMappingURL=field.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/bin/parts/field.ts"],"names":[],"mappings":"AAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACtD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEhD,MAAM,KAAK;IACT,KAAK,CAAM;IAEX,YAAY,KAAyB;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,IAAI,KAAK,IAAI,GAAG,CAAC;aAC9D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YACxB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI;gBAClC,OAAO,cAAc,mBAAmB,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACvB,MAAM,IAAI,GAAG,CAAC;;gBACZ,OAAO,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,GAAG,CAAC;aAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YACjC,OAAO,SAAS,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;aAChE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI;YACvC,OAAO,SAAS,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;;YACrE,OAAO,SAAS,IAAI,KAAK,IAAI,GAAG,CAAC;IACxC,CAAC;CACF;AAED,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAU,EAAE;IACzD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,OAAO,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,sBAAsB,CAAC;QAChC,KAAK,OAAO;YACV,OAAO,uBAAuB,CAAC;QACjC;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/bin/parts/utils.ts"],"names":[],"mappings":""}
@@ -1,12 +0,0 @@
1
- const capitalize = (text) => text.substring(0, 1).toUpperCase() + text.substring(1).toLowerCase();
2
- const snakeToCamel = (text) => {
3
- if (!text.includes("_"))
4
- return text.toLowerCase();
5
- return text
6
- .split("_")
7
- .map((t, i) => (i == 0 ? t.toLowerCase() : capitalize(t)))
8
- .join("");
9
- };
10
- module.exports = { capitalize, snakeToCamel };
11
- export {};
12
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/bin/parts/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAClC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEvE,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;IACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAEnD,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}