prisma-effect-kysely 1.5.0 → 1.5.2

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/CHANGELOG.md +64 -0
  2. package/dist/effect/generator.d.ts +5 -0
  3. package/dist/effect/generator.d.ts.map +1 -1
  4. package/dist/effect/generator.js +9 -0
  5. package/dist/effect/generator.js.map +1 -1
  6. package/dist/effect/join-table.d.ts +13 -0
  7. package/dist/effect/join-table.d.ts.map +1 -0
  8. package/dist/effect/join-table.js +54 -0
  9. package/dist/effect/join-table.js.map +1 -0
  10. package/dist/generator/index.js +1 -1
  11. package/dist/generator/orchestrator.d.ts.map +1 -1
  12. package/dist/generator/orchestrator.js +10 -3
  13. package/dist/generator/orchestrator.js.map +1 -1
  14. package/dist/kysely/generator.d.ts +3 -2
  15. package/dist/kysely/generator.d.ts.map +1 -1
  16. package/dist/kysely/generator.js +3 -3
  17. package/dist/kysely/generator.js.map +1 -1
  18. package/dist/kysely/type.d.ts +7 -2
  19. package/dist/kysely/type.d.ts.map +1 -1
  20. package/dist/kysely/type.js +15 -4
  21. package/dist/kysely/type.js.map +1 -1
  22. package/dist/prisma/generator.d.ts +5 -0
  23. package/dist/prisma/generator.d.ts.map +1 -1
  24. package/dist/prisma/generator.js +7 -0
  25. package/dist/prisma/generator.js.map +1 -1
  26. package/dist/prisma/relation.d.ts +33 -0
  27. package/dist/prisma/relation.d.ts.map +1 -0
  28. package/dist/prisma/relation.js +92 -0
  29. package/dist/prisma/relation.js.map +1 -0
  30. package/dist/prisma/type.d.ts.map +1 -1
  31. package/dist/prisma/type.js +4 -1
  32. package/dist/prisma/type.js.map +1 -1
  33. package/package.json +1 -1
  34. package/dist/utils/unsupported-config.d.ts +0 -26
  35. package/dist/utils/unsupported-config.d.ts.map +0 -1
  36. package/dist/utils/unsupported-config.js +0 -36
  37. package/dist/utils/unsupported-config.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,70 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.5.2] - 2025-10-12
9
+
10
+ ### Added
11
+
12
+ - **Implicit Many-to-Many Join Table Generation** - Full support for Prisma's implicit many-to-many relations
13
+ - Automatically generates Effect Schema types for join tables (e.g., `_CategoryToPost`)
14
+ - Includes join tables in Kysely `DB` interface for type-safe queries
15
+ - Generates operational schemas (`Selectable`, `Insertable`, `Updateable`) for join tables
16
+ - Both `Type` and `Encoded` exports for complete type coverage
17
+ - Example:
18
+ ```typescript
19
+ // Generated join table schema
20
+ export const _CategoryToPost = Schema.Struct({
21
+ A: columnType(Schema.UUID, Schema.Never, Schema.Never),
22
+ B: columnType(Schema.UUID, Schema.Never, Schema.Never),
23
+ });
24
+
25
+ export const CategoryToPost = getSchemas(_CategoryToPost);
26
+
27
+ // DB interface includes join table
28
+ export interface DB {
29
+ Category: Schema.Schema.Encoded<typeof _Category>;
30
+ Post: Schema.Schema.Encoded<typeof _Post>;
31
+ _CategoryToPost: Schema.Schema.Encoded<typeof _CategoryToPost>;
32
+ }
33
+ ```
34
+ - **Benefits**:
35
+ - ✨ Type-safe Kysely queries through intermediate tables
36
+ - ✨ Complete database schema representation
37
+ - ✨ Enables complex many-to-many queries with full type inference
38
+ - ✨ Maintains consistency with Prisma's database structure
39
+
40
+ ### Fixed
41
+
42
+ - **UUID Detection Accuracy** - Enhanced UUID field detection to prevent false positives
43
+ - Now checks field type is `String` before applying name pattern matching
44
+ - Prevents incorrect UUID detection on `Int` fields named `id`
45
+ - Maintains 3-tier detection strategy: native type → documentation → field patterns
46
+
47
+ - **Memory Leaks in Test Suite** - Added proper cleanup hooks
48
+ - Added `afterAll()` hooks to clear DMMF references in test files
49
+ - Eliminates memory leak warnings with Jest's `--detectLeaks` flag
50
+ - All 154 tests pass cleanly without memory warnings
51
+
52
+ ### Implementation Details
53
+
54
+ - **New modules**:
55
+ - `src/prisma/relation.ts`: Relation detection logic with join table metadata extraction
56
+ - `src/effect/join-table.ts`: Schema generation for join tables
57
+ - 20 new tests (12 relation detection + 8 schema generation)
58
+
59
+ - **Edge cases handled**:
60
+ - Circular many-to-many relations (A↔B, A↔C, B↔C)
61
+ - Mixed ID types (UUID in one model, Int in another)
62
+ - Self-relations (properly filtered out)
63
+ - Explicit many-to-many relations (detected and excluded)
64
+
65
+ ### Testing
66
+
67
+ - All 154 tests passing
68
+ - No memory leaks with `--detectLeaks` flag
69
+ - TypeScript compilation passes without errors
70
+ - Comprehensive edge case coverage
71
+
8
72
  ## [1.5.0] - 2025-10-11
