neoorm 0.5.1 → 0.6.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 (80) hide show
  1. package/README.md +1 -1
  2. package/dist/codegen/diff-manifest.d.ts.map +1 -1
  3. package/dist/codegen/diff-manifest.js +3 -2
  4. package/dist/codegen/diff-manifest.js.map +1 -1
  5. package/dist/codegen/emit-models.d.ts.map +1 -1
  6. package/dist/codegen/emit-models.js +12 -4
  7. package/dist/codegen/emit-models.js.map +1 -1
  8. package/dist/codegen/generate.d.ts +0 -2
  9. package/dist/codegen/generate.d.ts.map +1 -1
  10. package/dist/codegen/generate.js +3 -26
  11. package/dist/codegen/generate.js.map +1 -1
  12. package/dist/codegen/schema-to-manifest.d.ts +1 -2
  13. package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
  14. package/dist/codegen/schema-to-manifest.js +126 -65
  15. package/dist/codegen/schema-to-manifest.js.map +1 -1
  16. package/dist/dialect/fk.d.ts +2 -0
  17. package/dist/dialect/fk.d.ts.map +1 -1
  18. package/dist/dialect/fk.js +27 -0
  19. package/dist/dialect/fk.js.map +1 -1
  20. package/dist/dialect/postgres.d.ts +1 -2
  21. package/dist/dialect/postgres.d.ts.map +1 -1
  22. package/dist/dialect/postgres.js +7 -9
  23. package/dist/dialect/postgres.js.map +1 -1
  24. package/dist/dialect/sqlite.d.ts.map +1 -1
  25. package/dist/dialect/sqlite.js +6 -7
  26. package/dist/dialect/sqlite.js.map +1 -1
  27. package/dist/dialect/types.d.ts +2 -0
  28. package/dist/dialect/types.d.ts.map +1 -1
  29. package/dist/init/templates.d.ts.map +1 -1
  30. package/dist/init/templates.js +11 -13
  31. package/dist/init/templates.js.map +1 -1
  32. package/dist/introspect/pull.d.ts.map +1 -1
  33. package/dist/introspect/pull.js +82 -33
  34. package/dist/introspect/pull.js.map +1 -1
  35. package/dist/plugins/builtin.d.ts +3 -5
  36. package/dist/plugins/builtin.d.ts.map +1 -1
  37. package/dist/plugins/builtin.js +6 -8
  38. package/dist/plugins/builtin.js.map +1 -1
  39. package/dist/runtime/client.d.ts +1 -0
  40. package/dist/runtime/client.d.ts.map +1 -1
  41. package/dist/runtime/client.js +6 -0
  42. package/dist/runtime/client.js.map +1 -1
  43. package/dist/runtime/query/strip.d.ts +5 -0
  44. package/dist/runtime/query/strip.d.ts.map +1 -0
  45. package/dist/runtime/query/strip.js +66 -0
  46. package/dist/runtime/query/strip.js.map +1 -0
  47. package/dist/runtime/types.d.ts +2 -1
  48. package/dist/runtime/types.d.ts.map +1 -1
  49. package/dist/schema/column-where.d.ts +23 -7
  50. package/dist/schema/column-where.d.ts.map +1 -1
  51. package/dist/schema/column.d.ts +27 -5
  52. package/dist/schema/column.d.ts.map +1 -1
  53. package/dist/schema/column.js +42 -8
  54. package/dist/schema/column.js.map +1 -1
  55. package/dist/schema/define-schema.d.ts.map +1 -1
  56. package/dist/schema/define-schema.js +34 -0
  57. package/dist/schema/define-schema.js.map +1 -1
  58. package/dist/schema/index.d.ts +7 -7
  59. package/dist/schema/index.d.ts.map +1 -1
  60. package/dist/schema/index.js +2 -2
  61. package/dist/schema/index.js.map +1 -1
  62. package/dist/schema/many-to-many.d.ts +2 -22
  63. package/dist/schema/many-to-many.d.ts.map +1 -1
  64. package/dist/schema/many-to-many.js +9 -43
  65. package/dist/schema/many-to-many.js.map +1 -1
  66. package/dist/schema/nested-relation-types.d.ts +15 -15
  67. package/dist/schema/nested-relation-types.d.ts.map +1 -1
  68. package/dist/schema/relation-types.d.ts +58 -40
  69. package/dist/schema/relation-types.d.ts.map +1 -1
  70. package/dist/schema/relation.d.ts +24 -30
  71. package/dist/schema/relation.d.ts.map +1 -1
  72. package/dist/schema/relation.js +59 -36
  73. package/dist/schema/relation.js.map +1 -1
  74. package/dist/schema/table.d.ts +16 -8
  75. package/dist/schema/table.d.ts.map +1 -1
  76. package/dist/schema/table.js +53 -13
  77. package/dist/schema/table.js.map +1 -1
  78. package/dist/schema/types.d.ts +9 -9
  79. package/dist/schema/types.d.ts.map +1 -1
  80. package/package.json +1 -1
