neoorm 0.1.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.
Files changed (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +86 -0
  3. package/dist/bin/neoorm.d.ts +3 -0
  4. package/dist/bin/neoorm.d.ts.map +1 -0
  5. package/dist/bin/neoorm.js +111 -0
  6. package/dist/bin/neoorm.js.map +1 -0
  7. package/dist/codegen/emit-includes.d.ts +3 -0
  8. package/dist/codegen/emit-includes.d.ts.map +1 -0
  9. package/dist/codegen/emit-includes.js +133 -0
  10. package/dist/codegen/emit-includes.js.map +1 -0
  11. package/dist/codegen/generate.d.ts +24 -0
  12. package/dist/codegen/generate.d.ts.map +1 -0
  13. package/dist/codegen/generate.js +156 -0
  14. package/dist/codegen/generate.js.map +1 -0
  15. package/dist/codegen/schema-to-manifest.d.ts +8 -0
  16. package/dist/codegen/schema-to-manifest.d.ts.map +1 -0
  17. package/dist/codegen/schema-to-manifest.js +210 -0
  18. package/dist/codegen/schema-to-manifest.js.map +1 -0
  19. package/dist/config.d.ts +11 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +17 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/dialect/index.d.ts +3 -0
  24. package/dist/dialect/index.d.ts.map +1 -0
  25. package/dist/dialect/index.js +2 -0
  26. package/dist/dialect/index.js.map +1 -0
  27. package/dist/dialect/postgres.d.ts +5 -0
  28. package/dist/dialect/postgres.d.ts.map +1 -0
  29. package/dist/dialect/postgres.js +112 -0
  30. package/dist/dialect/postgres.js.map +1 -0
  31. package/dist/dialect/types.d.ts +79 -0
  32. package/dist/dialect/types.d.ts.map +1 -0
  33. package/dist/dialect/types.js +2 -0
  34. package/dist/dialect/types.js.map +1 -0
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +7 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/introspect/pull.d.ts +3 -0
  40. package/dist/introspect/pull.d.ts.map +1 -0
  41. package/dist/introspect/pull.js +91 -0
  42. package/dist/introspect/pull.js.map +1 -0
  43. package/dist/migrate/runner.d.ts +9 -0
  44. package/dist/migrate/runner.d.ts.map +1 -0
  45. package/dist/migrate/runner.js +70 -0
  46. package/dist/migrate/runner.js.map +1 -0
  47. package/dist/runtime/client.d.ts +61 -0
  48. package/dist/runtime/client.d.ts.map +1 -0
  49. package/dist/runtime/client.js +54 -0
  50. package/dist/runtime/client.js.map +1 -0
  51. package/dist/runtime/executor.d.ts +10 -0
  52. package/dist/runtime/executor.d.ts.map +1 -0
  53. package/dist/runtime/executor.js +62 -0
  54. package/dist/runtime/executor.js.map +1 -0
  55. package/dist/runtime/query/compile.d.ts +23 -0
  56. package/dist/runtime/query/compile.d.ts.map +1 -0
  57. package/dist/runtime/query/compile.js +182 -0
  58. package/dist/runtime/query/compile.js.map +1 -0
  59. package/dist/runtime/query/create.d.ts +8 -0
  60. package/dist/runtime/query/create.d.ts.map +1 -0
  61. package/dist/runtime/query/create.js +139 -0
  62. package/dist/runtime/query/create.js.map +1 -0
  63. package/dist/runtime/query/delete.d.ts +12 -0
  64. package/dist/runtime/query/delete.d.ts.map +1 -0
  65. package/dist/runtime/query/delete.js +35 -0
  66. package/dist/runtime/query/delete.js.map +1 -0
  67. package/dist/runtime/query/find.d.ts +21 -0
  68. package/dist/runtime/query/find.d.ts.map +1 -0
  69. package/dist/runtime/query/find.js +172 -0
  70. package/dist/runtime/query/find.js.map +1 -0
  71. package/dist/runtime/query/update.d.ts +17 -0
  72. package/dist/runtime/query/update.d.ts.map +1 -0
  73. package/dist/runtime/query/update.js +63 -0
  74. package/dist/runtime/query/update.js.map +1 -0
  75. package/dist/runtime/types.d.ts +48 -0
  76. package/dist/runtime/types.d.ts.map +1 -0
  77. package/dist/runtime/types.js +2 -0
  78. package/dist/runtime/types.js.map +1 -0
  79. package/dist/schema/column.d.ts +39 -0
  80. package/dist/schema/column.d.ts.map +1 -0
  81. package/dist/schema/column.js +70 -0
  82. package/dist/schema/column.js.map +1 -0
  83. package/dist/schema/define-schema.d.ts +6 -0
  84. package/dist/schema/define-schema.d.ts.map +1 -0
  85. package/dist/schema/define-schema.js +4 -0
  86. package/dist/schema/define-schema.js.map +1 -0
  87. package/dist/schema/index.d.ts +13 -0
  88. package/dist/schema/index.d.ts.map +1 -0
  89. package/dist/schema/index.js +6 -0
  90. package/dist/schema/index.js.map +1 -0
  91. package/dist/schema/many-to-many.d.ts +21 -0
  92. package/dist/schema/many-to-many.d.ts.map +1 -0
  93. package/dist/schema/many-to-many.js +20 -0
  94. package/dist/schema/many-to-many.js.map +1 -0
  95. package/dist/schema/relation-types.d.ts +74 -0
  96. package/dist/schema/relation-types.d.ts.map +1 -0
  97. package/dist/schema/relation-types.js +2 -0
  98. package/dist/schema/relation-types.js.map +1 -0
  99. package/dist/schema/relation.d.ts +24 -0
  100. package/dist/schema/relation.d.ts.map +1 -0
  101. package/dist/schema/relation.js +25 -0
  102. package/dist/schema/relation.js.map +1 -0
  103. package/dist/schema/table.d.ts +28 -0
  104. package/dist/schema/table.d.ts.map +1 -0
  105. package/dist/schema/table.js +23 -0
  106. package/dist/schema/table.js.map +1 -0
  107. package/dist/schema/types.d.ts +115 -0
  108. package/dist/schema/types.d.ts.map +1 -0
  109. package/dist/schema/types.js +2 -0
  110. package/dist/schema/types.js.map +1 -0
  111. package/dist/sql/builder.d.ts +17 -0
  112. package/dist/sql/builder.d.ts.map +1 -0
  113. package/dist/sql/builder.js +51 -0
  114. package/dist/sql/builder.js.map +1 -0
  115. package/dist/sql/index.d.ts +7 -0
  116. package/dist/sql/index.d.ts.map +1 -0
  117. package/dist/sql/index.js +6 -0
  118. package/dist/sql/index.js.map +1 -0
  119. package/dist/sql/template.d.ts +16 -0
  120. package/dist/sql/template.d.ts.map +1 -0
  121. package/dist/sql/template.js +43 -0
  122. package/dist/sql/template.js.map +1 -0
  123. package/dist/utils/case.d.ts +5 -0
  124. package/dist/utils/case.d.ts.map +1 -0
  125. package/dist/utils/case.js +20 -0
  126. package/dist/utils/case.js.map +1 -0
  127. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/schema/column.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC;AAE7E,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IAChF,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtG,UAAU,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG;QAAE,UAAU,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACtF,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;CAC9E,CAAC;AA2CF,eAAO,MAAM,EAAE;eACF,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAA;KAAE,CAAC;CASlF,CAAC;AAEF,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAQnD;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,CAQpD;AAED,wBAAgB,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAQlD;AAED,wBAAgB,SAAS,IAAI,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,CAQtD"}
@@ -0,0 +1,70 @@
1
+ function createColumnBuilder(kind, meta) {
2
+ const builder = {
3
+ _type: undefined,
4
+ _meta: meta,
5
+ notNull() {
6
+ return createColumnBuilder(kind, { ...meta, nullable: false });
7
+ },
8
+ unique() {
9
+ return createColumnBuilder(kind, { ...meta, unique: true });
10
+ },
11
+ default(value) {
12
+ return createColumnBuilder(kind, { ...meta, defaultValue: value });
13
+ },
14
+ defaultNow() {
15
+ return createColumnBuilder(kind, { ...meta, defaultNow: true });
16
+ },
17
+ primary() {
18
+ return createColumnBuilder(kind, { ...meta, primary: true });
19
+ },
20
+ };
21
+ return builder;
22
+ }
23
+ export const id = {
24
+ primary() {
25
+ return createColumnBuilder("id", {
26
+ kind: "id",
27
+ nullable: false,
28
+ unique: false,
29
+ primary: true,
30
+ defaultNow: false,
31
+ });
32
+ },
33
+ };
34
+ export function text() {
35
+ return createColumnBuilder("text", {
36
+ kind: "text",
37
+ nullable: true,
38
+ unique: false,
39
+ primary: false,
40
+ defaultNow: false,
41
+ });
42
+ }
43
+ export function bool() {
44
+ return createColumnBuilder("bool", {
45
+ kind: "bool",
46
+ nullable: true,
47
+ unique: false,
48
+ primary: false,
49
+ defaultNow: false,
50
+ });
51
+ }
52
+ export function int() {
53
+ return createColumnBuilder("int", {
54
+ kind: "int",
55
+ nullable: true,
56
+ unique: false,
57
+ primary: false,
58
+ defaultNow: false,
59
+ });
60
+ }
61
+ export function timestamp() {
62
+ return createColumnBuilder("timestamp", {
63
+ kind: "timestamp",
64
+ nullable: true,
65
+ unique: false,
66
+ primary: false,
67
+ defaultNow: false,
68
+ });
69
+ }
70
+ //# sourceMappingURL=column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/schema/column.ts"],"names":[],"mappings":"AAqBA,SAAS,mBAAmB,CAC1B,IAAgB,EAChB,IAAW;IAEX,MAAM,OAAO,GAAiC;QAC5C,KAAK,EAAE,SAA8B;QACrC,KAAK,EAAE,IAAI;QACX,OAAO;YACL,OAAO,mBAAmB,CACxB,IAAI,EACJ,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAmD,CAC9E,CAAC;QACJ,CAAC;QACD,MAAM;YACJ,OAAO,mBAAmB,CACxB,IAAI,EACJ,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAA8C,CACtE,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,KAAa;YACnB,OAAO,mBAAmB,CACxB,IAAI,EACJ,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,KAAK,EAA4D,CAC3F,CAAC;QACJ,CAAC;QACD,UAAU;YACR,OAAO,mBAAmB,CACxB,IAAI,EACJ,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAsD,CAClF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,mBAAmB,CACxB,IAAI,EACJ,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAgD,CACzE,CAAC;QACJ,CAAC;KACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,OAAO;QACL,OAAO,mBAAmB,CAA0D,IAAI,EAAE;YACxF,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,IAAI;IAClB,OAAO,mBAAmB,CAA4B,MAAM,EAAE;QAC5D,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,OAAO,mBAAmB,CAA6B,MAAM,EAAE;QAC7D,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,OAAO,mBAAmB,CAA4B,KAAK,EAAE;QAC3D,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,mBAAmB,CAA0B,WAAW,EAAE;QAC/D,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TableDef } from "./table.js";
2
+ export type SchemaDef<TTables extends Record<string, TableDef>> = {
3
+ readonly _tables: TTables;
4
+ } & TTables;
5
+ export declare function defineSchema<TTables extends Record<string, TableDef>>(tables: TTables): SchemaDef<TTables>;
6
+ //# sourceMappingURL=define-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-schema.d.ts","sourceRoot":"","sources":["../../src/schema/define-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI;IAChE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC;AAEZ,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACnE,MAAM,EAAE,OAAO,GACd,SAAS,CAAC,OAAO,CAAC,CAEpB"}
@@ -0,0 +1,4 @@
1
+ export function defineSchema(tables) {
2
+ return Object.assign({ _tables: tables }, tables);
3
+ }
4
+ //# sourceMappingURL=define-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-schema.js","sourceRoot":"","sources":["../../src/schema/define-schema.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,YAAY,CAC1B,MAAe;IAEf,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,13 @@
1
+ export { id, text, bool, int, timestamp } from "./column.js";
2
+ export type { ColumnBuilder, ColumnKind, ColumnMeta } from "./column.js";
3
+ export { fk } from "./relation.js";
4
+ export type { FkBuilder, FkMeta, FkOptions, OnDeleteAction } from "./relation.js";
5
+ export { table, index, unique, primaryKey } from "./table.js";
6
+ export type { ColumnDef, ColumnRefs, IndexDef, PrimaryKeyDef, TableDef, TableExtra, } from "./table.js";
7
+ export { defineSchema } from "./define-schema.js";
8
+ export type { SchemaDef } from "./define-schema.js";
9
+ export { manyToMany, getManyToManyRegistry, clearManyToManyRegistry } from "./many-to-many.js";
10
+ export type { ManyToManyDef } from "./many-to-many.js";
11
+ export type { ConnectInput, ConnectOrCreateItem, CreateArgs, CreateInput, DeleteArgs, DeleteManyArgs, FindFirstArgs, FindByIdArgs, FindManyArgs, InferInsertRow, InferSelectRow, OrderByInput, OrderDirection, RelationWriteInput, SchemaTables, UpdateArgs, UpdateInput, UpdateManyArgs, WhereInput, WhereOperators, WithInput, WithInputMap, WithInclude, WithRelationOptions, SelectInput, RelationAccessors, } from "./types.js";
12
+ export type { SqlNameToAccessor, OutgoingFkRelations, InverseRelations, JunctionM2MRelations, } from "./relation-types.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAElF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EACV,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { id, text, bool, int, timestamp } from "./column.js";
2
+ export { fk } from "./relation.js";
3
+ export { table, index, unique, primaryKey } from "./table.js";
4
+ export { defineSchema } from "./define-schema.js";
5
+ export { manyToMany, getManyToManyRegistry, clearManyToManyRegistry } from "./many-to-many.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { TableDef } from "./table.js";
2
+ export type ManyToManyDef = {
3
+ kind: "manyToMany";
4
+ leftKey: string;
5
+ rightKey: string;
6
+ throughKey: string;
7
+ leftRelation: string;
8
+ rightRelation: string;
9
+ as: string;
10
+ inverse: string;
11
+ };
12
+ export declare function manyToMany<TLeft extends TableDef, TRight extends TableDef, TThrough extends TableDef>(left: TLeft, right: TRight, options: {
13
+ through: TThrough;
14
+ left: string;
15
+ right: string;
16
+ as: string;
17
+ inverse: string;
18
+ }): void;
19
+ export declare function getManyToManyRegistry(): readonly ManyToManyDef[];
20
+ export declare function clearManyToManyRegistry(): void;
21
+ //# sourceMappingURL=many-to-many.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"many-to-many.d.ts","sourceRoot":"","sources":["../../src/schema/many-to-many.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,wBAAgB,UAAU,CACxB,KAAK,SAAS,QAAQ,EACtB,MAAM,SAAS,QAAQ,EACvB,QAAQ,SAAS,QAAQ,EAEzB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,GACA,IAAI,CAWN;AAED,wBAAgB,qBAAqB,IAAI,SAAS,aAAa,EAAE,CAEhE;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
@@ -0,0 +1,20 @@
1
+ const manyToManyRegistry = [];
2
+ export function manyToMany(left, right, options) {
3
+ manyToManyRegistry.push({
4
+ kind: "manyToMany",
5
+ leftKey: left._tableName,
6
+ rightKey: right._tableName,
7
+ throughKey: options.through._tableName,
8
+ leftRelation: options.left,
9
+ rightRelation: options.right,
10
+ as: options.as,
11
+ inverse: options.inverse,
12
+ });
13
+ }
14
+ export function getManyToManyRegistry() {
15
+ return manyToManyRegistry;
16
+ }
17
+ export function clearManyToManyRegistry() {
18
+ manyToManyRegistry.length = 0;
19
+ }
20
+ //# sourceMappingURL=many-to-many.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"many-to-many.js","sourceRoot":"","sources":["../../src/schema/many-to-many.ts"],"names":[],"mappings":"AAaA,MAAM,kBAAkB,GAAoB,EAAE,CAAC;AAE/C,MAAM,UAAU,UAAU,CAKxB,IAAW,EACX,KAAa,EACb,OAMC;IAED,kBAAkB,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI,CAAC,UAAU;QACxB,QAAQ,EAAE,KAAK,CAAC,UAAU;QAC1B,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;QACtC,YAAY,EAAE,OAAO,CAAC,IAAI;QAC1B,aAAa,EAAE,OAAO,CAAC,KAAK;QAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { FkBuilder, FkMeta } from "./relation.js";
2
+ import type { ColumnDef, TableDef } from "./table.js";
3
+ import type { OrderByInput, OrderDirection } from "./types.js";
4
+ /** Expands mapped types so IDEs surface keys for autocomplete */
5
+ type Expand<T> = T extends infer O ? {
6
+ [K in keyof O]: O[K];
7
+ } : never;
8
+ type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
9
+ type FkMetaOf<C> = C extends FkBuilder ? C["_meta"] : never;
10
+ /** Map SQL table name (e.g. "users") to schema accessor (e.g. "users") */
11
+ export type SqlNameToAccessor<TSchema extends Record<string, TableDef>, TSqlName extends string> = {
12
+ [K in keyof TSchema & string]: TSchema[K]["_tableName"] extends TSqlName ? K : never;
13
+ }[keyof TSchema & string];
14
+ /** FK relations defined on this table's columns (as name -> target accessor) */
15
+ type OutgoingFkRelationEntry<TSchema extends Record<string, TableDef>, C extends ColumnDef> = FkMetaOf<C> extends infer M extends FkMeta ? M["as"] extends infer As extends string ? M["target"] extends `${infer Sql}.${string}` ? SqlNameToAccessor<TSchema, Sql> extends infer Acc extends keyof TSchema & string ? {
16
+ [P in As]: Acc;
17
+ } : never : never : never : never;
18
+ export type OutgoingFkRelations<TSchema extends Record<string, TableDef>, TColumns extends Record<string, ColumnDef>> = UnionToIntersection<{
19
+ [K in keyof TColumns]: OutgoingFkRelationEntry<TSchema, TColumns[K]>;
20
+ }[keyof TColumns]>;
21
+ /** Inverse relations from other tables pointing at this table (inverse name -> source accessor) */
22
+ type InverseRelationEntryForSource<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string, TSourceAccessor extends keyof TSchema & string, C extends ColumnDef> = FkMetaOf<C> extends infer M extends FkMeta ? M["target"] extends `${TSchema[TTargetAccessor]["_tableName"]}.${string}` ? M["inverse"] extends infer Inv extends string ? {
23
+ [P in Inv]: TSourceAccessor;
24
+ } : never : never : never;
25
+ export type InverseRelations<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = UnionToIntersection<{
26
+ [K in keyof TSchema & string]: UnionToIntersection<{
27
+ [C in keyof TSchema[K]["_columns"]]: InverseRelationEntryForSource<TSchema, TAccessor, K, TSchema[K]["_columns"][C]>;
28
+ }[keyof TSchema[K]["_columns"]]>;
29
+ }[keyof TSchema & string]>;
30
+ type FkColumnNames<TColumns extends Record<string, ColumnDef>> = {
31
+ [K in keyof TColumns]: TColumns[K] extends FkBuilder ? K : never;
32
+ }[keyof TColumns & string];
33
+ type UnionLength<T, Acc extends unknown[] = []> = [T] extends [never] ? Acc["length"] : T extends infer U ? UnionLength<Exclude<T, U>, [...Acc, U]> : Acc["length"];
34
+ type IsJunctionTable<TColumns extends Record<string, ColumnDef>> = UnionLength<FkColumnNames<TColumns>> extends 2 ? true : false;
35
+ type OtherFkTarget<TSchema extends Record<string, TableDef>, TThroughAccessor extends keyof TSchema & string, TCurrentAccessor extends keyof TSchema & string, TFkCol extends FkColumnNames<TSchema[TThroughAccessor]["_columns"]>> = FkMetaOf<TSchema[TThroughAccessor]["_columns"][TFkCol]> extends infer M extends FkMeta ? M["target"] extends `${TSchema[TCurrentAccessor]["_tableName"]}.${string}` ? never : M["target"] extends `${infer Sql}.${string}` ? SqlNameToAccessor<TSchema, Sql> : never : never;
36
+ /** M2M via junction tables: relation name = target table accessor */
37
+ type JunctionM2MEntry<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, TThroughAccessor extends keyof TSchema & string> = UnionToIntersection<{
38
+ [C in FkColumnNames<TSchema[TThroughAccessor]["_columns"]>]: OtherFkTarget<TSchema, TThroughAccessor, TAccessor, C> extends infer Target extends keyof TSchema & string ? {
39
+ [P in Target]: Target;
40
+ } : never;
41
+ }[FkColumnNames<TSchema[TThroughAccessor]["_columns"]>]>;
42
+ type HasFkTo<TSchema extends Record<string, TableDef>, TThroughAccessor extends keyof TSchema & string, TAccessor extends keyof TSchema & string> = {
43
+ [C in keyof TSchema[TThroughAccessor]["_columns"]]: FkMetaOf<TSchema[TThroughAccessor]["_columns"][C]> extends infer M extends FkMeta ? M["target"] extends `${TSchema[TAccessor]["_tableName"]}.${string}` ? true : never : never;
44
+ }[keyof TSchema[TThroughAccessor]["_columns"]] extends infer R ? [R] extends [never] ? false : true : false;
45
+ export type JunctionM2MRelations<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = UnionToIntersection<{
46
+ [K in keyof TSchema & string]: K extends TAccessor ? never : IsJunctionTable<TSchema[K]["_columns"]> extends true ? HasFkTo<TSchema, K, TAccessor> extends true ? JunctionM2MEntry<TSchema, TAccessor, K> : never : never;
47
+ }[keyof TSchema & string]>;
48
+ /** All relation names on a table -> target schema accessor */
49
+ export type RelationAccessors<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = OutgoingFkRelations<TSchema, TSchema[TAccessor]["_columns"]> & InverseRelations<TSchema, TAccessor> & JunctionM2MRelations<TSchema, TAccessor>;
50
+ export type ColumnNames<TColumns extends Record<string, ColumnDef>> = keyof TColumns & string;
51
+ /** Target schema accessor for a relation name on a table */
52
+ export type RelationTarget<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, TRelation extends keyof RelationAccessors<TSchema, TAccessor> & string> = RelationAccessors<TSchema, TAccessor>[TRelation];
53
+ type TargetColumns<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string> = TSchema[TTargetAccessor]["_columns"];
54
+ /** Column pick — array (`["id", "email"]`) or object (`{ id: true, email: true }`) */
55
+ export type SelectInput<TColumns extends Record<string, ColumnDef>> = readonly ColumnNames<TColumns>[] | Expand<{
56
+ [K in ColumnNames<TColumns>]?: true;
57
+ }>;
58
+ /** Options for a single relation include (select, orderBy, limit, nested with) */
59
+ export type WithRelationOptions<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string> = {
60
+ select?: SelectInput<TargetColumns<TSchema, TTargetAccessor>>;
61
+ orderBy?: OrderByInput<TargetColumns<TSchema, TTargetAccessor>>;
62
+ limit?: number;
63
+ with?: WithInputMap<TSchema, TTargetAccessor>;
64
+ };
65
+ export type WithInclude<TSchema extends Record<string, TableDef>, TRelation extends keyof RelationAccessors<TSchema, TAccessor> & string, TAccessor extends keyof TSchema & string> = boolean | WithRelationOptions<TSchema, RelationTarget<TSchema, TAccessor, TRelation> & keyof TSchema & string>;
66
+ /**
67
+ * Typed `with` map for a table.
68
+ * Uses required keys + `| undefined` (not `?`) so IDEs always suggest relation names.
69
+ */
70
+ export type WithInputMap<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = Expand<{
71
+ [R in keyof RelationAccessors<TSchema, TAccessor> & string]: WithInclude<TSchema, R, TAccessor> | undefined;
72
+ }>;
73
+ export type { OrderDirection };
74
+ //# sourceMappingURL=relation-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-types.d.ts","sourceRoot":"","sources":["../../src/schema/relation-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=relation-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-types.js","sourceRoot":"","sources":["../../src/schema/relation-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import type { ColumnMeta } from "./column.js";
2
+ export type OnDeleteAction = "cascade" | "restrict" | "set null" | "no action";
3
+ export type FkMeta = ColumnMeta & {
4
+ kind: "fk";
5
+ target: string;
6
+ as: string;
7
+ inverse: string;
8
+ onDelete?: OnDeleteAction;
9
+ };
10
+ export type FkBuilder = {
11
+ readonly _type: string | null;
12
+ readonly _meta: FkMeta;
13
+ notNull(): FkBuilder;
14
+ unique(): FkBuilder;
15
+ };
16
+ export type FkOptions = {
17
+ as: string;
18
+ inverse: string;
19
+ unique?: boolean;
20
+ nullable?: boolean;
21
+ onDelete?: OnDeleteAction;
22
+ };
23
+ export declare function fk(target: string, options: FkOptions): FkBuilder;
24
+ //# sourceMappingURL=relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/schema/relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAE/E,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG;IAChC,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,IAAI,SAAS,CAAC;IACrB,MAAM,IAAI,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,wBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,CAyBhE"}
@@ -0,0 +1,25 @@
1
+ export function fk(target, options) {
2
+ const meta = {
3
+ kind: "fk",
4
+ nullable: options.nullable !== false,
5
+ unique: options.unique ?? false,
6
+ primary: false,
7
+ defaultNow: false,
8
+ target,
9
+ as: options.as,
10
+ inverse: options.inverse,
11
+ ...(options.onDelete !== undefined ? { onDelete: options.onDelete } : {}),
12
+ };
13
+ const builder = {
14
+ _type: null,
15
+ _meta: meta,
16
+ notNull() {
17
+ return fk(target, { ...options, nullable: false });
18
+ },
19
+ unique() {
20
+ return fk(target, { ...options, unique: true });
21
+ },
22
+ };
23
+ return builder;
24
+ }
25
+ //# sourceMappingURL=relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/schema/relation.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,EAAE,CAAC,MAAc,EAAE,OAAkB;IACnD,MAAM,IAAI,GAAW;QACnB,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,KAAK;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,KAAK;QACjB,MAAM;QACN,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;IAEF,MAAM,OAAO,GAAc;QACzB,KAAK,EAAE,IAAqB;QAC5B,KAAK,EAAE,IAAI;QACX,OAAO;YACL,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,MAAM;YACJ,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { ColumnBuilder } from "./column.js";
2
+ import type { FkBuilder } from "./relation.js";
3
+ export type ColumnDef = ColumnBuilder<unknown> | FkBuilder;
4
+ export type IndexDef = {
5
+ kind: "index";
6
+ columns: readonly string[];
7
+ unique: boolean;
8
+ };
9
+ export type PrimaryKeyDef = {
10
+ kind: "primaryKey";
11
+ columns: readonly string[];
12
+ };
13
+ export type TableExtra = IndexDef | PrimaryKeyDef;
14
+ export type TableDef<TName extends string = string, TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>> = {
15
+ readonly _tableName: TName;
16
+ readonly _columns: TColumns;
17
+ readonly _extras: Record<string, TableExtra>;
18
+ };
19
+ export type ColumnRefs<TColumns extends Record<string, ColumnDef>> = {
20
+ readonly [K in keyof TColumns]: K & string;
21
+ };
22
+ export declare function index(): {
23
+ on(...columns: readonly string[]): IndexDef;
24
+ };
25
+ export declare function unique(...columns: readonly string[]): IndexDef;
26
+ export declare function primaryKey(...columns: readonly string[]): PrimaryKeyDef;
27
+ export declare function table<TName extends string, TColumns extends Record<string, ColumnDef>, TExtras extends Record<string, TableExtra> = Record<string, never>>(name: TName, columns: TColumns, extras?: (t: ColumnRefs<TColumns>) => TExtras): TableDef<TName, TColumns>;
28
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/schema/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAE3D,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAElD,MAAM,MAAM,QAAQ,CAClB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IACpE;IACF,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI;IACnE,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM;CAC3C,CAAC;AAEF,wBAAgB,KAAK,IAAI;IACvB,EAAE,CAAC,GAAG,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAAC;CAC7C,CAMA;AAED,wBAAgB,MAAM,CAAC,GAAG,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAE9D;AAED,wBAAgB,UAAU,CAAC,GAAG,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAEvE;AAED,wBAAgB,KAAK,CACnB,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1C,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAElE,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,OAAO,GAC5C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAY3B"}
@@ -0,0 +1,23 @@
1
+ export function index() {
2
+ return {
3
+ on(...columns) {
4
+ return { kind: "index", columns, unique: false };
5
+ },
6
+ };
7
+ }
8
+ export function unique(...columns) {
9
+ return { kind: "index", columns, unique: true };
10
+ }
11
+ export function primaryKey(...columns) {
12
+ return { kind: "primaryKey", columns };
13
+ }
14
+ export function table(name, columns, extras) {
15
+ const refs = Object.fromEntries(Object.keys(columns).map((k) => [k, k]));
16
+ const extraDefs = extras ? extras(refs) : {};
17
+ return {
18
+ _tableName: name,
19
+ _columns: columns,
20
+ _extras: extraDefs,
21
+ };
22
+ }
23
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/schema/table.ts"],"names":[],"mappings":"AA+BA,MAAM,UAAU,KAAK;IAGnB,OAAO;QACL,EAAE,CAAC,GAAG,OAA0B;YAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAG,OAA0B;IAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAG,OAA0B;IACtD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,KAAK,CAKnB,IAAW,EACX,OAAiB,EACjB,MAA6C;IAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAChB,CAAC;IAE1B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,EAAc,CAAC;IAE1D,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,115 @@
1
+ import type { ColumnBuilder } from "./column.js";
2
+ import type { FkBuilder } from "./relation.js";
3
+ import type { ColumnDef, TableDef } from "./table.js";
4
+ import type { WithInputMap } from "./relation-types.js";
5
+ type InferColumnValue<T> = T extends ColumnBuilder<infer V, infer M> ? M extends {
6
+ nullable: false;
7
+ } ? V : V | null : T extends FkBuilder ? T["_meta"] extends {
8
+ nullable: false;
9
+ } ? string : string | null : never;
10
+ type IsPrimary<T> = T extends ColumnBuilder<unknown, infer M> ? M extends {
11
+ primary: true;
12
+ } ? true : false : false;
13
+ type IsRequired<T> = T extends ColumnBuilder<unknown, infer M> ? M extends {
14
+ nullable: false;
15
+ primary: true;
16
+ } ? false : M extends {
17
+ nullable: false;
18
+ } ? true : false : T extends FkBuilder ? T["_meta"] extends {
19
+ nullable: false;
20
+ } ? true : false : false;
21
+ export type InferSelectRow<TColumns extends Record<string, ColumnDef>> = {
22
+ [K in keyof TColumns]: InferColumnValue<TColumns[K]>;
23
+ };
24
+ export type InferInsertRow<TColumns extends Record<string, ColumnDef>> = {
25
+ [K in keyof TColumns as IsPrimary<TColumns[K]> extends true ? never : K]?: InferColumnValue<TColumns[K]>;
26
+ } & {
27
+ [K in keyof TColumns as IsRequired<TColumns[K]> extends true ? K : never]: InferColumnValue<TColumns[K]>;
28
+ };
29
+ export type WhereOperators<T> = T extends string ? {
30
+ equals?: T;
31
+ contains?: T;
32
+ startsWith?: T;
33
+ endsWith?: T;
34
+ in?: readonly T[];
35
+ } : T extends number | boolean | Date ? {
36
+ equals?: T;
37
+ gt?: T;
38
+ gte?: T;
39
+ lt?: T;
40
+ lte?: T;
41
+ in?: readonly T[];
42
+ } : {
43
+ equals?: T;
44
+ };
45
+ export type WhereInput<TColumns extends Record<string, ColumnDef>> = {
46
+ [K in keyof TColumns]?: InferColumnValue<TColumns[K]> | WhereOperators<InferColumnValue<TColumns[K]>>;
47
+ };
48
+ export type OrderDirection = "asc" | "desc";
49
+ export type OrderByInput<TColumns extends Record<string, ColumnDef>> = {
50
+ [K in keyof TColumns]?: OrderDirection;
51
+ };
52
+ export type ConnectInput<TColumns extends Record<string, ColumnDef>> = {
53
+ id: InferColumnValue<TColumns[keyof TColumns & string]>;
54
+ };
55
+ export type ConnectOrCreateItem<TColumns extends Record<string, ColumnDef>> = {
56
+ where: Partial<InferSelectRow<TColumns>>;
57
+ create: InferInsertRow<TColumns>;
58
+ };
59
+ export type RelationWriteInput = {
60
+ connect?: {
61
+ id: string;
62
+ };
63
+ connectOrCreate?: ConnectOrCreateItem<Record<string, ColumnDef>>[];
64
+ };
65
+ export type CreateInput<TColumns extends Record<string, ColumnDef>> = Partial<InferInsertRow<TColumns>> & {
66
+ [key: string]: unknown;
67
+ };
68
+ /** @deprecated Use WithInputMap for typed relation includes */
69
+ export type WithInput = boolean | {
70
+ select?: readonly string[];
71
+ orderBy?: Record<string, OrderDirection>;
72
+ limit?: number;
73
+ with?: Record<string, WithInput>;
74
+ };
75
+ export type SchemaTables<TSchema extends Record<string, TableDef>> = {
76
+ [K in keyof TSchema]: InferSelectRow<TSchema[K]["_columns"]>;
77
+ };
78
+ export type FindManyArgs<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = {
79
+ where?: WhereInput<TSchema[TAccessor]["_columns"]>;
80
+ orderBy?: OrderByInput<TSchema[TAccessor]["_columns"]>;
81
+ limit?: number;
82
+ offset?: number;
83
+ with?: WithInputMap<TSchema, TAccessor>;
84
+ };
85
+ export type FindFirstArgs<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = FindManyArgs<TSchema, TAccessor>;
86
+ export type FindByIdArgs<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = {
87
+ with?: WithInputMap<TSchema, TAccessor>;
88
+ };
89
+ export type CreateArgs<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = {
90
+ data: CreateInput<TSchema[TAccessor]["_columns"]>;
91
+ with?: WithInputMap<TSchema, TAccessor>;
92
+ };
93
+ export type UpdateInput<TColumns extends Record<string, ColumnDef>> = {
94
+ [K in keyof TColumns as IsPrimary<TColumns[K]> extends true ? never : K]?: InferColumnValue<TColumns[K]>;
95
+ } & {
96
+ [key: string]: unknown;
97
+ };
98
+ export type UpdateArgs<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = {
99
+ where: WhereInput<TSchema[TAccessor]["_columns"]>;
100
+ data: UpdateInput<TSchema[TAccessor]["_columns"]>;
101
+ with?: WithInputMap<TSchema, TAccessor>;
102
+ };
103
+ export type UpdateManyArgs<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = {
104
+ where?: WhereInput<TSchema[TAccessor]["_columns"]>;
105
+ data: UpdateInput<TSchema[TAccessor]["_columns"]>;
106
+ };
107
+ export type DeleteArgs<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = {
108
+ where: WhereInput<TSchema[TAccessor]["_columns"]>;
109
+ with?: WithInputMap<TSchema, TAccessor>;
110
+ };
111
+ export type DeleteManyArgs<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = {
112
+ where?: WhereInput<TSchema[TAccessor]["_columns"]>;
113
+ };
114
+ export type { WithInputMap, WithInclude, RelationAccessors, SelectInput, WithRelationOptions } from "./relation-types.js";
115
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { type SqlFragment } from "./template.js";
2
+ type JoinBuilder = {
3
+ leftJoin(table: string, leftCol: string, rightCol: string): JoinBuilder;
4
+ innerJoin(table: string, leftCol: string, rightCol: string): JoinBuilder;
5
+ select(columns: readonly string[]): GroupBuilder;
6
+ };
7
+ type GroupBuilder = {
8
+ groupBy(...columns: string[]): OrderBuilder;
9
+ orderBy(column: string, direction?: "asc" | "desc"): OrderBuilder;
10
+ compile(): SqlFragment;
11
+ };
12
+ type OrderBuilder = GroupBuilder;
13
+ export declare const sqlBuilder: {
14
+ selectFrom(table: string): JoinBuilder;
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/sql/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAErE,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IACxE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IACzE,MAAM,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC;CAClD,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IAC5C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,YAAY,CAAC;IAClE,OAAO,IAAI,WAAW,CAAC;CACxB,CAAC;AAEF,KAAK,YAAY,GAAG,YAAY,CAAC;AAajC,eAAO,MAAM,UAAU;sBACH,MAAM,GAAG,WAAW;CA2CvC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { sqlFragment, sqlId } from "./template.js";
2
+ function parseQualifiedColumn(col) {
3
+ const parts = col.split(".");
4
+ if (parts.length === 2) {
5
+ return sqlFragment(`${sqlId(parts[0]).text}.${sqlId(parts[1]).text}`, []);
6
+ }
7
+ return sqlId(col);
8
+ }
9
+ export const sqlBuilder = {
10
+ selectFrom(table) {
11
+ const fromClause = sqlId(table).text;
12
+ const joins = [];
13
+ let selectCols = [];
14
+ let groupCols = [];
15
+ let orderClause = "";
16
+ const builder = {
17
+ leftJoin(joinTable, leftCol, rightCol) {
18
+ joins.push(`LEFT JOIN ${sqlId(joinTable).text} ON ${parseQualifiedColumn(leftCol).text} = ${parseQualifiedColumn(rightCol).text}`);
19
+ return builder;
20
+ },
21
+ innerJoin(joinTable, leftCol, rightCol) {
22
+ joins.push(`INNER JOIN ${sqlId(joinTable).text} ON ${parseQualifiedColumn(leftCol).text} = ${parseQualifiedColumn(rightCol).text}`);
23
+ return builder;
24
+ },
25
+ select(columns) {
26
+ selectCols = columns.map((c) => parseQualifiedColumn(c).text);
27
+ return builder;
28
+ },
29
+ groupBy(...columns) {
30
+ groupCols = columns.map((c) => parseQualifiedColumn(c).text);
31
+ return builder;
32
+ },
33
+ orderBy(column, direction = "asc") {
34
+ orderClause = `ORDER BY ${parseQualifiedColumn(column).text} ${direction.toUpperCase()}`;
35
+ return builder;
36
+ },
37
+ compile() {
38
+ let text = `SELECT ${selectCols.join(", ")} FROM ${fromClause}`;
39
+ if (joins.length > 0)
40
+ text += ` ${joins.join(" ")}`;
41
+ if (groupCols.length > 0)
42
+ text += ` GROUP BY ${groupCols.join(", ")}`;
43
+ if (orderClause)
44
+ text += ` ${orderClause}`;
45
+ return sqlFragment(text, []);
46
+ },
47
+ };
48
+ return builder;
49
+ },
50
+ };
51
+ //# sourceMappingURL=builder.js.map