9
73
 
10
74
  ### Changed - BREAKING
@@ -1,4 +1,5 @@
1
1
  import type { DMMF } from '@prisma/generator-helper';
2
+ import type { JoinTableInfo } from '../prisma/relation';
2
3
  /**
3
4
  * Effect domain generator - orchestrates Effect Schema generation
4
5
  */
@@ -31,5 +32,9 @@ export declare class EffectGenerator {
31
32
  * TDD: Satisfies tests 13-15 in import-generation.test.ts
32
33
  */
33
34
  generateTypesHeader(hasEnums: boolean): string;
35
+ /**
36
+ * Generate schemas for all join tables
37
+ */
38
+ generateJoinTableSchemas(joinTables: JoinTableInfo[]): string;
34
39
  }
35
40
  //# sourceMappingURL=generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAOrD;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE;IAIlD;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAgBnE;;OAEG;IACH,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAO5C;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAiBrC;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAQ3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;CAwBtC"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAOrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE;IAIlD;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAgBnE;;OAEG;IACH,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAO5C;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAiBrC;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAQ3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;IAyBrC;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE;CAKrD"}
@@ -5,6 +5,7 @@ const enum_1 = require("./enum");
5
5
  const type_1 = require("./type");
6
6
  const naming_1 = require("../utils/naming");
7
7
  const codegen_1 = require("../utils/codegen");
8
+ const join_table_1 = require("./join-table");
8
9
  /**
9
10
  * Effect domain generator - orchestrates Effect Schema generation
10
11
  */
@@ -92,6 +93,14 @@ export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateab
92
93
  }
93
94
  return `${header}\n\n${imports.join('\n')}`;
94
95
  }
96
+ /**
97
+ * Generate schemas for all join tables
98
+ */
99
+ generateJoinTableSchemas(joinTables) {
100
+ return joinTables
101
+ .map((jt) => (0, join_table_1.generateJoinTableSchema)(jt, this.dmmf))
102
+ .join('\n\n');
103
+ }
95
104
  }
96
105
  exports.EffectGenerator = EffectGenerator;