@@ -1,4 +1,38 @@
1
+ function findPrimaryKeyColumn(table) {
2
+ for (const [tsName, col] of Object.entries(table._columns)) {
3
+ if (typeof col === "object" &&
4
+ col !== null &&
5
+ "_meta" in col &&
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ col._meta?.primary === true) {
8
+ return tsName;
9
+ }
10
+ }
11
+ for (const [tsName, col] of Object.entries(table._columns)) {
12
+ if (typeof col === "object" &&
13
+ col !== null &&
14
+ "_meta" in col &&
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ col._meta?.kind === "id") {
17
+ return tsName;
18
+ }
19
+ }
20
+ return undefined;
21
+ }
22
+ function assignTableAccessor(table, accessor) {
23
+ const sqlName = table._tableName || accessor;
24
+ const pkColumnName = findPrimaryKeyColumn(table);
25
+ const targetRef = pkColumnName ? `${sqlName}.${pkColumnName}` : `${sqlName}.`;
26
+ Object.assign(table, {
27
+ _tableName: sqlName,
28
+ _accessor: accessor,
29
+ _targetRef: targetRef,
30
+ });
31
+ }
1
32
  export function defineSchema(tables, options = {}) {
33
+ for (const [accessor, tableDef] of Object.entries(tables)) {
34
+ assignTableAccessor(tableDef, accessor);
35
+ }
2
36
  const base = {
3
37
  _tables: tables,
4
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"define-schema.js","sourceRoot":"","sources":["../../src/schema/define-schema.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,YAAY,CAC3B,MAAe,EACf,OAAO,GAAkB,EAAE;IAE3B,MAAM,IAAI,GAA4B;QACrC,OAAO,EAAE,MAAM;KACf,CAAC;IACF,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAuB,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"define-schema.js","sourceRoot":"","sources":["../../src/schema/define-schema.ts"],"names":[],"mappings":"AAaA,SAAS,oBAAoB,CAC5B,KAAe;IAEf,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,IACC,OAAO,GAAG,KAAK,QAAQ;YACvB,GAAG,KAAK,IAAI;YACZ,OAAO,IAAI,GAAG;YACd,8DAA8D;YAC7D,GAAW,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EACnC,CAAC;YACF,OAAO,MAAM,CAAC;QACf,CAAC;IACF,CAAC;IACD,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,IACC,OAAO,GAAG,KAAK,QAAQ;YACvB,GAAG,KAAK,IAAI;YACZ,OAAO,IAAI,GAAG;YACd,8DAA8D;YAC7D,GAAW,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,EAChC,CAAC;YACF,OAAO,MAAM,CAAC;QACf,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAe,EAAE,QAAgB;IAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,IAAI,QAAQ,CAAC;IAC7C,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;IAE9E,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QACpB,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,SAAS;KACrB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC3B,MAAe,EACf,OAAO,GAAkB,EAAE;IAE3B,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,IAAI,GAA4B;QACrC,OAAO,EAAE,MAAM;KACf,CAAC;IACF,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAuB,CAAC;AAC1D,CAAC"}
@@ -1,15 +1,15 @@
1
1
  export type { DecimalOptions, EnumTypeOptions, UuidOptions, } from "../plugins/builtin.js";
2
- export type { ColumnBuilder, ColumnKind, ColumnMeta } from "./column.js";
3
- export { bigint, bool, bytea, citext, decimal, enumType, id, int, intArray, json, jsonb, numeric, serial, text, textArray, timestamp, uuid, } from "./column.js";
2
+ export type { ColumnBuilder, ColumnKind, ColumnMeta, TimestampColumnBuilder, } from "./column.js";
3
+ export { bigint, bool, bytea, citext, decimal, enumType, id, int, intArray, json, jsonb, numeric, serial, text, textArray, timestamp, timestamps, uuid, } from "./column.js";
4
4
  export type { SchemaDef, SchemaOptions } from "./define-schema.js";
5
5
  export { defineSchema } from "./define-schema.js";
6
- export type { InlineManyToManyOptions, ManyToManyDef, ManyToManyExtra, } from "./many-to-many.js";
7
- export { clearManyToManyRegistry, getManyToManyRegistry, manyToMany, } from "./many-to-many.js";
6
+ export type { InlineManyToManyOptions, ManyToManyExtra, } from "./many-to-many.js";
7
+ export { manyToMany } from "./many-to-many.js";
8
8
  export { clearTableRegistry } from "./table-registry.js";
9
- export type { FkBuilder, FkMeta, FkOptions, OnDeleteAction, } from "./relation.js";
9
+ export type { FkBuilder, FkMeta, OnDeleteAction, } from "./relation.js";
10
10
  export { fk } from "./relation.js";
11
11
  export type { InlineM2MInverseRelations, InlineM2MInverseWhereMap, InlineM2MInverseWriteMap, InlineM2MRelations, InlineM2MWhereMap, InlineM2MWriteMap, InverseRelations, JunctionM2MRelations, NestedCreateInput, OutgoingFkRelations, RelationCreateMap, RelationUpdateMap, SqlNameToAccessor, } from "./relation-types.js";
12
- export type { ColumnDef, ColumnNaming, ColumnRefs, IndexDef, PrimaryKeyDef, ScalarColumnKeys, TableDef, TableExtra, TableOptions, } from "./table.js";
12
+ export type { ColumnDef, ColumnNaming, ColumnRefs, IndexDef, IndexWherePredicate, PrimaryKeyDef, ScalarColumnKeys, TableDef, TableExtra, TableOptions, } from "./table.js";
13
13
  export { index, primaryKey, table, unique } from "./table.js";
14
- export type { AggregateArgs, ApplyOmit, ApplySelect, ColumnWhereInput, ConnectInput, ConnectOrCreateItem, CountArgs, CountSelect, CreateArgs, CreateInput, CreateManyAndReturnArgs, CreateManyArgs, CreateManyInput, CursorInput, DeleteArgs, DeleteManyAndReturnArgs, DeleteManyArgs, ExistsArgs, FindByIdArgs, FindFirstArgs, FindManyArgs, FindOrCreateArgs, FindOrCreateResult, FindUniqueArgs, GroupByArgs, GroupByHaving, GroupByOrderBy, InferAggregateResult, InferCountResult, InferFindResult, InferGroupByResult, InferInsertRow, InferSelectRow, InferWithResult, LogicalWhereInput, ManyRelationFilter, NumericHaving, NumericUpdateOps, OmitInput, OrderByInput, OrderDirection, PaginateArgs, PaginateResult, QueryMode, RelationAccessors, RelationCountInput, RelationWhereMap, RelationWriteInput, ScalarPkName, ScalarSetOp, SchemaTables, SelectInput, UpdateArgs, UpdateInput, UpdateManyAndReturnArgs, UpdateManyArgs, UpsertArgs, WhereInput, WhereOperators, WithInclude, WithInput, WithInputMap, WithRelationOptions, } from "./types.js";
14
+ export type { AggregateArgs, ApplyOmit, ApplySelect, ColumnWhereInput, ConnectInput, ConnectOrCreateItem, CountArgs, CountSelect, CreateArgs, CreateInput, CreateManyAndReturnArgs, CreateManyArgs, CreateManyInput, CursorInput, DeleteArgs, DeleteManyAndReturnArgs, DeleteManyArgs, ExistsArgs, FindByIdArgs, FindFirstArgs, FindManyArgs, FindOrCreateArgs, FindOrCreateResult, FindUniqueArgs, GroupByArgs, GroupByHaving, GroupByOrderBy, InferAggregateResult, InferCountResult, InferFindResult, InferGroupByResult, InferInsertRow, InferSelectRow, InferWithResult, LogicalWhereInput, ManyRelationFilter, NumericHaving, NumericUpdateOps, OmitInput, OrderByInput, OrderDirection, PaginateArgs, PaginateResult, QueryMode, RelationAccessors, RelationCountInput, RelationWhereMap, RelationWriteInput, ScalarPkName, ScalarSetOp, SchemaTables, SelectInput, HiddenKeys, StripOmitKeys, StripResult, UpdateArgs, UpdateInput, UpdateManyAndReturnArgs, UpdateManyArgs, UpsertArgs, WhereInput, WhereOperators, WithInclude, WithInput, WithInputMap, WithRelationOptions, } from "./types.js";
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,cAAc,EACd,eAAe,EACf,WAAW,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,OAAO,EACP,QAAQ,EACR,EAAE,EACF,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,SAAS,EACT,IAAI,GACJ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EACX,uBAAuB,EACvB,aAAa,EACb,eAAe,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EACX,SAAS,EACT,MAAM,EACN,SAAS,EACT,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,YAAY,EACX,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,YAAY,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EACX,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,uBAAuB,EACvB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,EACT,YAAY,EACZ,mBAAmB,GACnB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,cAAc,EACd,eAAe,EACf,WAAW,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,aAAa,EACb,UAAU,EACV,UAAU,EACV,sBAAsB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,OAAO,EACP,QAAQ,EACR,EAAE,EACF,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,SAAS,EACT,UAAU,EACV,IAAI,GACJ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EACX,uBAAuB,EACvB,eAAe,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EACX,SAAS,EACT,MAAM,EACN,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,YAAY,EACX,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,YAAY,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EACX,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,uBAAuB,EACvB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,EACT,YAAY,EACZ,mBAAmB,GACnB,MAAM,YAAY,CAAC"}
@@ -1,6 +1,6 @@
1
- export { bigint, bool, bytea, citext, decimal, enumType, id, int, intArray, json, jsonb, numeric, serial, text, textArray, timestamp, uuid, } from "./column.js";
1
+ export { bigint, bool, bytea, citext, decimal, enumType, id, int, intArray, json, jsonb, numeric, serial, text, textArray, timestamp, timestamps, uuid, } from "./column.js";
2
2
  export { defineSchema } from "./define-schema.js";
3
- export { clearManyToManyRegistry, getManyToManyRegistry, manyToMany, } from "./many-to-many.js";
3
+ export { manyToMany } from "./many-to-many.js";
4
4
  export { clearTableRegistry } from "./table-registry.js";
5
5
  export { fk } from "./relation.js";
6
6
  export { index, primaryKey, table, unique } from "./table.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,OAAO,EACP,QAAQ,EACR,EAAE,EACF,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,SAAS,EACT,IAAI,GACJ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAOzD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AA2BnC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,OAAO,EACP,QAAQ,EACR,EAAE,EACF,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,SAAS,EACT,UAAU,EACV,IAAI,GACJ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMzD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AA4BnC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
@@ -1,15 +1,14 @@
1
- import type { TableDef } from "./table.js";
2
1
  export type ManyToManyExtra<TTarget extends string = string, TAs extends string = string, TInverse extends string = string> = {
3
2
  kind: "manyToMany";
4
3
  /** Target table accessor name (e.g. "tags"). */
5
4
  target: TTarget;
6
- /** Junction table SQL name. When omitted, a junction table is generated. */
5
+ /** Junction table accessor. When omitted, a junction table is generated. */
7
6
  through?: string;
8
7
  /** Junction column (TS name) referencing the source table. */
9
8
  leftKey?: string;
10
9
  /** Junction column (TS name) referencing the target table. */
11
10
  rightKey?: string;
12
- /** Relation name on the source table. Defaults to the column/extras key. */
11
+ /** Relation name on the source table. Defaults to the column key. */
13
12
  as: TAs;
14
13
  /** Relation name on the target table. Defaults to the source accessor. */
15
14
  inverse: TInverse;
@@ -27,25 +26,6 @@ type ManyToManyAsOf<T extends InlineManyToManyOptions> = T extends {
27
26
  type ManyToManyInverseOf<T extends InlineManyToManyOptions> = T extends {
28
27
  inverse: infer Inv extends string;
29
28
  } ? Inv : "";
30
- export type ManyToManyDef = {
31
- kind: "manyToMany";
32
- leftKey: string;
33
- rightKey: string;
34
- throughKey: string;
35
- leftRelation: string;
36
- rightRelation: string;
37
- as: string;
38
- inverse: string;
39
- };
40
29
  export declare function manyToMany<const TTarget extends string, const TOptions extends InlineManyToManyOptions = {}>(target: TTarget, options?: TOptions): ManyToManyExtra<TTarget, ManyToManyAsOf<TOptions>, ManyToManyInverseOf<TOptions>>;
41
- export declare function manyToMany<TLeft extends TableDef, TRight extends TableDef, TThrough extends TableDef>(left: TLeft, right: TRight, options: {
42
- through: TThrough;
43
- left: string;
44
- right: string;
45
- as: string;
46
- inverse: string;
47
- }): void;
48
- export declare function getManyToManyRegistry(): readonly ManyToManyDef[];
49
- export declare function clearManyToManyRegistry(): void;
50
30
  export {};
51
31
  //# sourceMappingURL=many-to-many.d.ts.map
@@ -1 +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,eAAe,CAC1B,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,QAAQ,SAAS,MAAM,GAAG,MAAM,IAC7B;IACH,IAAI,EAAE,YAAY,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,EAAE,EAAE,GAAG,CAAC;IACR,0EAA0E;IAC1E,OAAO,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,cAAc,CAAC,CAAC,SAAS,uBAAuB,IAAI,CAAC,SAAS;IAClE,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,CAAC;CAC5B,GACE,EAAE,GACF,EAAE,CAAC;AAEN,KAAK,mBAAmB,CAAC,CAAC,SAAS,uBAAuB,IAAI,CAAC,SAAS;IACvE,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,CAAC;CAClC,GACE,GAAG,GACH,EAAE,CAAC;AAEN,MAAM,MAAM,aAAa,GAAG;IAC3B,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;CAChB,CAAC;AAaF,wBAAgB,UAAU,CACzB,KAAK,CAAC,OAAO,SAAS,MAAM,EAC5B,KAAK,CAAC,QAAQ,SAAS,uBAAuB,GAAG,EAAE,EAEnD,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,QAAQ,GAChB,eAAe,CACjB,OAAO,EACP,cAAc,CAAC,QAAQ,CAAC,EACxB,mBAAmB,CAAC,QAAQ,CAAC,CAC7B,CAAC;AACF,wBAAgB,UAAU,CACzB,KAAK,SAAS,QAAQ,EACtB,MAAM,SAAS,QAAQ,EACvB,QAAQ,SAAS,QAAQ,EAEzB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACR,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CAChB,GACC,IAAI,CAAC;AAwCR,wBAAgB,qBAAqB,IAAI,SAAS,aAAa,EAAE,CAEhE;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
1
+ {"version":3,"file":"many-to-many.d.ts","sourceRoot":"","sources":["../../src/schema/many-to-many.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAC1B,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,QAAQ,SAAS,MAAM,GAAG,MAAM,IAC7B;IACH,IAAI,EAAE,YAAY,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,EAAE,EAAE,GAAG,CAAC;IACR,0EAA0E;IAC1E,OAAO,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,cAAc,CAAC,CAAC,SAAS,uBAAuB,IAAI,CAAC,SAAS;IAClE,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,CAAC;CAC5B,GACE,EAAE,GACF,EAAE,CAAC;AAEN,KAAK,mBAAmB,CAAC,CAAC,SAAS,uBAAuB,IAAI,CAAC,SAAS;IACvE,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,CAAC;CAClC,GACE,GAAG,GACH,EAAE,CAAC;AAEN,wBAAgB,UAAU,CACzB,KAAK,CAAC,OAAO,SAAS,MAAM,EAC5B,KAAK,CAAC,QAAQ,SAAS,uBAAuB,GAAG,EAAE,EAEnD,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,QAAQ,GAChB,eAAe,CACjB,OAAO,EACP,cAAc,CAAC,QAAQ,CAAC,EACxB,mBAAmB,CAAC,QAAQ,CAAC,CAC7B,CAUA"}
@@ -1,46 +1,12 @@
1
- // The registry lives on globalThis so every module instance (src vs dist,
2
- // tsx tsImport vs Node import) shares the same array — a schema module loaded
3
- // through tsImport evaluates its DSL imports in an isolated module graph, so a
4
- // module-local array would never be visible to the codegen process reading it.
5
- const REGISTRY_KEY = Symbol.for("neoorm.manyToManyRegistry");
6
- function registry() {
7
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
- return (globalThis[REGISTRY_KEY] ??= []);
9
- }
10
- export function manyToMany(
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
- ...args) {
13
- const [first, second, third] = args;
14
- if (typeof first === "string") {
15
- const options = second;
16
- return {
17
- kind: "manyToMany",
18
- target: first,
19
- ...(options?.through ? { through: options.through } : {}),
20
- ...(options?.leftKey ? { leftKey: options.leftKey } : {}),
21
- ...(options?.rightKey ? { rightKey: options.rightKey } : {}),
22
- as: options?.as ?? "",
23
- inverse: options?.inverse ?? "",
24
- };
25
- }
26
- const left = first;
27
- const right = second;
28
- const options = third;
29
- registry().push({
1
+ export function manyToMany(target, options) {
2
+ return {
30
3
  kind: "manyToMany",
31
- leftKey: left._tableName,
32
- rightKey: right._tableName,
33
- throughKey: options.through._tableName,
34
- leftRelation: options.left,
35
- rightRelation: options.right,
36
- as: options.as,
37
- inverse: options.inverse,
38
- });
39
- }
40
- export function getManyToManyRegistry() {
41
- return registry();
42
- }
43
- export function clearManyToManyRegistry() {
44
- registry().length = 0;
4
+ target,
5
+ ...(options?.through ? { through: options.through } : {}),
6
+ ...(options?.leftKey ? { leftKey: options.leftKey } : {}),
7
+ ...(options?.rightKey ? { rightKey: options.rightKey } : {}),
8
+ as: (options?.as ?? ""),
9
+ inverse: (options?.inverse ?? ""),
10
+ };
45
11
  }
46
12
  //# sourceMappingURL=many-to-many.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"many-to-many.js","sourceRoot":"","sources":["../../src/schema/many-to-many.ts"],"names":[],"mappings":"AAqDA,0EAA0E;AAC1E,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAE7D,SAAS,QAAQ;IAChB,8DAA8D;IAC9D,OAAO,CAAE,UAAkB,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AA4BD,MAAM,UAAU,UAAU;AACzB,8DAA8D;AAC9D,GAAG,IAAW;IAEd,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,MAA6C,CAAC;QAC9D,OAAO;YACN,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE;YACrB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;SAC/B,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC;IACrB,MAAM,OAAO,GAAG,KAMf,CAAC;IACF,QAAQ,EAAE,CAAC,IAAI,CAAC;QACf,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;KACxB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACpC,OAAO,QAAQ,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACtC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"many-to-many.js","sourceRoot":"","sources":["../../src/schema/many-to-many.ts"],"names":[],"mappings":"AAwCA,MAAM,UAAU,UAAU,CAIzB,MAAe,EACf,OAAkB;IAMlB,OAAO;QACN,IAAI,EAAE,YAAY;QAClB,MAAM;QACN,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAA6B;QACnD,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAkC;KAClE,CAAC;AACH,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import type { ColumnBuilder } from "./column.js";
2
2
  import type { FkBuilder, FkMeta } from "./relation.js";
3
- import type { ConnectInput, FkInverseName, FkRelationName, InferInsertRow, SqlNameToAccessor } from "./relation-types.js";
3
+ import type { ConnectInput, FkInverseName, FkRelationName, InferInsertRow } from "./relation-types.js";
4
4
  import type { ColumnDef, TableDef } from "./table.js";
5
5
  type Expand<T> = T extends infer O ? {
6
6
  [K in keyof O]: O[K];
7
7
  } : never;
8
- type FkMetaOf<C> = C extends FkBuilder<infer TTarget, infer TAs, infer TInverse> ? FkMeta<TTarget, TAs, TInverse> : never;
8
+ type FkMetaOf<C> = C extends FkBuilder<infer TTarget, infer TAs, infer TInverse, infer TUnique, infer TNullable> ? FkMeta<TTarget, TAs, TInverse, TUnique, TNullable> : never;
9
9
  type FkColumnNames<TColumns extends Record<string, ColumnDef>> = {
10
10
  [K in keyof TColumns]: TColumns[K] extends FkBuilder ? K : never;
11
11
  }[keyof TColumns & string];
@@ -20,43 +20,43 @@ type HasPrimaryIdColumn<TColumns extends Record<string, ColumnDef>> = {
20
20
  type IsThroughTable<TColumns extends Record<string, ColumnDef>> = [
21
21
  HasPrimaryIdColumn<TColumns>
22
22
  ] extends [never] ? HasExactlyTwoFks<TColumns> : false;
23
- type FkTargetMatchesAccessor<TSchema extends Record<string, TableDef>, TTarget extends string, TAccessor extends keyof TSchema & string> = [TTarget] extends [`${TSchema[TAccessor]["_tableName"]}.${string}`] ? true : false;
23
+ type FkTargetMatchesAccessor<TSchema extends Record<string, TableDef>, TTarget extends string, TAccessor extends keyof TSchema & string> = [TTarget] extends [`${TAccessor}.${string}`] ? true : [TTarget] extends [TAccessor] ? true : false;
24
24
  type DisconnectWriteForFk<C extends ColumnDef> = C extends FkBuilder ? C["_meta"] extends {
25
25
  nullable: true;
26
26
  } ? {
27
27
  disconnect?: true;
28
28
  } : Record<never, never> : Record<never, never>;
29
29
  type ShallowToOneRelationWriteForAccessor<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, TFkColumn extends ColumnDef> = TAccessor extends keyof TSchema & string ? {
30
- connect?: ConnectInput<TSchema[TAccessor]["_columns"]>;
31
- create?: InferInsertRow<TSchema[TAccessor]["_columns"]>;
30
+ connect?: ConnectInput<TSchema[TAccessor]["_columns"], TSchema>;
31
+ create?: InferInsertRow<TSchema[TAccessor]["_columns"], TSchema>;
32
32
  } & DisconnectWriteForFk<TFkColumn> : never;
33
+ type FkTargetAccessor<TSchema extends Record<string, TableDef>, TTarget extends string> = TTarget extends `${infer Acc}.${string}` ? Acc extends keyof TSchema & string ? Acc : never : TTarget extends keyof TSchema & string ? TTarget : never;
33
34
  type ShallowOutgoingFkRelationWriteMap<TSchema extends Record<string, TableDef>, TColumns extends Record<string, ColumnDef>> = {
34
35
  [K in keyof TColumns & string as TColumns[K] extends FkBuilder ? TColumns[K]["_meta"] extends FkMeta ? TColumns[K]["_meta"] extends {
35
36
  as: infer As extends string;
36
- target: `${infer Sql}.${string}`;
37
- } ? SqlNameToAccessor<TSchema, Sql> extends keyof TSchema & string ? FkRelationName<As, K> : never : never : never : never]?: TColumns[K] extends FkBuilder ? TColumns[K]["_meta"] extends FkMeta ? TColumns[K]["_meta"]["target"] extends `${infer Sql}.${string}` ? SqlNameToAccessor<TSchema, Sql> extends infer Acc extends keyof TSchema & string ? Acc extends keyof TSchema & string ? ShallowToOneRelationWriteForAccessor<TSchema, Acc, TColumns[K]> : never : never : never : never : never;
37
+ } ? FkTargetAccessor<TSchema, TColumns[K]["_meta"]["target"]> extends keyof TSchema & string ? FkRelationName<As, K> : never : never : never : never]?: TColumns[K] extends FkBuilder ? TColumns[K]["_meta"] extends FkMeta ? FkTargetAccessor<TSchema, TColumns[K]["_meta"]["target"]> extends infer Acc extends keyof TSchema & string ? ShallowToOneRelationWriteForAccessor<TSchema, Acc, TColumns[K]> : never : never : never;
38
38
  };
39
39
  type ParentFkColumnOnChild<TSchema extends Record<string, TableDef>, TParentAccessor extends keyof TSchema & string, TChildAccessor extends keyof TSchema & string> = {
40
40
  [K in FkColumnNames<TSchema[TChildAccessor]["_columns"]>]: FkMetaOf<TSchema[TChildAccessor]["_columns"][K]> extends {
41
41
  target: infer TTarget extends string;
42
42
  } ? FkTargetMatchesAccessor<TSchema, TTarget, TParentAccessor> extends true ? K : never : never;
43
43
  }[FkColumnNames<TSchema[TChildAccessor]["_columns"]>];
44
- export type NestedCreateInput<TSchema extends Record<string, TableDef>, TParentAccessor extends keyof TSchema & string, TChildAccessor extends keyof TSchema & string> = Omit<Expand<InferInsertRow<TSchema[TChildAccessor]["_columns"]> & ShallowOutgoingFkRelationWriteMap<TSchema, TSchema[TChildAccessor]["_columns"]>>, ParentFkColumnOnChild<TSchema, TParentAccessor, TChildAccessor>>;
44
+ export type NestedCreateInput<TSchema extends Record<string, TableDef>, TParentAccessor extends keyof TSchema & string, TChildAccessor extends keyof TSchema & string> = Omit<Expand<InferInsertRow<TSchema[TChildAccessor]["_columns"], TSchema> & ShallowOutgoingFkRelationWriteMap<TSchema, TSchema[TChildAccessor]["_columns"]>>, ParentFkColumnOnChild<TSchema, TParentAccessor, TChildAccessor>>;
45
45
  type ToOneRelationWrite<TSchema extends Record<string, TableDef>, TParentAccessor extends keyof TSchema & string, TChildAccessor extends keyof TSchema & string> = {
46
46
  create?: NestedCreateInput<TSchema, TParentAccessor, TChildAccessor>;
47
- connect?: ConnectInput<TSchema[TChildAccessor]["_columns"]>;
47
+ connect?: ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema>;
48
48
  disconnect?: true;
49
- delete?: ConnectInput<TSchema[TChildAccessor]["_columns"]>;
49
+ delete?: ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema>;
50
50
  };
51
51
  type ToManyRelationWrite<TSchema extends Record<string, TableDef>, TParentAccessor extends keyof TSchema & string, TChildAccessor extends keyof TSchema & string> = {
52
52
  create?: NestedCreateInput<TSchema, TParentAccessor, TChildAccessor> | NestedCreateInput<TSchema, TParentAccessor, TChildAccessor>[];
53
- connect?: ConnectInput<TSchema[TChildAccessor]["_columns"]> | ConnectInput<TSchema[TChildAccessor]["_columns"]>[];
54
- disconnect?: true | ConnectInput<TSchema[TChildAccessor]["_columns"]> | ConnectInput<TSchema[TChildAccessor]["_columns"]>[];
55
- delete?: true | ConnectInput<TSchema[TChildAccessor]["_columns"]> | ConnectInput<TSchema[TChildAccessor]["_columns"]>[];
56
- set?: ConnectInput<TSchema[TChildAccessor]["_columns"]>[];
53
+ connect?: ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema> | ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema>[];
54
+ disconnect?: true | ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema> | ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema>[];
55
+ delete?: true | ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema> | ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema>[];
56
+ set?: ConnectInput<TSchema[TChildAccessor]["_columns"], TSchema>[];
57
57
  };
58
58
  type InverseRelationWriteEntriesForTable<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, TSourceAccessor extends keyof TSchema & string> = IsThroughTable<TSchema[TSourceAccessor]["_columns"]> extends true ? never : {
59
- [K in FkColumnNames<TSchema[TSourceAccessor]["_columns"]> as TSchema[TSourceAccessor]["_columns"][K] extends FkBuilder<infer TTarget extends string, infer _As, infer Inv extends string> ? FkTargetMatchesAccessor<TSchema, TTarget, TAccessor> extends true ? FkInverseName<Inv, K> : never : never]?: TSchema[TSourceAccessor]["_columns"][K] extends FkBuilder ? TSchema[TSourceAccessor]["_columns"][K]["_meta"] extends {
59
+ [K in FkColumnNames<TSchema[TSourceAccessor]["_columns"]> as TSchema[TSourceAccessor]["_columns"][K] extends FkBuilder<infer TTarget extends string, infer _As, infer Inv extends string, infer _Unique extends boolean, infer _Nullable extends boolean> ? FkTargetMatchesAccessor<TSchema, TTarget, TAccessor> extends true ? FkInverseName<Inv, K> : never : never]?: TSchema[TSourceAccessor]["_columns"][K] extends FkBuilder ? TSchema[TSourceAccessor]["_columns"][K]["_meta"] extends {
60
60
  unique: true;
61
61
  } ? ToOneRelationWrite<TSchema, TAccessor, TSourceAccessor> : ToManyRelationWrite<TSchema, TAccessor, TSourceAccessor> : never;
62
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"nested-relation-types.d.ts","sourceRoot":"","sources":["../../src/schema/nested-relation-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nested-relation-types.d.ts","sourceRoot":"","sources":["../../src/schema/nested-relation-types.ts"],"names":[],"mappings":"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"}
@@ -18,28 +18,26 @@ type IsRequired<T> = T extends ColumnBuilder<unknown, infer M> ? M extends {
18
18
  defaultValue: unknown;
19
19
  } ? false : M extends {
20
20
  nullable: false;
21
- } ? true : false : T extends FkBuilder ? T["_meta"] extends {
22
- nullable: false;
23
- } ? true : false : false;
24
- export type InferSelectRow<TColumns extends Record<string, ColumnDef>> = {
25
- [K in ScalarColumnKeys<TColumns>]: InferColumnValue<TColumns[K]>;
21
+ } ? true : false : T extends FkBuilder ? false : false;
22
+ export type InferSelectRow<TColumns extends Record<string, ColumnDef>, TSchema extends Record<string, TableDef> = Record<string, TableDef>> = {
23
+ [K in ScalarColumnKeys<TColumns>]: InferColumnValue<TColumns[K], TSchema>;
26
24
  };
27
- export type InferInsertRow<TColumns extends Record<string, ColumnDef>> = {
28
- [K in ScalarColumnKeys<TColumns> as IsPrimary<TColumns[K]> extends true ? never : IsGenerated<TColumns[K]> extends true ? never : K]?: InferColumnValue<TColumns[K]>;
25
+ export type InferInsertRow<TColumns extends Record<string, ColumnDef>, TSchema extends Record<string, TableDef> = Record<string, TableDef>> = {
26
+ [K in ScalarColumnKeys<TColumns> as IsPrimary<TColumns[K]> extends true ? never : IsGenerated<TColumns[K]> extends true ? never : K]?: InferColumnValue<TColumns[K], TSchema>;
29
27
  } & {
30
- [K in ScalarColumnKeys<TColumns> as IsRequired<TColumns[K]> extends true ? K : never]: InferColumnValue<TColumns[K]>;
28
+ [K in ScalarColumnKeys<TColumns> as IsRequired<TColumns[K]> extends true ? K : never]: InferColumnValue<TColumns[K], TSchema>;
31
29
  };
32
- type PrimaryIdValue<TColumns extends Record<string, ColumnDef>> = {
30
+ type PrimaryIdValue<TColumns extends Record<string, ColumnDef>, TSchema extends Record<string, TableDef> = Record<string, TableDef>> = {
33
31
  [K in keyof TColumns]: TColumns[K] extends ColumnBuilder<unknown, infer M> ? M extends {
34
32
  primary: true;
35
- } ? InferColumnValue<TColumns[K]> : never : never;
33
+ } ? InferColumnValue<TColumns[K], TSchema> : never : never;
36
34
  }[keyof TColumns & string];
37
- export type ConnectInput<TColumns extends Record<string, ColumnDef>> = {
38
- id: [PrimaryIdValue<TColumns>] extends [never] ? string : PrimaryIdValue<TColumns>;
35
+ export type ConnectInput<TColumns extends Record<string, ColumnDef>, TSchema extends Record<string, TableDef> = Record<string, TableDef>> = {
36
+ id: [PrimaryIdValue<TColumns, TSchema>] extends [never] ? string : PrimaryIdValue<TColumns, TSchema>;
39
37
  };
40
- export type ConnectOrCreateItem<TColumns extends Record<string, ColumnDef>> = {
41
- where: Partial<InferSelectRow<TColumns>>;
42
- create: InferInsertRow<TColumns>;
38
+ export type ConnectOrCreateItem<TColumns extends Record<string, ColumnDef>, TSchema extends Record<string, TableDef> = Record<string, TableDef>> = {
39
+ where: Partial<InferSelectRow<TColumns, TSchema>>;
40
+ create: InferInsertRow<TColumns, TSchema>;
43
41
  };
44
42
  export type OrderDirection = "asc" | "desc";
45
43
  export type OrderByInput<TColumns extends Record<string, ColumnDef>> = {
@@ -51,7 +49,7 @@ export type ScalarPkName<TColumns extends Record<string, ColumnDef>> = {
51
49
  } ? K : never : never;
52
50
  }[keyof TColumns & string];
53
51
  export type PrimaryKeyColumns<TColumns extends Record<string, ColumnDef>> = ScalarPkName<TColumns>;
54
- export type CursorInput<TColumns extends Record<string, ColumnDef>, TOrderBy extends OrderByInput<TColumns>> = Pick<InferSelectRow<TColumns>, (keyof TOrderBy & keyof TColumns & ScalarColumnKeys<TColumns>) | ScalarPkName<TColumns>>;
52
+ export type CursorInput<TColumns extends Record<string, ColumnDef>, TOrderBy extends OrderByInput<TColumns>, TSchema extends Record<string, TableDef> = Record<string, TableDef>> = Pick<InferSelectRow<TColumns, TSchema>, (keyof TOrderBy & keyof TColumns & ScalarColumnKeys<TColumns>) | ScalarPkName<TColumns>>;
55
53
  /** Expands mapped types so IDEs surface keys for autocomplete */
56
54
  type Expand<T> = T extends infer O ? {
57
55
  [K in keyof O]: O[K];
@@ -70,14 +68,14 @@ type MergeInverseRelationUnion<U> = {
70
68
  [P in K]: unknown;
71
69
  }>[K];
72
70
  };
73
- type FkMetaOf<C> = C extends FkBuilder<infer TTarget, infer TAs, infer TInverse> ? FkMeta<TTarget, TAs, TInverse> : never;
71
+ type FkMetaOf<C> = C extends FkBuilder<infer TTarget, infer TAs, infer TInverse, infer TUnique, infer TNullable> ? FkMeta<TTarget, TAs, TInverse, TUnique, TNullable> : never;
74
72
  /** Mirrors runtime `inferFkAs`: strips a trailing `Id`/`_id` suffix. */
75
73
  type InferFkAs<C extends string> = C extends `${infer B}Id` ? B : C extends `${infer B}_id` ? B : C;
76
74
  /** Basic pluralizer matching the runtime default for omitted inverses. */
77
75
  type Pluralize<S extends string> = S extends `${infer B}${"ch" | "sh"}` ? `${S}es` : S extends `${infer B}${"s" | "x" | "z"}` ? `${S}es` : S extends `${infer B}y` ? B extends `${string}${"a" | "e" | "i" | "o" | "u"}` ? `${S}s` : `${B}ies` : `${S}s`;
78
76
  type InferFkInverse<C extends string> = Pluralize<InferFkAs<C>>;
79
- export type FkRelationName<As extends string, K extends string> = As extends "" ? InferFkAs<K> : As;
80
- export type FkInverseName<Inv extends string, K extends string> = Inv extends "" ? InferFkInverse<K> : Inv;
77
+ export type FkRelationName<As extends string, K extends string> = string extends As ? InferFkAs<K> : As extends "" ? InferFkAs<K> : As;
78
+ export type FkInverseName<Inv extends string, K extends string> = string extends Inv ? InferFkInverse<K> : Inv extends "" ? InferFkInverse<K> : Inv;
81
79
  type FkColumnNames<TColumns extends Record<string, ColumnDef>> = {
82
80
  [K in keyof TColumns]: TColumns[K] extends FkBuilder ? K : never;
83
81
  }[keyof TColumns & string];
@@ -101,9 +99,11 @@ export type SqlNameToAccessor<TSchema extends Record<string, TableDef>, TSqlName
101
99
  type OutgoingFkRelationEntry<TSchema extends Record<string, TableDef>, C extends ColumnDef, K extends string> = FkMetaOf<C> extends {
102
100
  target: infer TTarget extends string;
103
101
  as: infer As extends string;
104
- } ? TTarget extends `${infer Sql}.${string}` ? SqlNameToAccessor<TSchema, Sql> extends infer Acc extends keyof TSchema & string ? IsThroughTable<TSchema[Acc]["_columns"]> extends true ? never : {
102
+ } ? TTarget extends `${infer Acc}.${string}` ? Acc extends keyof TSchema & string ? IsThroughTable<TSchema[Acc]["_columns"]> extends true ? never : {
105
103
  [P in FkRelationName<As, K>]: Acc;
106
- } : never : never : never;
104
+ } : never : TTarget extends keyof TSchema & string ? IsThroughTable<TSchema[TTarget]["_columns"]> extends true ? never : {
105
+ [P in FkRelationName<As, K>]: TTarget;
106
+ } : never : never;
107
107
  export type OutgoingFkRelations<TSchema extends Record<string, TableDef>, TColumns extends Record<string, ColumnDef>> = MergeRelationUnion<{
108
108
  [K in keyof TColumns]: OutgoingFkRelationEntry<TSchema, TColumns[K], K & string>;
109
109
  }[keyof TColumns]>;
@@ -112,9 +112,11 @@ export type InverseRelationEntryForSource<TSchema extends Record<string, TableDe
112
112
  target: infer TTarget extends string;
113
113
  inverse: infer Inv extends string;
114
114
  } ? [TTarget] extends [
115
- `${TSchema[TTargetAccessor]["_tableName"]}.${string}`
115
+ `${TTargetAccessor & string}.${string}`
116
116
  ] ? {
117
117
  [P in FkInverseName<Inv, K>]: TSourceAccessor;
118
+ } : [TTarget] extends [TTargetAccessor] ? {
119
+ [P in FkInverseName<Inv, K>]: TSourceAccessor;
118
120
  } : never : never;
119
121
  export type InverseRelationEntriesForTable<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, TSourceAccessor extends keyof TSchema & string> = {
120
122
  [K in FkColumnNames<TSchema[TSourceAccessor]["_columns"]>]: InverseRelationEntryForSource<TSchema, TAccessor, TSourceAccessor, TSchema[TSourceAccessor]["_columns"][K], K>;
@@ -122,10 +124,10 @@ export type InverseRelationEntriesForTable<TSchema extends Record<string, TableD
122
124
  export type InverseRelations<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string> = MergeInverseRelationUnion<{
123
125
  [K in keyof TSchema & string]: MergeInverseRelationUnion<InverseRelationEntriesForTable<TSchema, TAccessor, K>>;
124
126
  }[keyof TSchema & string]>;
125
- type FkTargetMatchesAccessor<TSchema extends Record<string, TableDef>, TTarget extends string, TAccessor extends keyof TSchema & string> = [TTarget] extends [`${TSchema[TAccessor]["_tableName"]}.${string}`] ? true : false;
127
+ type FkTargetMatchesAccessor<TSchema extends Record<string, TableDef>, TTarget extends string, TAccessor extends keyof TSchema & string> = [TTarget] extends [`${TAccessor}.${string}`] ? true : [TTarget] extends [TAccessor] ? true : false;
126
128
  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 {
127
129
  target: infer TTarget extends string;
128
- } ? FkTargetMatchesAccessor<TSchema, TTarget, TCurrentAccessor> extends true ? never : TTarget extends `${infer Sql}.${string}` ? SqlNameToAccessor<TSchema, Sql> : never : never;
130
+ } ? FkTargetMatchesAccessor<TSchema, TTarget, TCurrentAccessor> extends true ? never : TTarget extends `${infer Acc}.${string}` ? Acc extends keyof TSchema & string ? Acc : never : TTarget extends keyof TSchema & string ? TTarget : never : never;
129
131
  /** M2M via junction tables: relation name = target table accessor */
130
132
  type JunctionM2MEntry<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, TThroughAccessor extends keyof TSchema & string> = MergeRelationUnion<{
131
133
  [C in FkColumnNames<TSchema[TThroughAccessor]["_columns"]>]: OtherFkTarget<TSchema, TThroughAccessor, TAccessor, C> extends infer Target extends keyof TSchema & string ? {
@@ -202,9 +204,21 @@ export type RelationCountInput<TSchema extends Record<string, TableDef>, TAccess
202
204
  type SelectKeys<S> = S extends readonly (infer K extends PropertyKey)[] ? K : S extends Record<string, unknown> ? {
203
205
  [K in keyof S]: S[K] extends true ? K : never;
204
206
  }[keyof S] : never;
207
+ /** Keys removed by `strip()` — schema `.hidden()` columns plus optional extra omit. */
208
+ export type StripOmitKeys<TColumns extends Record<string, ColumnDef>, O = undefined> = HiddenKeys<TColumns> | (O extends undefined ? never : SelectKeys<O>);
205
209
  export type ApplySelect<Row extends Record<string, unknown>, S> = Pick<Row, SelectKeys<S> & keyof Row>;
206
210
  export type ApplyOmit<Row extends Record<string, unknown>, O> = Omit<Row, SelectKeys<O> & keyof Row>;
207
- type RelationTargetModel<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string> = InferSelectRow<TSchema[TTargetAccessor]["_columns"]>;
211
+ /** Column names marked `.hidden()` in the schema. */
212
+ export type HiddenKeys<TColumns extends Record<string, ColumnDef>> = {
213
+ [K in ScalarColumnKeys<TColumns>]: TColumns[K] extends {
214
+ readonly _meta: infer M;
215
+ } ? M extends {
216
+ hidden: true;
217
+ } ? K : never : never;
218
+ }[ScalarColumnKeys<TColumns>];
219
+ /** Result of `strip()` — removes hidden and extra omitted keys; preserves null/undefined and maps arrays. */
220
+ export type StripResult<T, Keys extends PropertyKey = never> = T extends null | undefined ? T : T extends readonly (infer Item extends Record<string, unknown>)[] ? Array<StripResult<Item, Keys>> : T extends Record<string, unknown> ? Omit<T, Keys> : T;
221
+ type RelationTargetModel<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string> = InferSelectRow<TSchema[TTargetAccessor]["_columns"], TSchema>;
208
222
  type InferNestedWithResult<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string, TInclude, TModel extends Record<string, unknown>> = TInclude extends {
209
223
  select?: infer S;
210
224
  with?: infer NW;
@@ -232,9 +246,9 @@ type InferCountResult<TSchema extends Record<string, TableDef>, TAccessor extend
232
246
  [K in keyof C & string]: number;
233
247
  };
234
248
  } : EmptyObject : EmptyObject;
235
- export type InferWithResult<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, W, TBase extends Record<string, unknown> = InferSelectRow<TSchema[TAccessor]["_columns"]>> = W extends undefined ? TBase : Expand<TBase & InferWithRelations<TSchema, TAccessor, W> & InferCountResult<TSchema, TAccessor, W>>;
249
+ export type InferWithResult<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, W, TBase extends Record<string, unknown> = InferSelectRow<TSchema[TAccessor]["_columns"], TSchema>> = W extends undefined ? TBase : Expand<TBase & InferWithRelations<TSchema, TAccessor, W> & InferCountResult<TSchema, TAccessor, W>>;
236
250
  /** Parent `select`/`omit` plus `with` relations. `never` if both select and omit are set. */
237
- export type InferFindResult<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, W, S = undefined, O = undefined, TBase extends Record<string, unknown> = InferSelectRow<TSchema[TAccessor]["_columns"]>> = [S] extends [undefined] ? [O] extends [undefined] ? InferWithResult<TSchema, TAccessor, W, TBase> : InferWithResult<TSchema, TAccessor, W, ApplyOmit<TBase, O>> : [O] extends [undefined] ? InferWithResult<TSchema, TAccessor, W, ApplySelect<TBase, S>> : never;
251
+ export type InferFindResult<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, W, S = undefined, O = undefined, TBase extends Record<string, unknown> = InferSelectRow<TSchema[TAccessor]["_columns"], TSchema>> = [S] extends [undefined] ? [O] extends [undefined] ? InferWithResult<TSchema, TAccessor, W, TBase> : InferWithResult<TSchema, TAccessor, W, ApplyOmit<TBase, O>> : [O] extends [undefined] ? InferWithResult<TSchema, TAccessor, W, ApplySelect<TBase, S>> : never;
238
252
  export type ManyRelationFilter<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string> = {
239
253
  some?: WhereInput<TSchema[TTargetAccessor]["_columns"], TSchema, TTargetAccessor>;
240
254
  every?: WhereInput<TSchema[TTargetAccessor]["_columns"], TSchema, TTargetAccessor>;
@@ -243,16 +257,20 @@ export type ManyRelationFilter<TSchema extends Record<string, TableDef>, TTarget
243
257
  type OutgoingFkRelationWhereEntry<TSchema extends Record<string, TableDef>, C extends ColumnDef, K extends string> = FkMetaOf<C> extends {
244
258
  target: infer TTarget extends string;
245
259
  as: infer As extends string;
246
- } ? TTarget extends `${infer Sql}.${string}` ? SqlNameToAccessor<TSchema, Sql> extends infer Acc extends keyof TSchema & string ? IsThroughTable<TSchema[Acc]["_columns"]> extends true ? never : {
260
+ } ? TTarget extends `${infer Acc}.${string}` ? Acc extends keyof TSchema & string ? IsThroughTable<TSchema[Acc]["_columns"]> extends true ? never : {
247
261
  [P in FkRelationName<As, K>]?: WhereInput<TSchema[Acc]["_columns"], TSchema, Acc>;
248
- } : never : never : never;
262
+ } : never : TTarget extends keyof TSchema & string ? IsThroughTable<TSchema[TTarget]["_columns"]> extends true ? never : {
263
+ [P in FkRelationName<As, K>]?: WhereInput<TSchema[TTarget]["_columns"], TSchema, TTarget>;
264
+ } : never : never;
249
265
  type InverseRelationWhereEntry<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string, TSourceAccessor extends keyof TSchema & string, C extends ColumnDef, K extends string> = IsThroughTable<TSchema[TSourceAccessor]["_columns"]> extends true ? never : FkMetaOf<C> extends {
250
266
  target: infer TTarget extends string;
251
267
  inverse: infer Inv extends string;
252
268
  } ? [TTarget] extends [
253
- `${TSchema[TTargetAccessor]["_tableName"]}.${string}`
269
+ `${TTargetAccessor & string}.${string}`
254
270
  ] ? {
255
271
  [P in FkInverseName<Inv, K>]?: ManyRelationFilter<TSchema, TSourceAccessor>;
272
+ } : [TTarget] extends [TTargetAccessor] ? {
273
+ [P in FkInverseName<Inv, K>]?: ManyRelationFilter<TSchema, TSourceAccessor>;
256
274
  } : never : never;
257
275
  type JunctionM2MWhereEntry<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, TThroughAccessor extends keyof TSchema & string> = MergeRelationUnion<{
258
276
  [C in FkColumnNames<TSchema[TThroughAccessor]["_columns"]>]: OtherFkTarget<TSchema, TThroughAccessor, TAccessor, C> extends infer Target extends keyof TSchema & string ? {
@@ -288,28 +306,28 @@ export type LogicalWhereInput<TColumns extends Record<string, ColumnDef>, TSchem
288
306
  OR?: WhereInput<TColumns, TSchema, TAccessor>[];
289
307
  NOT?: WhereInput<TColumns, TSchema, TAccessor>;
290
308
  };
291
- export type WhereInput<TColumns extends Record<string, ColumnDef>, TSchema extends Record<string, TableDef> = Record<string, TableDef>, TAccessor extends keyof TSchema & string = keyof TSchema & string> = LogicalWhereInput<TColumns, TSchema, TAccessor> & ColumnWhereInput<TColumns> & RelationWhereMap<TSchema, TAccessor>;
309
+ export type WhereInput<TColumns extends Record<string, ColumnDef>, TSchema extends Record<string, TableDef> = Record<string, TableDef>, TAccessor extends keyof TSchema & string = keyof TSchema & string> = LogicalWhereInput<TColumns, TSchema, TAccessor> & ColumnWhereInput<TColumns, TSchema> & RelationWhereMap<TSchema, TAccessor>;
292
310
  type DisconnectWriteForFk<C extends ColumnDef> = C extends FkBuilder ? C["_meta"] extends {
293
311
  nullable: true;
294
312
  } ? {
295
313
  disconnect?: true;
296
314
  } : Record<never, never> : Record<never, never>;
297
315
  type ToOneRelationWriteForAccessor<TSchema extends Record<string, TableDef>, TAccessor extends keyof TSchema & string, TFkColumn extends ColumnDef> = TAccessor extends keyof TSchema & string ? {
298
- connect?: ConnectInput<TSchema[TAccessor]["_columns"]>;
299
- create?: InferInsertRow<TSchema[TAccessor]["_columns"]>;
316
+ connect?: ConnectInput<TSchema[TAccessor]["_columns"], TSchema>;
317
+ create?: InferInsertRow<TSchema[TAccessor]["_columns"], TSchema>;
300
318
  } & DisconnectWriteForFk<TFkColumn> : never;
319
+ type FkTargetAccessor<TSchema extends Record<string, TableDef>, TTarget extends string> = TTarget extends `${infer Acc}.${string}` ? Acc extends keyof TSchema & string ? Acc : never : TTarget extends keyof TSchema & string ? TTarget : never;
301
320
  type OutgoingFkRelationWriteMap<TSchema extends Record<string, TableDef>, TColumns extends Record<string, ColumnDef>> = {
302
321
  [K in keyof TColumns & string as TColumns[K] extends FkBuilder ? TColumns[K]["_meta"] extends FkMeta ? TColumns[K]["_meta"] extends {
303
322
  as: infer As extends string;
304
- target: `${infer Sql}.${string}`;
305
- } ? SqlNameToAccessor<TSchema, Sql> extends keyof TSchema & string ? FkRelationName<As, K> : never : never : never : never]?: TColumns[K] extends FkBuilder ? TColumns[K]["_meta"] extends FkMeta ? TColumns[K]["_meta"]["target"] extends `${infer Sql}.${string}` ? SqlNameToAccessor<TSchema, Sql> extends infer Acc extends keyof TSchema & string ? Acc extends keyof TSchema & string ? ToOneRelationWriteForAccessor<TSchema, Acc, TColumns[K]> : never : never : never : never : never;
323
+ } ? FkTargetAccessor<TSchema, TColumns[K]["_meta"]["target"]> extends keyof TSchema & string ? FkRelationName<As, K> : never : never : never : never]?: TColumns[K] extends FkBuilder ? TColumns[K]["_meta"] extends FkMeta ? FkTargetAccessor<TSchema, TColumns[K]["_meta"]["target"]> extends infer Acc extends keyof TSchema & string ? ToOneRelationWriteForAccessor<TSchema, Acc, TColumns[K]> : never : never : never;
306
324
  };
307
325
  type M2MRelationWriteForAccessor<TSchema extends Record<string, TableDef>, TTargetAccessor extends keyof TSchema & string> = TTargetAccessor extends keyof TSchema & string ? {
308
- connect?: ConnectInput<TSchema[TTargetAccessor]["_columns"]>[];
309
- disconnect?: true | ConnectInput<TSchema[TTargetAccessor]["_columns"]>[];
310
- delete?: true | ConnectInput<TSchema[TTargetAccessor]["_columns"]>[];
311
- set?: ConnectInput<TSchema[TTargetAccessor]["_columns"]>[];
312
- connectOrCreate?: ConnectOrCreateItem<TSchema[TTargetAccessor]["_columns"]>[];
326
+ connect?: ConnectInput<TSchema[TTargetAccessor]["_columns"], TSchema>[];
327
+ disconnect?: true | ConnectInput<TSchema[TTargetAccessor]["_columns"], TSchema>[];
328
+ delete?: true | ConnectInput<TSchema[TTargetAccessor]["_columns"], TSchema>[];
329
+ set?: ConnectInput<TSchema[TTargetAccessor]["_columns"], TSchema>[];
330
+ connectOrCreate?: ConnectOrCreateItem<TSchema[TTargetAccessor]["_columns"], TSchema>[];
313
331
  } : never;
314
332
  type InlineM2MWriteRelationEntry<TSchema extends Record<string, TableDef>, C extends ColumnDef, K extends string> = [C] extends [ManyToManyExtra] ? M2MTargetOf<C> extends infer TTarget extends keyof TSchema & string ? {
315
333
  [P in M2MNameOf<K, C>]?: M2MRelationWriteForAccessor<TSchema, TTarget>;