linkgress-orm 0.0.1

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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/dist/database/database-client.interface.d.ts +45 -0
  4. package/dist/database/database-client.interface.d.ts.map +1 -0
  5. package/dist/database/database-client.interface.js +20 -0
  6. package/dist/database/database-client.interface.js.map +1 -0
  7. package/dist/database/index.d.ts +5 -0
  8. package/dist/database/index.d.ts.map +1 -0
  9. package/dist/database/index.js +10 -0
  10. package/dist/database/index.js.map +1 -0
  11. package/dist/database/pg-client.d.ts +30 -0
  12. package/dist/database/pg-client.d.ts.map +1 -0
  13. package/dist/database/pg-client.js +76 -0
  14. package/dist/database/pg-client.js.map +1 -0
  15. package/dist/database/postgres-client.d.ts +44 -0
  16. package/dist/database/postgres-client.d.ts.map +1 -0
  17. package/dist/database/postgres-client.js +111 -0
  18. package/dist/database/postgres-client.js.map +1 -0
  19. package/dist/database/types.d.ts +200 -0
  20. package/dist/database/types.d.ts.map +1 -0
  21. package/dist/database/types.js +8 -0
  22. package/dist/database/types.js.map +1 -0
  23. package/dist/entity/base-entity.d.ts +21 -0
  24. package/dist/entity/base-entity.d.ts.map +1 -0
  25. package/dist/entity/base-entity.js +27 -0
  26. package/dist/entity/base-entity.js.map +1 -0
  27. package/dist/entity/db-column.d.ts +61 -0
  28. package/dist/entity/db-column.d.ts.map +1 -0
  29. package/dist/entity/db-column.js +35 -0
  30. package/dist/entity/db-column.js.map +1 -0
  31. package/dist/entity/db-context.d.ts +665 -0
  32. package/dist/entity/db-context.d.ts.map +1 -0
  33. package/dist/entity/db-context.js +1463 -0
  34. package/dist/entity/db-context.js.map +1 -0
  35. package/dist/entity/entity-base.d.ts +76 -0
  36. package/dist/entity/entity-base.d.ts.map +1 -0
  37. package/dist/entity/entity-base.js +42 -0
  38. package/dist/entity/entity-base.js.map +1 -0
  39. package/dist/entity/entity-builder.d.ts +171 -0
  40. package/dist/entity/entity-builder.d.ts.map +1 -0
  41. package/dist/entity/entity-builder.js +376 -0
  42. package/dist/entity/entity-builder.js.map +1 -0
  43. package/dist/entity/model-config.d.ts +18 -0
  44. package/dist/entity/model-config.d.ts.map +1 -0
  45. package/dist/entity/model-config.js +157 -0
  46. package/dist/entity/model-config.js.map +1 -0
  47. package/dist/index.d.ts +27 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +142 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/migration/db-schema-manager.d.ts +228 -0
  52. package/dist/migration/db-schema-manager.d.ts.map +1 -0
  53. package/dist/migration/db-schema-manager.js +1055 -0
  54. package/dist/migration/db-schema-manager.js.map +1 -0
  55. package/dist/migration/enum-migrator.d.ts +29 -0
  56. package/dist/migration/enum-migrator.d.ts.map +1 -0
  57. package/dist/migration/enum-migrator.js +137 -0
  58. package/dist/migration/enum-migrator.js.map +1 -0
  59. package/dist/query/collection-strategy.factory.d.ts +16 -0
  60. package/dist/query/collection-strategy.factory.d.ts.map +1 -0
  61. package/dist/query/collection-strategy.factory.js +37 -0
  62. package/dist/query/collection-strategy.factory.js.map +1 -0
  63. package/dist/query/collection-strategy.interface.d.ts +146 -0
  64. package/dist/query/collection-strategy.interface.d.ts.map +1 -0
  65. package/dist/query/collection-strategy.interface.js +3 -0
  66. package/dist/query/collection-strategy.interface.js.map +1 -0
  67. package/dist/query/conditions.d.ts +222 -0
  68. package/dist/query/conditions.d.ts.map +1 -0
  69. package/dist/query/conditions.js +446 -0
  70. package/dist/query/conditions.js.map +1 -0
  71. package/dist/query/cte-builder.d.ts +95 -0
  72. package/dist/query/cte-builder.d.ts.map +1 -0
  73. package/dist/query/cte-builder.js +172 -0
  74. package/dist/query/cte-builder.js.map +1 -0
  75. package/dist/query/grouped-query.d.ts +186 -0
  76. package/dist/query/grouped-query.d.ts.map +1 -0
  77. package/dist/query/grouped-query.js +588 -0
  78. package/dist/query/grouped-query.js.map +1 -0
  79. package/dist/query/join-builder.d.ts +106 -0
  80. package/dist/query/join-builder.d.ts.map +1 -0
  81. package/dist/query/join-builder.js +275 -0
  82. package/dist/query/join-builder.js.map +1 -0
  83. package/dist/query/query-builder.d.ts +543 -0
  84. package/dist/query/query-builder.d.ts.map +1 -0
  85. package/dist/query/query-builder.js +2649 -0
  86. package/dist/query/query-builder.js.map +1 -0
  87. package/dist/query/strategies/jsonb-collection-strategy.d.ts +51 -0
  88. package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +1 -0
  89. package/dist/query/strategies/jsonb-collection-strategy.js +210 -0
  90. package/dist/query/strategies/jsonb-collection-strategy.js.map +1 -0
  91. package/dist/query/strategies/temptable-collection-strategy.d.ts +95 -0
  92. package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -0
  93. package/dist/query/strategies/temptable-collection-strategy.js +456 -0
  94. package/dist/query/strategies/temptable-collection-strategy.js.map +1 -0
  95. package/dist/query/subquery.d.ts +152 -0
  96. package/dist/query/subquery.d.ts.map +1 -0
  97. package/dist/query/subquery.js +206 -0
  98. package/dist/query/subquery.js.map +1 -0
  99. package/dist/schema/column-builder.d.ts +127 -0
  100. package/dist/schema/column-builder.d.ts.map +1 -0
  101. package/dist/schema/column-builder.js +184 -0
  102. package/dist/schema/column-builder.js.map +1 -0
  103. package/dist/schema/inference.d.ts +26 -0
  104. package/dist/schema/inference.d.ts.map +1 -0
  105. package/dist/schema/inference.js +3 -0
  106. package/dist/schema/inference.js.map +1 -0
  107. package/dist/schema/navigation.d.ts +215 -0
  108. package/dist/schema/navigation.d.ts.map +1 -0
  109. package/dist/schema/navigation.js +233 -0
  110. package/dist/schema/navigation.js.map +1 -0
  111. package/dist/schema/row-type.d.ts +26 -0
  112. package/dist/schema/row-type.d.ts.map +1 -0
  113. package/dist/schema/row-type.js +3 -0
  114. package/dist/schema/row-type.js.map +1 -0
  115. package/dist/schema/sequence-builder.d.ts +87 -0
  116. package/dist/schema/sequence-builder.d.ts.map +1 -0
  117. package/dist/schema/sequence-builder.js +123 -0
  118. package/dist/schema/sequence-builder.js.map +1 -0
  119. package/dist/schema/table-builder.d.ts +122 -0
  120. package/dist/schema/table-builder.d.ts.map +1 -0
  121. package/dist/schema/table-builder.js +132 -0
  122. package/dist/schema/table-builder.js.map +1 -0
  123. package/dist/schema/typed-schema.d.ts +22 -0
  124. package/dist/schema/typed-schema.d.ts.map +1 -0
  125. package/dist/schema/typed-schema.js +28 -0
  126. package/dist/schema/typed-schema.js.map +1 -0
  127. package/dist/types/column-types.d.ts +20 -0
  128. package/dist/types/column-types.d.ts.map +1 -0
  129. package/dist/types/column-types.js +14 -0
  130. package/dist/types/column-types.js.map +1 -0
  131. package/dist/types/custom-types.d.ts +85 -0
  132. package/dist/types/custom-types.d.ts.map +1 -0
  133. package/dist/types/custom-types.js +132 -0
  134. package/dist/types/custom-types.js.map +1 -0
  135. package/dist/types/enum-builder.d.ts +31 -0
  136. package/dist/types/enum-builder.d.ts.map +1 -0
  137. package/dist/types/enum-builder.js +46 -0
  138. package/dist/types/enum-builder.js.map +1 -0
  139. package/dist/types/metadata.d.ts +67 -0
  140. package/dist/types/metadata.d.ts.map +1 -0
  141. package/dist/types/metadata.js +57 -0
  142. package/dist/types/metadata.js.map +1 -0
  143. package/dist/types/type-mapper.d.ts +49 -0
  144. package/dist/types/type-mapper.d.ts.map +1 -0
  145. package/dist/types/type-mapper.js +49 -0
  146. package/dist/types/type-mapper.js.map +1 -0
  147. package/package.json +77 -0