97
106
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { DMMF } from "@prisma/generator-helper";
2
+ import type { JoinTableInfo } from "../prisma/relation";
3
+ /**
4
+ * Generate Effect Schema for an implicit many-to-many join table
5
+ *
6
+ * Structure:
7
+ * - Base schema with A and B columns (both read-only FKs via columnType)
8
+ * - Operational schemas via getSchemas()
9
+ * - Type exports (Select, Insert, Update)
10
+ * - Encoded type exports
11
+ */
12
+ export declare function generateJoinTableSchema(joinTable: JoinTableInfo, dmmf: DMMF.Document): string;
13
+ //# sourceMappingURL=join-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join-table.d.ts","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAuBxD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,GAClB,MAAM,CAgCR"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateJoinTableSchema = generateJoinTableSchema;
4
+ /**
5
+ * Map join table column type to Effect Schema type
6
+ * Uses same mapping as regular fields
7
+ */
8
+ function mapColumnType(columnType, isUuid) {
9
+ if (columnType === "String" && isUuid) {
10
+ return "Schema.UUID";
11
+ }
12
+ const scalarMap = {
13
+ String: "Schema.String",
14
+ Int: "Schema.Number",
15
+ BigInt: "Schema.BigInt",
16
+ };
17
+ return scalarMap[columnType] || "Schema.Unknown";
18
+ }
19
+ /**
20
+ * Generate Effect Schema for an implicit many-to-many join table
21
+ *
22
+ * Structure:
23
+ * - Base schema with A and B columns (both read-only FKs via columnType)
24
+ * - Operational schemas via getSchemas()
25
+ * - Type exports (Select, Insert, Update)
26
+ * - Encoded type exports
27
+ */
28
+ function generateJoinTableSchema(joinTable, dmmf) {
29
+ const { tableName, relationName, columnAType, columnBType, columnAIsUuid, columnBIsUuid } = joinTable;
30
+ // Map column types to Effect Schema types
31
+ const columnASchema = mapColumnType(columnAType, columnAIsUuid);
32
+ const columnBSchema = mapColumnType(columnBType, columnBIsUuid);
33
+ // Both columns are foreign keys, so use columnType for read-only behavior
34
+ const columnAField = ` A: columnType(${columnASchema}, Schema.Never, Schema.Never)`;
35
+ const columnBField = ` B: columnType(${columnBSchema}, Schema.Never, Schema.Never)`;
36
+ // Generate base schema
37
+ const baseSchema = `// ${tableName} Join Table Schema
38
+ export const _${relationName} = Schema.Struct({
39
+ ${columnAField},
40
+ ${columnBField},
41
+ });`;
42
+ // Generate operational schemas
43
+ const operationalSchema = `export const ${relationName} = getSchemas(_${relationName});`;
44
+ // Generate Type exports
45
+ const typeExports = `export type ${relationName}Select = Schema.Schema.Type<typeof ${relationName}.Selectable>;
46
+ export type ${relationName}Insert = Schema.Schema.Type<typeof ${relationName}.Insertable>;
47
+ export type ${relationName}Update = Schema.Schema.Type<typeof ${relationName}.Updateable>;`;
48
+ // Generate Encoded type exports
49
+ const encodedExports = `export type ${relationName}SelectEncoded = Schema.Schema.Encoded<typeof ${relationName}.Selectable>;
50
+ export type ${relationName}InsertEncoded = Schema.Schema.Encoded<typeof ${relationName}.Insertable>;
51
+ export type ${relationName}UpdateEncoded = Schema.Schema.Encoded<typeof ${relationName}.Updateable>;`;
52
+ return `${baseSchema}\n\n${operationalSchema}\n\n${typeExports}\n${encodedExports}`;
53
+ }
54
+ //# sourceMappingURL=join-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join-table.js","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":";;AAiCA,0DAmCC;AAjED;;;GAGG;AACH,SAAS,aAAa,CACpB,UAAkB,EAClB,MAAe;IAEf,IAAI,UAAU,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAA2B;QACxC,MAAM,EAAE,eAAe;QACvB,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE,eAAe;KACxB,CAAC;IAEF,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,uBAAuB,CACrC,SAAwB,EACxB,IAAmB;IAEnB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAEtG,0CAA0C;IAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEhE,0EAA0E;IAC1E,MAAM,YAAY,GAAG,mBAAmB,aAAa,+BAA+B,CAAC;IACrF,MAAM,YAAY,GAAG,mBAAmB,aAAa,+BAA+B,CAAC;IAErF,uBAAuB;IACvB,MAAM,UAAU,GAAG,MAAM,SAAS;gBACpB,YAAY;EAC1B,YAAY;EACZ,YAAY;IACV,CAAC;IAEH,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG,gBAAgB,YAAY,kBAAkB,YAAY,IAAI,CAAC;IAEzF,wBAAwB;IACxB,MAAM,WAAW,GAAG,eAAe,YAAY,sCAAsC,YAAY;cACrF,YAAY,sCAAsC,YAAY;cAC9D,YAAY,sCAAsC,YAAY,eAAe,CAAC;IAE1F,gCAAgC;IAChC,MAAM,cAAc,GAAG,eAAe,YAAY,gDAAgD,YAAY;cAClG,YAAY,gDAAgD,YAAY;cACxE,YAAY,gDAAgD,YAAY,eAAe,CAAC;IAEpG,OAAO,GAAG,UAAU,OAAO,iBAAiB,OAAO,WAAW,KAAK,cAAc,EAAE,CAAC;AACtF,CAAC"}
@@ -22,7 +22,7 @@ const orchestrator_1 = require("./orchestrator");
22
22
  __exportStar(require("../kysely/helpers"), exports);
