prisma-kysely 1.4.1 → 1.5.0
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/README.md +37 -2
- package/dist/__test__/e2e.test.js +68 -0
- package/dist/__test__/e2e.test.js.map +1 -1
- package/dist/generator.js +6 -1
- package/dist/generator.js.map +1 -1
- package/dist/helpers/generateDatabaseType.js +3 -1
- package/dist/helpers/generateDatabaseType.js.map +1 -1
- package/dist/helpers/generateDatabaseType.test.js +1 -1
- package/dist/helpers/generateFieldType.js +7 -7
- package/dist/helpers/generateFieldType.js.map +1 -1
- package/dist/helpers/generateFile.js +1 -1
- package/dist/helpers/generateFile.js.map +1 -1
- package/dist/helpers/generateModel.js +7 -3
- package/dist/helpers/generateModel.js.map +1 -1
- package/dist/helpers/generateTypeOverrideFromDocumentation.js +43 -0
- package/dist/helpers/generateTypeOverrideFromDocumentation.js.map +1 -0
- package/dist/helpers/generateTypeOverrideFromDocumentation.test.js +33 -0
- package/dist/helpers/generateTypeOverrideFromDocumentation.test.js.map +1 -0
- package/dist/helpers/multiSchemaHelpers.js +27 -0
- package/dist/helpers/multiSchemaHelpers.js.map +1 -0
- package/dist/helpers/multiSchemaHelpers.test.js +42 -0
- package/dist/helpers/multiSchemaHelpers.test.js.map +1 -0
- package/dist/utils/validateConfig.js +8 -2
- package/dist/utils/validateConfig.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -83,6 +83,40 @@ hope it's just as useful for you! 😎
|
|
|
83
83
|
| `readOnlyIds` | Use Kysely's `GeneratedAlways` for `@id` fields with default values, preventing insert and update. |
|
|
84
84
|
| `[typename]TypeOverride` | Allows you to override the resulting TypeScript type for any Prisma type. Useful when targeting a different environment than Node (e.g. WinterCG compatible runtimes that use UInt8Arrays instead of Buffers for binary types etc.) Check out the [config validator](https://github.com/valtyr/prisma-kysely/blob/main/src/utils/validateConfig.ts) for a complete list of options. |
|
|
85
85
|
|
|
86
|
+
### Per-field type overrides
|
|
87
|
+
|
|
88
|
+
In some cases, you might want to override a type for a specific field. This
|
|
89
|
+
could be useful, for example, for constraining string types to certain literal
|
|
90
|
+
values. Be aware though that this does not of course come with any runtime
|
|
91
|
+
validation, and in most cases won't be guaranteed to match the actual data in
|
|
92
|
+
the database.
|
|
93
|
+
|
|
94
|
+
That disclaimer aside, here's how it works: Add a `@kyselyType(...)` declaration
|
|
95
|
+
to the Prisma docstring (deliniated using three slashes `///`) for the field
|
|
96
|
+
with your type inside the parentheses.
|
|
97
|
+
|
|
98
|
+
```prisma
|
|
99
|
+
model User {
|
|
100
|
+
id String @id
|
|
101
|
+
name String
|
|
102
|
+
|
|
103
|
+
/// @kyselyType('member' | 'admin')
|
|
104
|
+
role String
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The parentheses can include any valid TS type declaration.
|
|
109
|
+
|
|
110
|
+
The output for the example above would be as follows:
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
export type User = {
|
|
114
|
+
id: string;
|
|
115
|
+
name: string;
|
|
116
|
+
role: "member" | "owner";
|
|
117
|
+
};
|
|
118
|
+
```
|
|
119
|
+
|
|
86
120
|
### Gotchas
|
|
87
121
|
|
|
88
122
|
#### Default values
|
|
@@ -143,8 +177,9 @@ you can think of.
|
|
|
143
177
|
partly stolen from
|
|
144
178
|
[`prisma-dbml-generator`](https://github.com/notiz-dev/prisma-dbml-generator/blob/752f89cf40257a9698913294b38843ac742f8345/src/generator/many-to-many-tables.ts).
|
|
145
179
|
Many-too-many thanks to them!
|
|
146
|
-
- Jökull Sólberg ([@jokull](https://github.com/jokull)) for being this library's
|
|
147
|
-
main
|
|
180
|
+
- Igal Klebanov ([@igalklebanov](https://github.com/igalklebanov)) and Jökull Sólberg ([@jokull](https://github.com/jokull)) for being this library's
|
|
181
|
+
main proponents on Twitter!
|
|
182
|
+
- The authors and maintainers of Kysely ❤️🔥
|
|
148
183
|
|
|
149
184
|
```diff
|
|
150
185
|
+ Boyce-Codd gang unite! 💽
|
|
@@ -54,6 +54,37 @@ const exec = (0, util_1.promisify)(child_process_1.exec);
|
|
|
54
54
|
};`)).toBeTruthy();
|
|
55
55
|
(0, vitest_1.expect)(generatedSource.includes("_SprocketToTestUser: SprocketToTestUser")).toBeTruthy();
|
|
56
56
|
}, { timeout: 20000 });
|
|
57
|
+
(0, vitest_1.test)("End to end test - with custom type override", async () => {
|
|
58
|
+
await exec("yarn prisma init --datasource-provider sqlite");
|
|
59
|
+
await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
|
|
60
|
+
provider = "sqlite"
|
|
61
|
+
url = "file:./dev.db"
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
generator kysely {
|
|
65
|
+
provider = "node ./dist/bin.js"
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
model TestUser {
|
|
69
|
+
id String @id
|
|
70
|
+
name String
|
|
71
|
+
|
|
72
|
+
/// @kyselyType('member' | 'owner')
|
|
73
|
+
role String
|
|
74
|
+
}`);
|
|
75
|
+
await exec("yarn prisma generate");
|
|
76
|
+
const generatedSource = await promises_1.default.readFile("./prisma/generated/types.ts", {
|
|
77
|
+
encoding: "utf-8",
|
|
78
|
+
});
|
|
79
|
+
(0, vitest_1.expect)(generatedSource.includes(`export type TestUser = {
|
|
80
|
+
id: string;
|
|
81
|
+
name: string;
|
|
82
|
+
/**
|
|
83
|
+
* @kyselyType('member' | 'owner')
|
|
84
|
+
*/
|
|
85
|
+
role: "member" | "owner";
|
|
86
|
+
};`)).toBeTruthy();
|
|
87
|
+
}, { timeout: 20000 });
|
|
57
88
|
(0, vitest_1.test)("End to end test - separate entrypoints", async () => {
|
|
58
89
|
await exec("yarn prisma init --datasource-provider mysql");
|
|
59
90
|
await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
|
|
@@ -126,4 +157,41 @@ export type TestEnum = (typeof TestEnum)[keyof typeof TestEnum];
|
|
|
126
157
|
encoding: "utf-8",
|
|
127
158
|
})).rejects.toThrow();
|
|
128
159
|
}, { timeout: 20000 });
|
|
160
|
+
(0, vitest_1.test)("End to end test - multi-schema support", async () => {
|
|
161
|
+
await exec("yarn prisma init --datasource-provider postgresql");
|
|
162
|
+
await promises_1.default.writeFile("./prisma/schema.prisma", `generator kysely {
|
|
163
|
+
provider = "node ./dist/bin.js"
|
|
164
|
+
previewFeatures = ["multiSchema"]
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
datasource db {
|
|
168
|
+
provider = "postgresql"
|
|
169
|
+
schemas = ["mammals", "birds"]
|
|
170
|
+
url = env("TEST_DATABASE_URL")
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
model Elephant {
|
|
174
|
+
id Int @id
|
|
175
|
+
name String
|
|
176
|
+
|
|
177
|
+
@@map("elephants")
|
|
178
|
+
@@schema("mammals")
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
model Eagle {
|
|
182
|
+
id Int @id
|
|
183
|
+
name String
|
|
184
|
+
|
|
185
|
+
@@map("eagles")
|
|
186
|
+
@@schema("birds")
|
|
187
|
+
}`);
|
|
188
|
+
await exec("yarn prisma generate");
|
|
189
|
+
const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
|
|
190
|
+
encoding: "utf-8",
|
|
191
|
+
});
|
|
192
|
+
(0, vitest_1.expect)(typeFile).toContain(`export type DB = {
|
|
193
|
+
"birds.eagles": Eagle;
|
|
194
|
+
"mammals.elephants": Elephant;
|
|
195
|
+
};`);
|
|
196
|
+
}, { timeout: 20000 });
|
|
129
197
|
//# sourceMappingURL=e2e.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2e.test.js","sourceRoot":"","sources":["../../src/__test__/e2e.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"e2e.test.js","sourceRoot":"","sources":["../../src/__test__/e2e.test.ts"],"names":[],"mappings":"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"}
|
package/dist/generator.js
CHANGED
|
@@ -14,6 +14,7 @@ const sorted_1 = require("./utils/sorted");
|
|
|
14
14
|
const validateConfig_1 = require("./utils/validateConfig");
|
|
15
15
|
const writeFileSafely_1 = require("./utils/writeFileSafely");
|
|
16
16
|
const generateEnumType_1 = require("./helpers/generateEnumType");
|
|
17
|
+
const multiSchemaHelpers_1 = require("./helpers/multiSchemaHelpers");
|
|
17
18
|
const { version } = require("../package.json");
|
|
18
19
|
(0, generator_helper_1.generatorHandler)({
|
|
19
20
|
onManifest() {
|
|
@@ -24,6 +25,7 @@ const { version } = require("../package.json");
|
|
|
24
25
|
};
|
|
25
26
|
},
|
|
26
27
|
onGenerate: async (options) => {
|
|
28
|
+
var _a;
|
|
27
29
|
const config = (0, validateConfig_1.validateConfig)({
|
|
28
30
|
...options.generator.config,
|
|
29
31
|
databaseProvider: options.datasources[0].provider,
|
|
@@ -32,7 +34,10 @@ const { version } = require("../package.json");
|
|
|
32
34
|
return (0, generateEnumType_1.generateEnumType)(name, values);
|
|
33
35
|
});
|
|
34
36
|
const implicitManyToManyModels = (0, generateImplicitManyToManyModels_1.generateImplicitManyToManyModels)(options.dmmf.datamodel.models);
|
|
35
|
-
|
|
37
|
+
let models = (0, sorted_1.sorted)([...options.dmmf.datamodel.models, ...implicitManyToManyModels], (a, b) => a.name.localeCompare(b.name)).map((m) => (0, generateModel_1.generateModel)(m, config));
|
|
38
|
+
if ((_a = options.generator.previewFeatures) === null || _a === void 0 ? void 0 : _a.includes("multiSchema")) {
|
|
39
|
+
models = (0, multiSchemaHelpers_1.convertToMultiSchemaModels)(models, options.datamodel);
|
|
40
|
+
}
|
|
36
41
|
const databaseType = (0, generateDatabaseType_1.generateDatabaseType)(models.map((m) => ({ tableName: m.tableName, typeName: m.typeName })), config);
|
|
37
42
|
const files = (0, generateFiles_1.generateFiles)({
|
|
38
43
|
databaseType,
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;;;;AACA,+DAA4D;AAC5D,gDAAwB;AAExB,2CAA6C;AAC7C,yEAAsE;AACtE,2DAAwD;AACxD,iGAA8F;AAC9F,2DAAwD;AACxD,2CAAwC;AACxC,2DAAwD;AACxD,6DAA0D;AAE1D,iEAA8D;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,10 @@ exports.generateDatabaseType = void 0;
|
|
|
7
7
|
const typescript_1 = __importDefault(require("typescript"));
|
|
8
8
|
const isValidTSIdentifier_1 = __importDefault(require("../utils/isValidTSIdentifier"));
|
|
9
9
|
const normalizeCase_1 = require("../utils/normalizeCase");
|
|
10
|
+
const sorted_1 = require("../utils/sorted");
|
|
10
11
|
const generateDatabaseType = (models, config) => {
|
|
11
|
-
const
|
|
12
|
+
const sortedModels = (0, sorted_1.sorted)(models, (a, b) => a.tableName.localeCompare(b.tableName));
|
|
13
|
+
const properties = sortedModels.map((field) => {
|
|
12
14
|
const caseNormalizedTableName = (0, normalizeCase_1.normalizeCase)(field.tableName, config);
|
|
13
15
|
const nameIdentifier = (0, isValidTSIdentifier_1.default)(caseNormalizedTableName)
|
|
14
16
|
? typescript_1.default.factory.createIdentifier(caseNormalizedTableName)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateDatabaseType.js","sourceRoot":"","sources":["../../src/helpers/generateDatabaseType.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAE5B,uFAA8D;AAC9D,0DAAsD;
|
|
1
|
+
{"version":3,"file":"generateDatabaseType.js","sourceRoot":"","sources":["../../src/helpers/generateDatabaseType.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAE5B,uFAA8D;AAC9D,0DAAsD;AACtD,4CAAwC;AAGjC,MAAM,oBAAoB,GAAG,CAClC,MAAiD,EACjD,MAAc,EACd,EAAE;IACF,MAAM,YAAY,GAAG,IAAA,eAAM,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3C,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CACvC,CAAC;IAEF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,MAAM,uBAAuB,GAAG,IAAA,6BAAa,EAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAMvE,MAAM,cAAc,GAAG,IAAA,6BAAmB,EAAC,uBAAuB,CAAC;YACjE,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;YACtD,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QAE5D,OAAO,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CACvC,SAAS,EACT,cAAc,EACd,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAChC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC3C,SAAS,CACV,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,oBAAE,CAAC,OAAO,CAAC,0BAA0B,CAC1C,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EACxD,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAC7C,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,oBAAoB,wBAqC/B"}
|
|
@@ -56,8 +56,8 @@ const testUtils_1 = require("../utils/testUtils");
|
|
|
56
56
|
const result = (0, testUtils_1.stringifyTsNode)(node);
|
|
57
57
|
(0, vitest_1.expect)(result).toEqual(`export type DB = {
|
|
58
58
|
Bookmark: Bookmark;
|
|
59
|
-
"user session_*table ;D": Session;
|
|
60
59
|
User: User;
|
|
60
|
+
"user session_*table ;D": Session;
|
|
61
61
|
};`);
|
|
62
62
|
});
|
|
63
63
|
//# sourceMappingURL=generateDatabaseType.test.js.map
|
|
@@ -61,21 +61,21 @@ const overrideType = (type, config) => {
|
|
|
61
61
|
}
|
|
62
62
|
};
|
|
63
63
|
exports.overrideType = overrideType;
|
|
64
|
-
const generateFieldTypeInner = (type, config) => {
|
|
64
|
+
const generateFieldTypeInner = (type, config, typeOverride) => {
|
|
65
65
|
switch (config.databaseProvider) {
|
|
66
66
|
case "sqlite":
|
|
67
|
-
return (0, exports.overrideType)(type, config) || exports.sqliteTypeMap[type];
|
|
67
|
+
return typeOverride || (0, exports.overrideType)(type, config) || exports.sqliteTypeMap[type];
|
|
68
68
|
case "mysql":
|
|
69
|
-
return (0, exports.overrideType)(type, config) || exports.mysqlTypeMap[type];
|
|
69
|
+
return typeOverride || (0, exports.overrideType)(type, config) || exports.mysqlTypeMap[type];
|
|
70
70
|
case "postgresql":
|
|
71
|
-
return (0, exports.overrideType)(type, config) || exports.postgresqlTypeMap[type];
|
|
71
|
+
return (typeOverride || (0, exports.overrideType)(type, config) || exports.postgresqlTypeMap[type]);
|
|
72
72
|
case "cockroachdb":
|
|
73
|
-
return (0, exports.overrideType)(type, config) || exports.postgresqlTypeMap[type];
|
|
73
|
+
return (typeOverride || (0, exports.overrideType)(type, config) || exports.postgresqlTypeMap[type]);
|
|
74
74
|
}
|
|
75
75
|
};
|
|
76
76
|
exports.generateFieldTypeInner = generateFieldTypeInner;
|
|
77
|
-
const generateFieldType = (type, config) => {
|
|
78
|
-
const fieldType = (0, exports.generateFieldTypeInner)(type, config);
|
|
77
|
+
const generateFieldType = (type, config, typeOverride) => {
|
|
78
|
+
const fieldType = (0, exports.generateFieldTypeInner)(type, config, typeOverride || null);
|
|
79
79
|
if (!fieldType)
|
|
80
80
|
throw new Error(`Unsupported type ${type} for database ${config.databaseProvider}`);
|
|
81
81
|
return fieldType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateFieldType.js","sourceRoot":"","sources":["../../src/helpers/generateFieldType.ts"],"names":[],"mappings":";;;AAgBa,QAAA,aAAa,GAAY;IACpC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,SAAS;CACvB,CAAC;AAEW,QAAA,YAAY,GAAY;IACnC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,SAAS;CACvB,CAAC;AAEW,QAAA,iBAAiB,GAAY;IACxC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,SAAS;CACvB,CAAC;AAEK,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;IAC3D,QAAQ,IAAI,EAAE;QACZ,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,kBAAkB,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,oBAAoB,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,mBAAmB,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,kBAAkB,CAAC;QACnC,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,eAAe,CAAC;QAChC,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAClC,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,mBAAmB,CAAC;QACpC,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,gBAAgB,CAAC;QACjC,KAAK,aAAa;YAChB,OAAO,MAAM,CAAC,uBAAuB,CAAC;KACzC;AACH,CAAC,CAAC;AAvBW,QAAA,YAAY,gBAuBvB;AAEK,MAAM,sBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"generateFieldType.js","sourceRoot":"","sources":["../../src/helpers/generateFieldType.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ const printer = typescript_1.default.createPrinter({ newLine: typescript_1.defau
|
|
|
9
9
|
const generateFile = (statements, { withEnumImport, withLeader }) => {
|
|
10
10
|
const file = typescript_1.default.factory.createSourceFile(statements, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EndOfFileToken), typescript_1.default.NodeFlags.None);
|
|
11
11
|
const result = printer.printFile(file);
|
|
12
|
-
const leader = `import type { ColumnType, GeneratedAlways } from "kysely";
|
|
12
|
+
const leader = `import type { ColumnType${result.includes("GeneratedAlways") ? ", GeneratedAlways" : ""} } from "kysely";
|
|
13
13
|
export type Generated<T> = T extends ColumnType<infer S, infer I, infer U>
|
|
14
14
|
? ColumnType<S, I | undefined, U>
|
|
15
15
|
: ColumnType<T, T | undefined, T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateFile.js","sourceRoot":"","sources":["../../src/helpers/generateFile.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAE5B,MAAM,OAAO,GAAG,oBAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,oBAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;AAOhE,MAAM,YAAY,GAAG,CAC1B,UAAmC,EACnC,EAAE,cAAc,EAAE,UAAU,EAAW,EACvC,EAAE;IACF,MAAM,IAAI,GAAG,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CACtC,UAAU,EACV,oBAAE,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EACpD,oBAAE,CAAC,SAAS,CAAC,IAAI,CAClB,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG;;;;
|
|
1
|
+
{"version":3,"file":"generateFile.js","sourceRoot":"","sources":["../../src/helpers/generateFile.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAE5B,MAAM,OAAO,GAAG,oBAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,oBAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;AAOhE,MAAM,YAAY,GAAG,CAC1B,UAAmC,EACnC,EAAE,cAAc,EAAE,UAAU,EAAW,EACvC,EAAE;IACF,MAAM,IAAI,GAAG,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CACtC,UAAU,EACV,oBAAE,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EACpD,oBAAE,CAAC,SAAS,CAAC,IAAI,CAClB,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,2BACb,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAC7D;;;;wEAIsE,CAAC;IAEvE,IAAI,cAAc,EAAE;QAClB,MAAM,mBAAmB,GAAG,iBAAiB,cAAc,CAAC,KAAK,CAAC,IAAI,CACpE,IAAI,CACL,YAAY,cAAc,CAAC,UAAU,IAAI,CAAC;QAE3C,OAAO,UAAU;YACf,CAAC,CAAC,GAAG,MAAM,OAAO,mBAAmB,OAAO,MAAM,EAAE;YACpD,CAAC,CAAC,GAAG,mBAAmB,OAAO,MAAM,EAAE,CAAC;KAC3C;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACxD,CAAC,CAAC;AA/BW,QAAA,YAAY,gBA+BvB"}
|
|
@@ -7,6 +7,7 @@ exports.generateModel = void 0;
|
|
|
7
7
|
const typescript_1 = __importDefault(require("typescript"));
|
|
8
8
|
const generateField_1 = require("./generateField");
|
|
9
9
|
const generateFieldType_1 = require("./generateFieldType");
|
|
10
|
+
const generateTypeOverrideFromDocumentation_1 = require("./generateTypeOverrideFromDocumentation");
|
|
10
11
|
const normalizeCase_1 = require("../utils/normalizeCase");
|
|
11
12
|
const defaultTypesImplementedInJS = ["cuid", "uuid"];
|
|
12
13
|
const generateModel = (model, config) => {
|
|
@@ -15,12 +16,16 @@ const generateModel = (model, config) => {
|
|
|
15
16
|
!(typeof field.default === "object" &&
|
|
16
17
|
"name" in field.default &&
|
|
17
18
|
defaultTypesImplementedInJS.includes(field.default.name));
|
|
19
|
+
const typeOverride = field.documentation
|
|
20
|
+
? (0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(field.documentation)
|
|
21
|
+
: null;
|
|
18
22
|
if (field.kind === "object" || field.kind === "unsupported")
|
|
19
23
|
return [];
|
|
24
|
+
const dbName = typeof field.dbName === "string" ? field.dbName : null;
|
|
20
25
|
if (field.kind === "enum") {
|
|
21
26
|
return (0, generateField_1.generateField)({
|
|
22
27
|
isId: field.isId,
|
|
23
|
-
name: field.name,
|
|
28
|
+
name: (0, normalizeCase_1.normalizeCase)(dbName || field.name, config),
|
|
24
29
|
type: typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier(field.type), undefined),
|
|
25
30
|
nullable: !field.isRequired,
|
|
26
31
|
generated: isGenerated,
|
|
@@ -29,10 +34,9 @@ const generateModel = (model, config) => {
|
|
|
29
34
|
config,
|
|
30
35
|
});
|
|
31
36
|
}
|
|
32
|
-
const dbName = typeof field.dbName === "string" ? field.dbName : null;
|
|
33
37
|
return (0, generateField_1.generateField)({
|
|
34
38
|
name: (0, normalizeCase_1.normalizeCase)(dbName || field.name, config),
|
|
35
|
-
type: typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier((0, generateFieldType_1.generateFieldType)(field.type, config)), undefined),
|
|
39
|
+
type: typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier((0, generateFieldType_1.generateFieldType)(field.type, config, typeOverride)), undefined),
|
|
36
40
|
nullable: !field.isRequired,
|
|
37
41
|
generated: isGenerated,
|
|
38
42
|
list: field.isList,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateModel.js","sourceRoot":"","sources":["../../src/helpers/generateModel.ts"],"names":[],"mappings":";;;;;;AACA,4DAA4B;AAE5B,mDAAwD;AACxD,2DAAgE;AAChE,0DAAsD;AAQtD,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,MAAc,EAAE,EAAE;IACjE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAChD,MAAM,WAAW,GACf,KAAK,CAAC,eAAe;YACrB,CAAC,CACC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBACjC,MAAM,IAAI,KAAK,CAAC,OAAO;gBACvB,2BAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACzD,CAAC;QAEJ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"generateModel.js","sourceRoot":"","sources":["../../src/helpers/generateModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateTypeOverrideFromDocumentation = void 0;
|
|
4
|
+
const START_LEXEME = "@kyselyType(";
|
|
5
|
+
const generateTypeOverrideFromDocumentation = (documentation) => {
|
|
6
|
+
const tokens = documentation.split("");
|
|
7
|
+
let matchState = null;
|
|
8
|
+
let parentheses = 0;
|
|
9
|
+
let i = 0;
|
|
10
|
+
while (i < documentation.length) {
|
|
11
|
+
const currentToken = tokens[i];
|
|
12
|
+
if (matchState) {
|
|
13
|
+
if (currentToken === ")" && parentheses === 0)
|
|
14
|
+
return matchState.tokens.join("");
|
|
15
|
+
if (currentToken === ")")
|
|
16
|
+
parentheses--;
|
|
17
|
+
if (currentToken === "(")
|
|
18
|
+
parentheses++;
|
|
19
|
+
matchState.tokens.push(currentToken);
|
|
20
|
+
i++;
|
|
21
|
+
if (i === documentation.length) {
|
|
22
|
+
i = matchState.startLocation + 1;
|
|
23
|
+
matchState = null;
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (currentToken === "@") {
|
|
29
|
+
const isMatch = tokens.slice(i, i + START_LEXEME.length).join("") === START_LEXEME;
|
|
30
|
+
if (!isMatch) {
|
|
31
|
+
i++;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
matchState = { tokens: [], startLocation: i };
|
|
35
|
+
i += START_LEXEME.length;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
i++;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
};
|
|
42
|
+
exports.generateTypeOverrideFromDocumentation = generateTypeOverrideFromDocumentation;
|
|
43
|
+
//# sourceMappingURL=generateTypeOverrideFromDocumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTypeOverrideFromDocumentation.js","sourceRoot":"","sources":["../../src/helpers/generateTypeOverrideFromDocumentation.ts"],"names":[],"mappings":";;;AAAA,MAAM,YAAY,GAAG,cAAc,CAAC;AAS7B,MAAM,qCAAqC,GAAG,CACnD,aAAqB,EACrB,EAAE;IACF,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEvC,IAAI,UAAU,GAAuD,IAAI,CAAC;IAC1E,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAG/B,IAAI,UAAU,EAAE;YAGd,IAAI,YAAY,KAAK,GAAG,IAAI,WAAW,KAAK,CAAC;gBAC3C,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAIpC,IAAI,YAAY,KAAK,GAAG;gBAAE,WAAW,EAAE,CAAC;YACxC,IAAI,YAAY,KAAK,GAAG;gBAAE,WAAW,EAAE,CAAC;YAGxC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAErC,CAAC,EAAE,CAAC;YAKJ,IAAI,CAAC,KAAK,aAAa,CAAC,MAAM,EAAE;gBAC9B,CAAC,GAAG,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;gBACjC,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;aACV;YAED,SAAS;SACV;QAID,IAAI,YAAY,KAAK,GAAG,EAAE;YACxB,MAAM,OAAO,GACX,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC;YAGrE,IAAI,CAAC,OAAO,EAAE;gBACZ,CAAC,EAAE,CAAC;gBACJ,SAAS;aACV;YAGD,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;YAC9C,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC;YAEzB,SAAS;SACV;QAED,CAAC,EAAE,CAAC;KACL;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA/DW,QAAA,qCAAqC,yCA+DhD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const generateTypeOverrideFromDocumentation_1 = require("./generateTypeOverrideFromDocumentation");
|
|
5
|
+
(0, vitest_1.test)("finds a type override", () => {
|
|
6
|
+
const docString = "this is some property \n here is the type override @kyselyType('admin' | 'member') ";
|
|
7
|
+
(0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual("'admin' | 'member'");
|
|
8
|
+
});
|
|
9
|
+
(0, vitest_1.test)("supports parentheses in type", () => {
|
|
10
|
+
const docString = "this is some property \n here is the type override @kyselyType(('admin' | 'member')) ";
|
|
11
|
+
(0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual("('admin' | 'member')");
|
|
12
|
+
});
|
|
13
|
+
(0, vitest_1.test)("reacts correctly to unbalanced parens", () => {
|
|
14
|
+
const docString = "this is some property \n here is the type override @kyselyType(('admin' | 'member') ";
|
|
15
|
+
(0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual(null);
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.test)("reacts correctly to extra parens", () => {
|
|
18
|
+
const docString = "this is some property \n here is the type override @kyselyType(('admin' | 'member'))) ";
|
|
19
|
+
(0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual("('admin' | 'member')");
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.test)("finds type following incomplete one", () => {
|
|
22
|
+
const docString = "this is some property \n here is the type @kyselyType( override @kyselyType('admin' | 'member') ";
|
|
23
|
+
(0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual("'admin' | 'member'");
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.test)("doesn't do anything in case of no type", () => {
|
|
26
|
+
const docString = "this is some property with no override";
|
|
27
|
+
(0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual(null);
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.test)("bails when we have an at sign and no match", () => {
|
|
30
|
+
const docString = "hit me up at squiggly@goofy.af";
|
|
31
|
+
(0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual(null);
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=generateTypeOverrideFromDocumentation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTypeOverrideFromDocumentation.test.js","sourceRoot":"","sources":["../../src/helpers/generateTypeOverrideFromDocumentation.test.ts"],"names":[],"mappings":";;AAAA,mCAAsC;AAEtC,mGAAgG;AAEhG,IAAA,aAAI,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,MAAM,SAAS,GACb,qFAAqF,CAAC;IAExF,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,oBAAoB,CACrB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;IACxC,MAAM,SAAS,GACb,uFAAuF,CAAC;IAE1F,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,sBAAsB,CACvB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,MAAM,SAAS,GACb,sFAAsF,CAAC;IAEzF,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,kCAAkC,EAAE,GAAG,EAAE;IAC5C,MAAM,SAAS,GACb,wFAAwF,CAAC;IAE3F,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,sBAAsB,CACvB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,qCAAqC,EAAE,GAAG,EAAE;IAC/C,MAAM,SAAS,GACb,kGAAkG,CAAC;IAErG,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,oBAAoB,CACrB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,SAAS,GAAG,wCAAwC,CAAC;IAE3D,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,4CAA4C,EAAE,GAAG,EAAE;IACtD,MAAM,SAAS,GAAG,gCAAgC,CAAC;IAEnD,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertToMultiSchemaModels = void 0;
|
|
4
|
+
const prisma_ast_1 = require("@mrleebo/prisma-ast");
|
|
5
|
+
const convertToMultiSchemaModels = (models, dataModelStr) => {
|
|
6
|
+
const parsedSchema = (0, prisma_ast_1.getSchema)(dataModelStr);
|
|
7
|
+
const multiSchemaMap = new Map(parsedSchema.list
|
|
8
|
+
.filter((block) => block.type === "model")
|
|
9
|
+
.map((model) => {
|
|
10
|
+
var _a;
|
|
11
|
+
const schemaProperty = model.properties.find((prop) => prop.type === "attribute" && prop.name === "schema");
|
|
12
|
+
const schemaName = (_a = schemaProperty === null || schemaProperty === void 0 ? void 0 : schemaProperty.args) === null || _a === void 0 ? void 0 : _a[0].value;
|
|
13
|
+
if (typeof schemaName !== "string") {
|
|
14
|
+
return [model.name, ""];
|
|
15
|
+
}
|
|
16
|
+
return [model.name, schemaName.replace(/"/g, "")];
|
|
17
|
+
}));
|
|
18
|
+
return models.map((model) => {
|
|
19
|
+
const schemaName = multiSchemaMap.get(model.typeName);
|
|
20
|
+
if (!schemaName) {
|
|
21
|
+
return model;
|
|
22
|
+
}
|
|
23
|
+
return { ...model, tableName: `${schemaName}.${model.tableName}` };
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
exports.convertToMultiSchemaModels = convertToMultiSchemaModels;
|
|
27
|
+
//# sourceMappingURL=multiSchemaHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiSchemaHelpers.js","sourceRoot":"","sources":["../../src/helpers/multiSchemaHelpers.ts"],"names":[],"mappings":";;;AAAA,oDAI6B;AAoBtB,MAAM,0BAA0B,GAAG,CACxC,MAAW,EACX,YAAoB,EACf,EAAE;IACP,MAAM,YAAY,GAAG,IAAA,sBAAS,EAAC,YAAY,CAAC,CAAC;IAE7C,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,YAAY,CAAC,IAAI;SACd,MAAM,CAAC,CAAC,KAAK,EAAkB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;SACzD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;;QACb,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAC1C,CAAC,IAAI,EAA0B,EAAE,CAC/B,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CACtD,CAAC;QAEF,MAAM,UAAU,GAAG,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,0CAAG,CAAC,EAAE,KAAK,CAAC;QAEnD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACzB;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CACL,CAAC;IAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QAED,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,UAAU,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAlCW,QAAA,0BAA0B,8BAkCrC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const multiSchemaHelpers_1 = require("./multiSchemaHelpers");
|
|
5
|
+
const testDataModel = `generator kysely {
|
|
6
|
+
provider = "node ./dist/bin.js"
|
|
7
|
+
previewFeatures = ["multiSchema"]
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
datasource db {
|
|
11
|
+
provider = "postgresql"
|
|
12
|
+
schemas = ["mammals", "birds"]
|
|
13
|
+
url = env("TEST_DATABASE_URL")
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
model Elephant {
|
|
17
|
+
id Int @id
|
|
18
|
+
name String
|
|
19
|
+
|
|
20
|
+
@@map("elephants")
|
|
21
|
+
@@schema("mammals")
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
model Eagle {
|
|
25
|
+
id Int @id
|
|
26
|
+
name String
|
|
27
|
+
|
|
28
|
+
@@map("eagles")
|
|
29
|
+
@@schema("birds")
|
|
30
|
+
}`;
|
|
31
|
+
(0, vitest_1.test)("returns a list of models with schemas appended to the table name", () => {
|
|
32
|
+
const initialModels = [
|
|
33
|
+
{ typeName: "Elephant", tableName: "elephants" },
|
|
34
|
+
{ typeName: "Eagle", tableName: "eagles" },
|
|
35
|
+
];
|
|
36
|
+
const result = (0, multiSchemaHelpers_1.convertToMultiSchemaModels)(initialModels, testDataModel);
|
|
37
|
+
(0, vitest_1.expect)(result).toEqual([
|
|
38
|
+
{ typeName: "Elephant", tableName: "mammals.elephants" },
|
|
39
|
+
{ typeName: "Eagle", tableName: "birds.eagles" },
|
|
40
|
+
]);
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=multiSchemaHelpers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiSchemaHelpers.test.js","sourceRoot":"","sources":["../../src/helpers/multiSchemaHelpers.test.ts"],"names":[],"mappings":";;AAAA,mCAAsC;AAEtC,6DAAkE;AAElE,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpB,CAAC;AAEH,IAAA,aAAI,EAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,MAAM,aAAa,GAAG;QACpB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE;QAChD,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;KAC3C,CAAC;IAEF,MAAM,MAAM,GAAG,IAAA,+CAA0B,EAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAExE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE;QACxD,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;KACjD,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -22,7 +22,7 @@ exports.configValidator = zod_1.default
|
|
|
22
22
|
zod_1.default.literal("sqlite"),
|
|
23
23
|
]),
|
|
24
24
|
fileName: zod_1.default.string().optional().default("types.ts"),
|
|
25
|
-
enumFileName: zod_1.default.string().optional()
|
|
25
|
+
enumFileName: zod_1.default.string().optional(),
|
|
26
26
|
stringTypeOverride: zod_1.default.string().optional(),
|
|
27
27
|
booleanTypeOverride: zod_1.default.string().optional(),
|
|
28
28
|
intTypeOverride: zod_1.default.string().optional(),
|
|
@@ -36,7 +36,13 @@ exports.configValidator = zod_1.default
|
|
|
36
36
|
camelCase: booleanStringLiteral.default(false),
|
|
37
37
|
readOnlyIds: booleanStringLiteral.default(false),
|
|
38
38
|
})
|
|
39
|
-
.strict()
|
|
39
|
+
.strict()
|
|
40
|
+
.transform((config) => {
|
|
41
|
+
if (!config.enumFileName) {
|
|
42
|
+
config.enumFileName = config.fileName;
|
|
43
|
+
}
|
|
44
|
+
return config;
|
|
45
|
+
});
|
|
40
46
|
const validateConfig = (config) => {
|
|
41
47
|
const parsed = exports.configValidator.safeParse(config);
|
|
42
48
|
if (!parsed.success) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateConfig.js","sourceRoot":"","sources":["../../src/utils/validateConfig.ts"],"names":[],"mappings":";;;;;;AAAA,iDAA2C;AAC3C,8CAAoB;AAEpB,MAAM,oBAAoB,GAAG,aAAC;KAC3B,KAAK,CAAC,CAAC,aAAC,CAAC,OAAO,EAAE,EAAE,aAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,aAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KAC3D,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACzC,OAAO,GAAG,KAAK,MAAM,CAAC;AACxB,CAAC,CAAC,CAAC;AAEQ,QAAA,eAAe,GAAG,aAAC;KAC7B,MAAM,CAAC;IAEN,gBAAgB,EAAE,aAAC,CAAC,KAAK,CAAC;QACxB,aAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QACvB,aAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QACxB,aAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAClB,aAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;KACpB,CAAC;IAGF,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IACnD,YAAY,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE
|
|
1
|
+
{"version":3,"file":"validateConfig.js","sourceRoot":"","sources":["../../src/utils/validateConfig.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"repository": {
|
|
5
5
|
"url": "https://github.com/valtyr/prisma-kysely"
|
|
6
6
|
},
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.5.0",
|
|
8
8
|
"main": "dist/generator.js",
|
|
9
9
|
"files": [
|
|
10
10
|
"dist"
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"edit": "code ."
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
+
"@mrleebo/prisma-ast": "^0.6.0",
|
|
29
30
|
"@prisma/generator-helper": "4.13.0",
|
|
30
31
|
"@prisma/internals": "4.13.0",
|
|
31
32
|
"typescript": "4.6.2",
|
|
@@ -40,18 +41,18 @@
|
|
|
40
41
|
"@types/prettier": "2.4.2",
|
|
41
42
|
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
|
42
43
|
"@typescript-eslint/parser": "^5.54.0",
|
|
43
|
-
"@vitest/coverage-
|
|
44
|
+
"@vitest/coverage-v8": "^0.32.2",
|
|
44
45
|
"better-sqlite3": "^8.2.0",
|
|
45
46
|
"eslint": "^8.35.0",
|
|
46
47
|
"kysely": "^0.23.4",
|
|
47
48
|
"mysql2": "^3.2.0",
|
|
48
49
|
"pg": "^8.10.0",
|
|
49
50
|
"prettier": "^2.8.4",
|
|
50
|
-
"prisma": "4.
|
|
51
|
+
"prisma": "4.16.2",
|
|
51
52
|
"ttypescript": "^1.5.15",
|
|
52
53
|
"typescript-transform-paths": "^3.4.6",
|
|
53
54
|
"vite-tsconfig-paths": "^4.0.7",
|
|
54
|
-
"vitest": "^0.
|
|
55
|
+
"vitest": "^0.32.2"
|
|
55
56
|
},
|
|
56
57
|
"prettier": {
|
|
57
58
|
"importOrder": [
|