@@ -0,0 +1,215 @@
1
+ import { TableBuilder } from './table-builder';
2
+ import { FieldRef } from '../query/conditions';
3
+ /**
4
+ * Navigation configuration
5
+ */
6
+ export interface NavigationConfig<TSourceTable extends TableBuilder<any> = TableBuilder<any>, TTargetTable extends TableBuilder<any> = TableBuilder<any>> {
7
+ /**
8
+ * Array of foreign key fields from the source table
9
+ * Example: [users.id] when defining a collection on users table
10
+ */
11
+ foreignKeys: FieldRef<any, any>[];
12
+ /**
13
+ * Array of matching fields from the target table
14
+ * Example: [posts.userId] when defining posts collection
15
+ */
16
+ matches: FieldRef<any, any>[];
17
+ /**
18
+ * Determines if the join is mandatory (INNER JOIN) or optional (LEFT JOIN)
19
+ * Default: false (LEFT JOIN)
20
+ */
21
+ isMandatory?: boolean;
22
+ }
23
+ /**
24
+ * Navigation property marker - represents a collection navigation property (one-to-many)
25
+ * Represents a collection of related entities in a navigation property
26
+ */
27
+ export declare class DbNavigationCollection<TTarget extends TableBuilder<any> = TableBuilder<any>> {
28
+ /** @internal */
29
+ readonly targetTableBuilder: TTarget;
30
+ /** @internal */
31
+ readonly config: NavigationConfig<any, TTarget>;
32
+ /** @internal */
33
+ readonly __targetTable: TTarget;
34
+ /** @internal */
35
+ readonly __navigationType: "collection";
36
+ constructor(
37
+ /** @internal */
38
+ targetTableBuilder: TTarget,
39
+ /** @internal */
40
+ config: NavigationConfig<any, TTarget>);
41
+ /**
42
+ * Get the target table name
43
+ */
44
+ get targetTable(): string;
45
+ /**
46
+ * Get foreign key column names
47
+ */
48
+ get foreignKeyColumns(): string[];
49
+ /**
50
+ * Get matching column names
51
+ */
52
+ get matchColumns(): string[];
53
+ /**
54
+ * Whether this navigation requires a mandatory join
55
+ */
56
+ get isMandatory(): boolean;
57
+ }
58
+ /**
59
+ * Navigation property marker for single reference (one-to-one or many-to-one)
60
+ */
61
+ export declare class DbNavigation<TTarget extends TableBuilder<any> = TableBuilder<any>> {
62
+ /** @internal */
63
+ readonly builder: () => {
64
+ targetTable: TTarget;
65
+ config: NavigationConfig<any, TTarget>;
66
+ };
67
+ /** @internal */
68
+ readonly __targetTable: TTarget;
69
+ /** @internal */
70
+ readonly __navigationType: "navigation";
71
+ /** @internal */
72
+ targetTableBuilder: TTarget;
73
+ /** @internal */
74
+ config: NavigationConfig<any, TTarget>;
75
+ constructor(
76
+ /** @internal */
77
+ builder: () => {
78
+ targetTable: TTarget;
79
+ config: NavigationConfig<any, TTarget>;
80
+ });
81
+ private ensureNavigation;
82
+ /**
83
+ * Get the target table name
84
+ */
85
+ getTargetTable(): string;
86
+ /**
87
+ * Get foreign key column names
88
+ */
89
+ getForeignKeyColumns(): string[];
90
+ /**
91
+ * Get matching column names
92
+ */
93
+ getMatchColumns(): string[];
94
+ /**
95
+ * Whether this navigation requires a mandatory join
96
+ */
97
+ getIsMandatory(): boolean;
98
+ }
99
+ /**
100
+ * Helper to create a collection navigation property (one-to-many)
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const users = table('users', {
105
+ * id: serial('id').primaryKey(),
106
+ * posts: navigationCollection(posts, {
107
+ * foreignKeys: [users.id],
108
+ * matches: [posts.userId],
109
+ * isMandatory: false
110
+ * })
111
+ * });
112
+ * ```
113
+ */
114
+ export declare function navigationCollection<TTarget extends TableBuilder<any>>(targetTable: TTarget, config: NavigationConfig<any, TTarget>): DbNavigationCollection<TTarget>;
115
+ /**
116
+ * Helper to create a single navigation property (one-to-one or many-to-one)
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const orders = table('orders', {
121
+ * id: serial('id').primaryKey(),
122
+ * userId: integer('user_id').notNull(),
123
+ * user: navigation(users, {
124
+ * foreignKeys: [orders.userId],
125
+ * matches: [users.id],
126
+ * isMandatory: true
127
+ * })
128
+ * });
129
+ * ```
130
+ */
131
+ export declare function navigation<TTarget extends TableBuilder<any>>(builder: () => {
132
+ targetTable: TTarget;
133
+ config: NavigationConfig<any, TTarget>;
134
+ }): DbNavigation<TTarget>;
135
+ /**
136
+ * @deprecated Use navigationCollection instead
137
+ */
138
+ export declare class DbCollection<TTarget extends TableBuilder<any> = TableBuilder<any>> {
139
+ /** @internal */
140
+ readonly targetTable: string;
141
+ /** @internal */
142
+ readonly foreignKey: string;
143
+ /** @internal */
144
+ readonly __targetTable: TTarget;
145
+ /** @internal */
146
+ readonly __navigationType: "collection";
147
+ constructor(
148
+ /** @internal */
149
+ targetTable: string,
150
+ /** @internal */
151
+ foreignKey: string);
152
+ }
153
+ /**
154
+ * @deprecated Use navigation instead
155
+ */
156
+ export declare class DbReference<TTarget extends TableBuilder<any> = TableBuilder<any>> {
157
+ /** @internal */
158
+ readonly targetTable: string;
159
+ /** @internal */
160
+ readonly foreignKey: string;
161
+ /** @internal */
162
+ readonly references: string;
163
+ /** @internal */
164
+ readonly __targetTable: TTarget;
165
+ /** @internal */
166
+ readonly __navigationType: "reference";
167
+ constructor(
168
+ /** @internal */
169
+ targetTable: string,
170
+ /** @internal */
171
+ foreignKey: string,
172
+ /** @internal */
173
+ references?: string);
174
+ }
175
+ /**
176
+ * @deprecated Use navigationCollection instead
177
+ */
178
+ export declare function collection<TTarget extends TableBuilder<any> = TableBuilder<any>>(targetTable: string, foreignKey: string): DbCollection<TTarget>;
179
+ /**
180
+ * @deprecated Use navigation instead
181
+ */
182
+ export declare function reference<TTarget extends TableBuilder<any> = TableBuilder<any>>(targetTable: string, foreignKey: string, references?: string): DbReference<TTarget>;
183
+ /**
184
+ * Type guard to check if a property is a navigation property
185
+ */
186
+ export declare function isNavigationProperty(value: any): value is DbNavigationCollection<any> | DbNavigation<any> | DbCollection<any> | DbReference<any>;
187
+ /**
188
+ * Type guard for collection navigation (both old and new)
189
+ */
190
+ export declare function isCollection(value: any): value is DbNavigationCollection<any> | DbCollection<any>;
191
+ /**
192
+ * Type guard for reference navigation (both old and new)
193
+ */
194
+ export declare function isReference(value: any): value is DbNavigation<any> | DbReference<any>;
195
+ /**
196
+ * Type guard for new navigation collection
197
+ */
198
+ export declare function isNavigationCollection(value: any): value is DbNavigationCollection<any>;
199
+ /**
200
+ * Type guard for new single navigation
201
+ */
202
+ export declare function isNavigation(value: any): value is DbNavigation<any>;
203
+ /**
204
+ * Extract navigation properties from a schema definition
205
+ */
206
+ export type NavigationProperties<T> = {
207
+ [K in keyof T]: T[K] extends DbNavigationCollection<any> | DbNavigation<any> | DbCollection<any> | DbReference<any> ? K : never;
208
+ }[keyof T];
209
+ /**
210
+ * Extract regular column properties from a schema definition
211
+ */
212
+ export type ColumnProperties<T> = {
213
+ [K in keyof T]: T[K] extends DbNavigationCollection<any> | DbNavigation<any> | DbCollection<any> | DbReference<any> ? never : K;
214
+ }[keyof T];
215
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/schema/navigation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DbReference = exports.DbCollection = exports.DbNavigation = exports.DbNavigationCollection = void 0;
4
+ exports.navigationCollection = navigationCollection;
5
+ exports.navigation = navigation;
6
+ exports.collection = collection;
7
+ exports.reference = reference;
8
+ exports.isNavigationProperty = isNavigationProperty;
9
+ exports.isCollection = isCollection;
10
+ exports.isReference = isReference;
11
+ exports.isNavigationCollection = isNavigationCollection;
12
+ exports.isNavigation = isNavigation;
13
+ /**
14
+ * Navigation property marker - represents a collection navigation property (one-to-many)
15
+ * Represents a collection of related entities in a navigation property
16
+ */
17
+ class DbNavigationCollection {
18
+ constructor(
19
+ /** @internal */
20
+ targetTableBuilder,
21
+ /** @internal */
22
+ config) {
23
+ this.targetTableBuilder = targetTableBuilder;
24
+ this.config = config;
25
+ /** @internal */
26
+ this.__navigationType = 'collection';
27
+ }
28
+ /**
29
+ * Get the target table name
30
+ */
31
+ get targetTable() {
32
+ return this.targetTableBuilder.getName();
33
+ }
34
+ /**
35
+ * Get foreign key column names
36
+ */
37
+ get foreignKeyColumns() {
38
+ return this.config.foreignKeys.map(fk => fk.__dbColumnName);
39
+ }
40
+ /**
41
+ * Get matching column names
42
+ */
43
+ get matchColumns() {
44
+ return this.config.matches.map(m => m.__dbColumnName);
45
+ }
46
+ /**
47
+ * Whether this navigation requires a mandatory join
48
+ */
49
+ get isMandatory() {
50
+ return this.config.isMandatory ?? false;
51
+ }
52
+ }
53
+ exports.DbNavigationCollection = DbNavigationCollection;
54
+ /**
55
+ * Navigation property marker for single reference (one-to-one or many-to-one)
56
+ */
57
+ class DbNavigation {
58
+ constructor(
59
+ /** @internal */
60
+ builder) {
61
+ this.builder = builder;
62
+ /** @internal */
63
+ this.__navigationType = 'navigation';
64
+ /** @internal */
65
+ this.targetTableBuilder = null;
66
+ /** @internal */
67
+ this.config = null;
68
+ }
69
+ ensureNavigation() {
70
+ if (this.targetTableBuilder == null) {
71
+ const val = this.builder();
72
+ this.targetTableBuilder = val.targetTable;
73
+ this.config = val.config;
74
+ this.getTargetTable = () => this.targetTableBuilder.getName();
75
+ this.getForeignKeyColumns = () => this.config.foreignKeys.map(fk => fk.__dbColumnName);
76
+ this.getMatchColumns = () => this.config.matches.map(m => m.__dbColumnName);
77
+ this.getIsMandatory = () => this.config.isMandatory ?? false;
78
+ }
79
+ }
80
+ /**
81
+ * Get the target table name
82
+ */
83
+ getTargetTable() {
84
+ this.ensureNavigation();
85
+ return this.targetTableBuilder.getName();
86
+ }
87
+ /**
88
+ * Get foreign key column names
89
+ */
90
+ getForeignKeyColumns() {
91
+ this.ensureNavigation();
92
+ return this.config.foreignKeys.map(fk => fk.__dbColumnName);
93
+ }
94
+ /**
95
+ * Get matching column names
96
+ */
97
+ getMatchColumns() {
98
+ this.ensureNavigation();
99
+ return this.config.matches.map(m => m.__dbColumnName);
100
+ }
101
+ /**
102
+ * Whether this navigation requires a mandatory join
103
+ */
104
+ getIsMandatory() {
105
+ this.ensureNavigation();
106
+ return this.config.isMandatory ?? false;
107
+ }
108
+ }
109
+ exports.DbNavigation = DbNavigation;
110
+ /**
111
+ * Helper to create a collection navigation property (one-to-many)
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * const users = table('users', {
116
+ * id: serial('id').primaryKey(),
117
+ * posts: navigationCollection(posts, {
118
+ * foreignKeys: [users.id],
119
+ * matches: [posts.userId],
120
+ * isMandatory: false
121
+ * })
122
+ * });
123
+ * ```
124
+ */
125
+ function navigationCollection(targetTable, config) {
126
+ return new DbNavigationCollection(targetTable, config);
127
+ }
128
+ /**
129
+ * Helper to create a single navigation property (one-to-one or many-to-one)
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * const orders = table('orders', {
134
+ * id: serial('id').primaryKey(),
135
+ * userId: integer('user_id').notNull(),
136
+ * user: navigation(users, {
137
+ * foreignKeys: [orders.userId],
138
+ * matches: [users.id],
139
+ * isMandatory: true
140
+ * })
141
+ * });
142
+ * ```
143
+ */
144
+ function navigation(builder) {
145
+ return new DbNavigation(builder);
146
+ }
147
+ // ============================================================================
148
+ // Backward compatibility - old API (deprecated)
149
+ // ============================================================================
150
+ /**
151
+ * @deprecated Use navigationCollection instead
152
+ */
153
+ class DbCollection {
154
+ constructor(
155
+ /** @internal */
156
+ targetTable,
157
+ /** @internal */
158
+ foreignKey) {
159
+ this.targetTable = targetTable;
160
+ this.foreignKey = foreignKey;
161
+ /** @internal */
162
+ this.__navigationType = 'collection';
163
+ }
164
+ }
165
+ exports.DbCollection = DbCollection;
166
+ /**
167
+ * @deprecated Use navigation instead
168
+ */
169
+ class DbReference {
170
+ constructor(
171
+ /** @internal */
172
+ targetTable,
173
+ /** @internal */
174
+ foreignKey,
175
+ /** @internal */
176
+ references = 'id') {
177
+ this.targetTable = targetTable;
178
+ this.foreignKey = foreignKey;
179
+ this.references = references;
180
+ /** @internal */
181
+ this.__navigationType = 'reference';
182
+ }
183
+ }
184
+ exports.DbReference = DbReference;
185
+ /**
186
+ * @deprecated Use navigationCollection instead
187
+ */
188
+ function collection(targetTable, foreignKey) {
189
+ return new DbCollection(targetTable, foreignKey);
190
+ }
191
+ /**
192
+ * @deprecated Use navigation instead
193
+ */
194
+ function reference(targetTable, foreignKey, references = 'id') {
195
+ return new DbReference(targetTable, foreignKey, references);
196
+ }
197
+ // ============================================================================
198
+ // Type guards
199
+ // ============================================================================
200
+ /**
201
+ * Type guard to check if a property is a navigation property
202
+ */
203
+ function isNavigationProperty(value) {
204
+ return value instanceof DbNavigationCollection
205
+ || value instanceof DbNavigation
206
+ || value instanceof DbCollection
207
+ || value instanceof DbReference;
208
+ }
209
+ /**
210
+ * Type guard for collection navigation (both old and new)
211
+ */
212
+ function isCollection(value) {
213
+ return value instanceof DbNavigationCollection || value instanceof DbCollection;
214
+ }
215
+ /**
216
+ * Type guard for reference navigation (both old and new)
217
+ */
218
+ function isReference(value) {
219
+ return value instanceof DbNavigation || value instanceof DbReference;
220
+ }
221
+ /**
222
+ * Type guard for new navigation collection
223
+ */
224
+ function isNavigationCollection(value) {
225
+ return value instanceof DbNavigationCollection;
226
+ }
227
+ /**
228
+ * Type guard for new single navigation
229
+ */
230
+ function isNavigation(value) {
231
+ return value instanceof DbNavigation;
232
+ }
233
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/schema/navigation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { TableBuilder, SchemaDefinition, ExtractColumns, ExtractNavigations } from './table-builder';
2
+ import { DbCollection, DbReference, DbNavigationCollection, DbNavigation } from './navigation';
3
+ import { CollectionQueryBuilder } from '../query/query-builder';
4
+ import { InferColumnType } from './table-builder';
5
+ import { FieldRef } from '../query/conditions';
6
+ /**
7
+ * Infer the row type for queries from a table builder
8
+ * This includes both columns (as FieldRef) and navigation properties (as query builders)
9
+ */
10
+ export type InferRowType<TBuilder extends TableBuilder<any>> = TBuilder extends TableBuilder<infer TSchema> ? InferRowTypeFromSchema<TSchema> : never;
11
+ /**
12
+ * Infer row type from schema definition
13
+ */
14
+ type InferRowTypeFromSchema<TSchema extends SchemaDefinition> = {
15
+ readonly [K in keyof ExtractColumns<TSchema>]: FieldRef<K & string, InferColumnType<ExtractColumns<TSchema>[K]>>;
16
+ } & {
17
+ readonly [K in keyof ExtractNavigations<TSchema>]: ExtractNavigations<TSchema>[K] extends DbNavigationCollection<infer TTarget> ? CollectionQueryBuilder<InferRowType<TTarget>> : ExtractNavigations<TSchema>[K] extends DbNavigation<infer TTarget> ? InferRowType<TTarget> : ExtractNavigations<TSchema>[K] extends DbCollection<infer TTarget> ? CollectionQueryBuilder<InferRowType<TTarget>> : ExtractNavigations<TSchema>[K] extends DbReference<infer TTarget> ? InferRowType<TTarget> : never;
18
+ };
19
+ /**
20
+ * Infer the data type (actual values) from a table builder
21
+ */
22
+ export type InferDataType<TBuilder extends TableBuilder<any>> = TBuilder extends TableBuilder<infer TSchema> ? {
23
+ [K in keyof ExtractColumns<TSchema>]: ExtractColumns<TSchema>[K] extends infer Col ? InferColumnType<Col> : never;
24
+ } : never;
25
+ export {};
26
+ //# sourceMappingURL=row-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-type.d.ts","sourceRoot":"","sources":["../../src/schema/row-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,YAAY,CAAC,GAAG,CAAC,IACzD,QAAQ,SAAS,YAAY,CAAC,MAAM,OAAO,CAAC,GACxC,sBAAsB,CAAC,OAAO,CAAC,GAC/B,KAAK,CAAC;AAEZ;;GAEG;AACH,KAAK,sBAAsB,CAAC,OAAO,SAAS,gBAAgB,IAE1D;IACE,QAAQ,EAAE,CAAC,IAAI,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,QAAQ,CACrD,CAAC,GAAG,MAAM,EACV,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5C;CACF,GAEC;IACA,QAAQ,EAAE,CAAC,IAAI,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAC9C,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,sBAAsB,CAAC,MAAM,OAAO,CAAC,GACxE,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAC7C,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,OAAO,CAAC,GAClE,YAAY,CAAC,OAAO,CAAC,GACrB,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,OAAO,CAAC,GAClE,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAC7C,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,OAAO,CAAC,GACjE,YAAY,CAAC,OAAO,CAAC,GACrB,KAAK;CACZ,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,YAAY,CAAC,GAAG,CAAC,IAC1D,QAAQ,SAAS,YAAY,CAAC,MAAM,OAAO,CAAC,GACxC;KACG,CAAC,IAAI,MAAM,cAAc,CAAC,OAAO,CAAC,GACjC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,GACxC,eAAe,CAAC,GAAG,CAAC,GACpB,KAAK;CACZ,GACD,KAAK,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=row-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-type.js","sourceRoot":"","sources":["../../src/schema/row-type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
1
+ import { DatabaseClient } from '../database/database-client.interface';
2
+ /**
3
+ * PostgreSQL sequence configuration
4
+ */
5
+ export interface SequenceConfig {
6
+ name: string;
7
+ schema?: string;
8
+ startWith?: number;
9
+ incrementBy?: number;
10
+ minValue?: number;
11
+ maxValue?: number;
12
+ cache?: number;
13
+ cycle?: boolean;
14
+ }
15
+ /**
16
+ * Sequence instance for interacting with PostgreSQL sequences
17
+ */
18
+ export declare class DbSequence {
19
+ private client;
20
+ private config;
21
+ private qualifiedName;
22
+ constructor(client: DatabaseClient, config: SequenceConfig);
23
+ /**
24
+ * Get the next value from the sequence
25
+ */
26
+ nextValue(): Promise<number>;
27
+ /**
28
+ * Get the current value of the sequence (without incrementing)
29
+ */
30
+ currentValue(): Promise<number>;
31
+ /**
32
+ * Set the sequence to a specific value
33
+ */
34
+ resync(value: number): Promise<void>;
35
+ /**
36
+ * Get the sequence configuration
37
+ */
38
+ getConfig(): SequenceConfig;
39
+ /**
40
+ * Get the qualified sequence name (with schema if applicable)
41
+ */
42
+ getQualifiedName(): string;
43
+ }
44
+ /**
45
+ * Builder for creating sequence configurations
46
+ */
47
+ export declare class SequenceBuilder {
48
+ private config;
49
+ constructor(name: string);
50
+ /**
51
+ * Set the schema for this sequence
52
+ */
53
+ inSchema(schema: string): this;
54
+ /**
55
+ * Set the starting value
56
+ */
57
+ startWith(value: number): this;
58
+ /**
59
+ * Set the increment value
60
+ */
61
+ incrementBy(value: number): this;
62
+ /**
63
+ * Set minimum value
64
+ */
65
+ minValue(value: number): this;
66
+ /**
67
+ * Set maximum value
68
+ */
69
+ maxValue(value: number): this;
70
+ /**
71
+ * Set cache size
72
+ */
73
+ cache(value: number): this;
74
+ /**
75
+ * Enable cycling (restart when reaching max/min value)
76
+ */
77
+ cycle(): this;
78
+ /**
79
+ * Build the sequence configuration
80
+ */
81
+ build(): SequenceConfig;
82
+ }
83
+ /**
84
+ * Helper function to create a sequence builder
85
+ */
86
+ export declare function sequence(name: string): SequenceBuilder;
87
+ //# sourceMappingURL=sequence-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence-builder.d.ts","sourceRoot":"","sources":["../../src/schema/sequence-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,UAAU;IAInB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,aAAa,CAAS;gBAGpB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc;IAOhC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAQlC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAQrC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1C;;OAEG;IACH,SAAS,IAAI,cAAc;IAI3B;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiB;gBAEnB,IAAI,EAAE,MAAM;IAOxB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,KAAK,IAAI,cAAc;CAGxB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAEtD"}