23
23
  exports.generator = (0, generator_helper_1.generatorHandler)({
24
24
  onManifest: () => ({
25
- version: '1.4.0',
25
+ version: '1.5.2',
26
26
  defaultOutput: './generated',
27
27
  prettyName: 'Prisma Effect Kysely Generator',
28
28
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMjE;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;gBAEhC,OAAO,EAAE,gBAAgB;IASrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,gBAAgB;IAgBxC;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,aAAa;IAoC3B;;OAEG;YACW,aAAa;IAK3B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAYhB;;OAEG;IACH,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMjE;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;gBAEhC,OAAO,EAAE,gBAAgB;IASrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,gBAAgB;IAgBxC;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,aAAa;IA4C3B;;OAEG;YACW,aAAa;IAK3B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAYhB;;OAEG;IACH,OAAO,CAAC,WAAW;CAKpB"}
@@ -57,6 +57,7 @@ class GeneratorOrchestrator {
57
57
  */
58
58
  async generateTypes() {
59
59
  const models = this.prismaGen.getModels();
60
+ const joinTables = this.prismaGen.getManyToManyJoinTables();
60
61
  const hasEnums = this.prismaGen.getEnums().length > 0;
61
62
  // Generate header with imports
62
63
  const header = this.effectGen.generateTypesHeader(hasEnums);
@@ -77,9 +78,15 @@ ${kyselyFields}
77
78
  return `${baseSchema}\n\n${operationalSchema}\n\n${typeExports}`;
78
79
  })
79
80
  .join("\n\n");
80
- // Generate DB interface
81
- const dbInterface = this.kyselyGen.generateDBInterface(models);
82
- const content = `${header}\n\n${modelSchemas}\n\n${dbInterface}`;
81
+ // Generate join table schemas
82
+ const joinTableSchemas = joinTables.length > 0
83
+ ? this.effectGen.generateJoinTableSchemas(joinTables)
84
+ : "";
85
+ // Generate DB interface with join tables
86
+ const dbInterface = this.kyselyGen.generateDBInterface(models, joinTables);
87
+ const content = joinTableSchemas
88
+ ? `${header}\n\n${modelSchemas}\n\n${joinTableSchemas}\n\n${dbInterface}`
89
+ : `${header}\n\n${modelSchemas}\n\n${dbInterface}`;
83
90
  await this.fileManager.writeFile("types.ts", content);
84
91
  }
85
92
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { DMMF } from "@prisma/generator-helper";
2
+ import type { JoinTableInfo } from "../prisma/relation";
2
3
  /**
3
4
  * Kysely domain generator - orchestrates Kysely integration
4
5
  * Applies Kysely helpers to Effect schemas
@@ -15,9 +16,9 @@ export declare class KyselyGenerator {
15
16
  */
16
17
  generateModelFields(fields: readonly DMMF.Field[]): string;
17
18
  /**
18
- * Generate DB interface for all models
19
+ * Generate DB interface for all models and join tables
19
20
  */
20
- generateDBInterface(models: readonly DMMF.Model[]): string;
21
+ generateDBInterface(models: readonly DMMF.Model[], joinTables?: JoinTableInfo[]): string;
21
22
  /**
22
23
  * Generate index.ts re-export file
23
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/kysely/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAKrD;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAUzC;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAMjD;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAIjD;;OAEG;IACH,iBAAiB;CAGlB"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/kysely/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAIrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAUzC;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAMjD;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,GAAE,aAAa,EAAO;IAInF;;OAEG;IACH,iBAAiB;CAGlB"}
@@ -30,10 +30,10 @@ class KyselyGenerator {
30
30
  .join(",\n");
31
31
  }
32
32
  /**
33
- * Generate DB interface for all models
33
+ * Generate DB interface for all models and join tables
34
34
  */
35
- generateDBInterface(models) {
36
- return (0, type_1.generateDBInterface)(models);
35
+ generateDBInterface(models, joinTables = []) {
36
+ return (0, type_1.generateDBInterface)(models, joinTables);
37
37
  }
38
38
  /**
39
39
  * Generate index.ts re-export file
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/kysely/generator.ts"],"names":[],"mappings":";;;AACA,iCAAmE;AACnE,yCAAgD;AAGhD;;;GAGG;AACH,MAAa,eAAe;IAC1B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;OAEG;IACH,uBAAuB,CAAC,KAAiB;QACvC,uBAAuB;QACvB,MAAM,aAAa,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,gCAAgC;QAChC,MAAM,eAAe,GAAG,IAAA,2BAAoB,EAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAEnE,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAA6B;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;aACnD,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAA6B;QAC/C,OAAO,IAAA,0BAAmB,EAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,oDAAoD,CAAC;IAC9D,CAAC;CACF;AAtCD,0CAsCC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/kysely/generator.ts"],"names":[],"mappings":";;;AACA,iCAAmE;AACnE,yCAAgD;AAIhD;;;GAGG;AACH,MAAa,eAAe;IAC1B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;OAEG;IACH,uBAAuB,CAAC,KAAiB;QACvC,uBAAuB;QACvB,MAAM,aAAa,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,gCAAgC;QAChC,MAAM,eAAe,GAAG,IAAA,2BAAoB,EAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAEnE,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAA6B;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;aACnD,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAA6B,EAAE,aAA8B,EAAE;QACjF,OAAO,IAAA,0BAAmB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,oDAAoD,CAAC;IAC9D,CAAC;CACF;AAtCD,0CAsCC"}
@@ -1,4 +1,5 @@
1
1
  import type { DMMF } from "@prisma/generator-helper";
2
+ import type { JoinTableInfo } from "../prisma/relation";
2
3
  /**
3
4
  * Determine if field needs Kysely columnType wrapper
4
5
  * ID fields with @default are read-only (can't insert/update)
@@ -27,7 +28,11 @@ export declare function buildKyselyFieldType(baseFieldType: string, field: DMMF.
27
28
  */
28
29
  export declare function generateDBInterfaceEntry(model: DMMF.Model): string;
29
30
  /**
30
- * Generate complete DB interface
31
+ * Generate DB interface entry for a join table
31
32
  */
32
- export declare function generateDBInterface(models: readonly DMMF.Model[]): string;
33
+ export declare function generateJoinTableDBInterfaceEntry(joinTable: JoinTableInfo): string;
34
+ /**
35
+ * Generate complete DB interface including join tables
36
+ */
37
+ export declare function generateDBInterface(models: readonly DMMF.Model[], joinTables?: JoinTableInfo[]): string;
33
38
  //# sourceMappingURL=type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/kysely/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAEhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAOtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAMrE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAQ5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,UAIzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,UAShE"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/kysely/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAEhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAOtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAMrE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAQ5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,UAIzD;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,aAAa,UAGzE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAC7B,UAAU,GAAE,aAAa,EAAO,UAcjC"}
@@ -6,6 +6,7 @@ exports.applyKyselyHelpers = applyKyselyHelpers;
6
6
  exports.applyMapDirective = applyMapDirective;
7
7
  exports.buildKyselyFieldType = buildKyselyFieldType;
8
8
  exports.generateDBInterfaceEntry = generateDBInterfaceEntry;
9
+ exports.generateJoinTableDBInterfaceEntry = generateJoinTableDBInterfaceEntry;
9
10
  exports.generateDBInterface = generateDBInterface;
10
11
  const type_1 = require("../prisma/type");
11
12
  /**
@@ -64,15 +65,25 @@ function generateDBInterfaceEntry(model) {
64
65
  return ` ${tableName}: Schema.Schema.Encoded<typeof ${baseSchemaName}>;`;
65
66
  }
66
67
  /**
67
- * Generate complete DB interface
68
+ * Generate DB interface entry for a join table
68
69
  */
69
- function generateDBInterface(models) {
70
- const tableEntries = Array.from(models)
70
+ function generateJoinTableDBInterfaceEntry(joinTable) {
71
+ const { tableName, relationName } = joinTable;
72
+ return ` ${tableName}: Schema.Schema.Encoded<typeof _${relationName}>;`;
73
+ }
74
+ /**
75
+ * Generate complete DB interface including join tables
76
+ */
77
+ function generateDBInterface(models, joinTables = []) {
78
+ const modelEntries = Array.from(models)
71
79
  .map(generateDBInterfaceEntry)
72
80
  .join("\n");
81
+ const joinTableEntries = joinTables.length > 0
82
+ ? "\n" + joinTables.map(generateJoinTableDBInterfaceEntry).join("\n")
83
+ : "";
73
84
  return `// Kysely Database Interface
74
85
  export interface DB {
75
- ${tableEntries}
86
+ ${modelEntries}${joinTableEntries}
76
87
  }`;
77
88
  }
78
89
  //# sourceMappingURL=type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/kysely/type.ts"],"names":[],"mappings":";;AAOA,0CAEC;AAMD,wCAEC;AAKD,gDAOC;AAKD,8CAMC;AAMD,oDAQC;AAKD,4DAIC;AAKD,kDASC;AA5ED,yCAA4E;AAE5E;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAiB;IAC9C,OAAO,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,KAAiB;IACrE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,cAAc,SAAS,+BAA+B,CAAC;IAChE,CAAC;SAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,aAAa,SAAS,GAAG,CAAC;IACnC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,KAAiB;IACpE,MAAM,MAAM,GAAG,IAAA,qBAAc,EAAC,KAAK,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,4BAA4B,SAAS,0BAA0B,MAAM,KAAK,CAAC;IACpF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,aAAqB,EAAE,KAAiB;IAC3E,uDAAuD;IACvD,IAAI,SAAS,GAAG,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAEzD,yDAAyD;IACzD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEhD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,KAAiB;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;IACxC,OAAO,KAAK,SAAS,kCAAkC,cAAc,IAAI,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAA6B;IAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;SACpC,GAAG,CAAC,wBAAwB,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;EAEP,YAAY;EACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/kysely/type.ts"],"names":[],"mappings":";;AAQA,0CAEC;AAMD,wCAEC;AAKD,gDAOC;AAKD,8CAMC;AAMD,oDAQC;AAKD,4DAIC;AAKD,8EAGC;AAKD,kDAgBC;AA5FD,yCAA4E;AAG5E;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAiB;IAC9C,OAAO,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,KAAiB;IACrE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,cAAc,SAAS,+BAA+B,CAAC;IAChE,CAAC;SAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,aAAa,SAAS,GAAG,CAAC;IACnC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,KAAiB;IACpE,MAAM,MAAM,GAAG,IAAA,qBAAc,EAAC,KAAK,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,4BAA4B,SAAS,0BAA0B,MAAM,KAAK,CAAC;IACpF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,aAAqB,EAAE,KAAiB;IAC3E,uDAAuD;IACvD,IAAI,SAAS,GAAG,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAEzD,yDAAyD;IACzD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEhD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,KAAiB;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;IACxC,OAAO,KAAK,SAAS,kCAAkC,cAAc,IAAI,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,SAAgB,iCAAiC,CAAC,SAAwB;IACxE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAC9C,OAAO,KAAK,SAAS,mCAAmC,YAAY,IAAI,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,MAA6B,EAC7B,aAA8B,EAAE;IAEhC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;SACpC,GAAG,CAAC,wBAAwB,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;QAC5C,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACrE,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;EAEP,YAAY,GAAG,gBAAgB;EAC/B,CAAC;AACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { DMMF } from "@prisma/generator-helper";
2
+ import { type JoinTableInfo } from "./relation";
2
3
  /**
3
4
  * Prisma domain generator - orchestrates DMMF parsing and extraction
4
5
  * No schema generation here, just native Prisma data extraction
@@ -18,5 +19,9 @@ export declare class PrismaGenerator {
18
19
  * Get schema fields for a model (filtered and sorted)
19
20
  */
20
21
  getModelFields(model: DMMF.Model): readonly DMMF.Field[];
22
+ /**
23
+ * Get implicit many-to-many join tables
24
+ */
25
+ getManyToManyJoinTables(): JoinTableInfo[];
21
26
  }
22
27
  //# sourceMappingURL=generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/prisma/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAIrD;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,QAAQ,IAAI,SAAS,IAAI,CAAC,aAAa,EAAE;IAIzC;;OAEG;IACH,SAAS,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE;IAOlC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,KAAK,EAAE;CAIzD"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/prisma/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1E;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,QAAQ,IAAI,SAAS,IAAI,CAAC,aAAa,EAAE;IAIzC;;OAEG;IACH,SAAS,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE;IAOlC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,KAAK,EAAE;IAKxD;;OAEG;IACH,uBAAuB,IAAI,aAAa,EAAE;CAG3C"}
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.PrismaGenerator = void 0;
37
37
  const PrismaEnum = __importStar(require("./enum"));
38
38
  const PrismaType = __importStar(require("./type"));
39
+ const relation_1 = require("./relation");
39
40
  /**
40
41
  * Prisma domain generator - orchestrates DMMF parsing and extraction
41
42
  * No schema generation here, just native Prisma data extraction
@@ -64,6 +65,12 @@ class PrismaGenerator {
64
65
  const filtered = PrismaType.filterSchemaFields(model.fields);
65
66
  return PrismaType.sortFields(filtered);
66
67
  }
68
+ /**
69
+ * Get implicit many-to-many join tables
70
+ */
71
+ getManyToManyJoinTables() {
72
+ return (0, relation_1.detectImplicitManyToMany)(this.dmmf.datamodel.models);
73
+ }
67
74
  }
68
75
  exports.PrismaGenerator = PrismaGenerator;
69
76
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/prisma/generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mDAAqC;AACrC,mDAAqC;AAErC;;;GAGG;AACH,MAAa,eAAe;IAC1B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;OAEG;IACH,QAAQ;QACN,OAAO,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,QAAQ,GAAG,UAAU,CAAC,oBAAoB,CAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAC3B,CAAC;QACF,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAiB;QAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AA3BD,0CA2BC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/prisma/generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mDAAqC;AACrC,mDAAqC;AACrC,yCAA0E;AAE1E;;;GAGG;AACH,MAAa,eAAe;IAC1B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;OAEG;IACH,QAAQ;QACN,OAAO,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,QAAQ,GAAG,UAAU,CAAC,oBAAoB,CAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAC3B,CAAC;QACF,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAiB;QAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAA,mCAAwB,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;CACF;AAlCD,0CAkCC"}
@@ -0,0 +1,33 @@
1
+ import type { DMMF } from "@prisma/generator-helper";
2
+ /**
3
+ * Metadata for implicit many-to-many join tables
4
+ */
5
+ export interface JoinTableInfo {
6
+ /** Table name in database (e.g., "_CategoryToPost") */
7
+ tableName: string;
8
+ /** Relation name without underscore (e.g., "CategoryToPost") */
9
+ relationName: string;
10
+ /** First model name (alphabetically) */
11
+ modelA: string;
12
+ /** Second model name (alphabetically) */
13
+ modelB: string;
14
+ /** Type of column A (from modelA's ID field) */
15
+ columnAType: string;
16
+ /** Type of column B (from modelB's ID field) */
17
+ columnBType: string;
18
+ /** Whether column A is a UUID */
19
+ columnAIsUuid: boolean;
20
+ /** Whether column B is a UUID */
21
+ columnBIsUuid: boolean;
22
+ }
23
+ /**
24
+ * Get the ID field from a model
25
+ * Handles both single @id and composite @@id
26
+ */
27
+ export declare function getModelIdField(model: DMMF.Model): DMMF.Field;
28
+ /**
29
+ * Detect all implicit many-to-many relations from DMMF models
30
+ * Returns metadata for generating join table schemas
31
+ */
32
+ export declare function detectImplicitManyToMany(models: readonly DMMF.Model[]): JoinTableInfo[];
33
+ //# sourceMappingURL=relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/prisma/relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;CACxB;AAqBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAmB7D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,aAAa,EAAE,CA6DjB"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getModelIdField = getModelIdField;
4
+ exports.detectImplicitManyToMany = detectImplicitManyToMany;
5
+ const type_1 = require("./type");
6
+ /**
7
+ * Detect if a relation field is part of an implicit many-to-many relation
8
+ * Criteria:
9
+ * - kind === "object" (relation field)
10
+ * - isList === true (many side)
11
+ * - relationFromFields is empty (no foreign key on this side)
12
+ * - relationToFields is empty (no explicit relation table)
13
+ */
14
+ function isImplicitManyToManyField(field) {
15
+ return (field.kind === "object" &&
16
+ field.isList === true &&
17
+ field.relationFromFields !== undefined &&
18
+ field.relationFromFields.length === 0 &&
19
+ field.relationToFields !== undefined &&
20
+ field.relationToFields.length === 0);
21
+ }
22
+ /**
23
+ * Get the ID field from a model
24
+ * Handles both single @id and composite @@id
25
+ */
26
+ function getModelIdField(model) {
27
+ // Try to find single @id field
28
+ const idField = model.fields.find((f) => f.isId === true);
29
+ if (idField) {
30
+ return idField;
31
+ }
32
+ // For composite @@id, get the first field from primaryKey
33
+ if (model.primaryKey && model.primaryKey.fields.length > 0) {
34
+ const firstIdFieldName = model.primaryKey.fields[0];
35
+ const field = model.fields.find((f) => f.name === firstIdFieldName);
36
+ if (field) {
37
+ return field;
38
+ }
39
+ }
40
+ throw new Error(`Model ${model.name} has no ID field (@id or @@id required)`);
41
+ }
42
+ /**
43
+ * Detect all implicit many-to-many relations from DMMF models
44
+ * Returns metadata for generating join table schemas
45
+ */
46
+ function detectImplicitManyToMany(models) {
47
+ const joinTables = new Map();
48
+ for (const model of models) {
49
+ for (const field of model.fields) {
50
+ if (!isImplicitManyToManyField(field)) {
51
+ continue;
52
+ }
53
+ // Get the related model
54
+ const relatedModel = models.find((m) => m.name === field.type);
55
+ if (!relatedModel) {
56
+ continue;
57
+ }
58
+ // Check if the relation is reciprocal (both sides are lists)
59
+ const relatedField = relatedModel.fields.find((f) => f.relationName === field.relationName && f.isList === true);
60
+ if (!relatedField || !isImplicitManyToManyField(relatedField)) {
61
+ // Not a true implicit m-n relation
62
+ continue;
63
+ }
64
+ // Skip self-relations (both sides point to same model)
65
+ if (model.name === relatedModel.name) {
66
+ continue;
67
+ }
68
+ // Generate table name (alphabetically sorted model names)
69
+ const modelNames = [model.name, relatedModel.name].sort();
70
+ const tableName = `_${modelNames[0]}To${modelNames[1]}`;
71
+ // Skip if we've already processed this relation
72
+ if (joinTables.has(tableName)) {
73
+ continue;
74
+ }
75
+ // Extract ID field types
76
+ const modelAIdField = getModelIdField(models.find((m) => m.name === modelNames[0]));
77
+ const modelBIdField = getModelIdField(models.find((m) => m.name === modelNames[1]));
78
+ joinTables.set(tableName, {
79
+ tableName,
80
+ relationName: `${modelNames[0]}To${modelNames[1]}`,
81
+ modelA: modelNames[0],
82
+ modelB: modelNames[1],
83
+ columnAType: modelAIdField.type,
84
+ columnBType: modelBIdField.type,
85
+ columnAIsUuid: (0, type_1.isUuidField)(modelAIdField),
86
+ columnBIsUuid: (0, type_1.isUuidField)(modelBIdField),
87
+ });
88
+ }
89
+ }
90
+ return Array.from(joinTables.values());
91
+ }
92
+ //# sourceMappingURL=relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/prisma/relation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/prisma/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAoB5C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,UAE/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAEhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAE1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAEhD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAE5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,SAAS,IAAI,CAAC,KAAK,EAAE,CAEvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,SAAS,IAAI,CAAC,KAAK,EAAE,CAIvB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,UAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,SAAS,IAAI,CAAC,KAAK,EAAE,CAEvB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,SAAS,IAAI,CAAC,KAAK,EAAE,CAEvB"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/prisma/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAwB5C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,UAE/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAEhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAE1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAEhD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAE5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,SAAS,IAAI,CAAC,KAAK,EAAE,CAEvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,SAAS,IAAI,CAAC,KAAK,EAAE,CAIvB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,UAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,SAAS,IAAI,CAAC,KAAK,EAAE,CAEvB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAC5B,SAAS,IAAI,CAAC,KAAK,EAAE,CAEvB"}
@@ -24,7 +24,10 @@ function isUuidField(field) {
24
24
  if (field.documentation?.includes("@db.Uuid")) {
25
25
  return true;
26
26
  }
27
- // 3. Fallback: Field name patterns
27
+ // 3. Fallback: Field name patterns (only for String type)
28
+ if (field.type !== "String") {
29
+ return false;
30
+ }
28
31
  const uuidFieldPatterns = [
29
32
  /^id$/, // Primary ID fields
30
33
  /_id$/, // Foreign key ID fields
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/prisma/type.ts"],"names":[],"mappings":";;AAMA,kCAoBC;AAKD,wCAEC;AAKD,0CAEC;AAKD,8BAEC;AAKD,0CAEC;AAKD,kCAEC;AAKD,oDAIC;AAKD,gDAMC;AAKD,wCAEC;AAKD,gCAIC;AAKD,gCAIC;AAxGD;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAiB;IAC3C,uCAAuC;IACvC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sCAAsC;IACtC,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,MAAM,iBAAiB,GAAG;QACxB,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EAAE,wBAAwB;QAChC,WAAW,EAAE,cAAc;QAC3B,QAAQ,EAAE,qBAAqB;KACvB,CAAC;IAEX,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAiB;IAC9C,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAiB;IACzC,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAiB;IAC3C,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAA6B;IAE7B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,MAA6B;IAE7B,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAiB;IAC9C,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,MAA6B;IAE7B,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,MAA6B;IAE7B,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/prisma/type.ts"],"names":[],"mappings":";;AAMA,kCAwBC;AAKD,wCAEC;AAKD,0CAEC;AAKD,8BAEC;AAKD,0CAEC;AAKD,kCAEC;AAKD,oDAIC;AAKD,gDAMC;AAKD,wCAEC;AAKD,gCAIC;AAKD,gCAIC;AA5GD;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAiB;IAC3C,uCAAuC;IACvC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sCAAsC;IACtC,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0DAA0D;IAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,iBAAiB,GAAG;QACxB,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EAAE,wBAAwB;QAChC,WAAW,EAAE,cAAc;QAC3B,QAAQ,EAAE,qBAAqB;KACvB,CAAC;IAEX,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAiB;IAC9C,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAiB;IACzC,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAiB;IAC3C,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAA6B;IAE7B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,MAA6B;IAE7B,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAiB;IAC9C,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,MAA6B;IAE7B,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,MAA6B;IAE7B,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prisma-effect-kysely",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "Prisma generator that creates Effect Schema types from Prisma schema compatible with Kysely",
5
5
  "license": "MIT",
6
6
  "author": "Samuel Ho",
@@ -1,26 +0,0 @@
1
- /**
2
- * Configuration for a single Unsupported field
3
- */
4
- export interface UnsupportedFieldConfig {
5
- effectType: string;
6
- dbType: string;
7
- dbName: string;
8
- required: boolean;
9
- comment?: string;
10
- }
11
- /**
12
- * Full configuration structure
13
- */
14
- export interface UnsupportedConfig {
15
- models: Record<string, Record<string, UnsupportedFieldConfig>>;
16
- }
17
- /**
18
- * Load unsupported fields configuration from JSON file
19
- * Looks for prisma/unsupported-fields.json relative to schema location
20
- */
21
- export declare function loadUnsupportedConfig(schemaPath: string): UnsupportedConfig | null;
22
- /**
23
- * Get unsupported fields for a specific model
24
- */
25
- export declare function getUnsupportedFields(config: UnsupportedConfig | null, modelName: string): Record<string, UnsupportedFieldConfig>;
26
- //# sourceMappingURL=unsupported-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unsupported-config.d.ts","sourceRoot":"","sources":["../../src/utils/unsupported-config.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;CAChE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAiBlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAGxC"}
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadUnsupportedConfig = loadUnsupportedConfig;
4
- exports.getUnsupportedFields = getUnsupportedFields;
5
- const fs_1 = require("fs");
6
- const path_1 = require("path");
7
- /**
8
- * Load unsupported fields configuration from JSON file
9
- * Looks for prisma/unsupported-fields.json relative to schema location
10
- */
11
- function loadUnsupportedConfig(schemaPath) {
12
- try {
13
- // Assume schema is in prisma/schema/ directory
14
- // Config should be in prisma/unsupported-fields.json
15
- const schemaDir = (0, path_1.dirname)((0, path_1.dirname)(schemaPath)); // Go up to prisma/
16
- const configPath = (0, path_1.join)(schemaDir, 'unsupported-fields.json');
17
- if (!(0, fs_1.existsSync)(configPath)) {
18
- return null;
19
- }
20
- const content = (0, fs_1.readFileSync)(configPath, 'utf-8');
21
- return JSON.parse(content);
22
- }
23
- catch (error) {
24
- console.warn(`⚠️ Failed to load unsupported-fields.json: ${error}`);
25
- return null;
26
- }
27
- }
28
- /**
29
- * Get unsupported fields for a specific model
30
- */
31
- function getUnsupportedFields(config, modelName) {
32
- if (!config)
33
- return {};
34
- return config.models[modelName] || {};
35
- }
36
- //# sourceMappingURL=unsupported-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unsupported-config.js","sourceRoot":"","sources":["../../src/utils/unsupported-config.ts"],"names":[],"mappings":";;AAyBA,sDAiBC;AAKD,oDAMC;AArDD,2BAA8C;AAC9C,+BAAqC;AAoBrC;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,UAAkB;IACtD,IAAI,CAAC;QACH,+CAA+C;QAC/C,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,IAAA,cAAO,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB;QACnE,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;QAE9D,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,+CAA+C,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAAgC,EAChC,SAAiB;IAEjB,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC"}