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.
- package/LICENSE +21 -0
- package/README.md +196 -0
- package/dist/database/database-client.interface.d.ts +45 -0
- package/dist/database/database-client.interface.d.ts.map +1 -0
- package/dist/database/database-client.interface.js +20 -0
- package/dist/database/database-client.interface.js.map +1 -0
- package/dist/database/index.d.ts +5 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +10 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/pg-client.d.ts +30 -0
- package/dist/database/pg-client.d.ts.map +1 -0
- package/dist/database/pg-client.js +76 -0
- package/dist/database/pg-client.js.map +1 -0
- package/dist/database/postgres-client.d.ts +44 -0
- package/dist/database/postgres-client.d.ts.map +1 -0
- package/dist/database/postgres-client.js +111 -0
- package/dist/database/postgres-client.js.map +1 -0
- package/dist/database/types.d.ts +200 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +8 -0
- package/dist/database/types.js.map +1 -0
- package/dist/entity/base-entity.d.ts +21 -0
- package/dist/entity/base-entity.d.ts.map +1 -0
- package/dist/entity/base-entity.js +27 -0
- package/dist/entity/base-entity.js.map +1 -0
- package/dist/entity/db-column.d.ts +61 -0
- package/dist/entity/db-column.d.ts.map +1 -0
- package/dist/entity/db-column.js +35 -0
- package/dist/entity/db-column.js.map +1 -0
- package/dist/entity/db-context.d.ts +665 -0
- package/dist/entity/db-context.d.ts.map +1 -0
- package/dist/entity/db-context.js +1463 -0
- package/dist/entity/db-context.js.map +1 -0
- package/dist/entity/entity-base.d.ts +76 -0
- package/dist/entity/entity-base.d.ts.map +1 -0
- package/dist/entity/entity-base.js +42 -0
- package/dist/entity/entity-base.js.map +1 -0
- package/dist/entity/entity-builder.d.ts +171 -0
- package/dist/entity/entity-builder.d.ts.map +1 -0
- package/dist/entity/entity-builder.js +376 -0
- package/dist/entity/entity-builder.js.map +1 -0
- package/dist/entity/model-config.d.ts +18 -0
- package/dist/entity/model-config.d.ts.map +1 -0
- package/dist/entity/model-config.js +157 -0
- package/dist/entity/model-config.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/migration/db-schema-manager.d.ts +228 -0
- package/dist/migration/db-schema-manager.d.ts.map +1 -0
- package/dist/migration/db-schema-manager.js +1055 -0
- package/dist/migration/db-schema-manager.js.map +1 -0
- package/dist/migration/enum-migrator.d.ts +29 -0
- package/dist/migration/enum-migrator.d.ts.map +1 -0
- package/dist/migration/enum-migrator.js +137 -0
- package/dist/migration/enum-migrator.js.map +1 -0
- package/dist/query/collection-strategy.factory.d.ts +16 -0
- package/dist/query/collection-strategy.factory.d.ts.map +1 -0
- package/dist/query/collection-strategy.factory.js +37 -0
- package/dist/query/collection-strategy.factory.js.map +1 -0
- package/dist/query/collection-strategy.interface.d.ts +146 -0
- package/dist/query/collection-strategy.interface.d.ts.map +1 -0
- package/dist/query/collection-strategy.interface.js +3 -0
- package/dist/query/collection-strategy.interface.js.map +1 -0
- package/dist/query/conditions.d.ts +222 -0
- package/dist/query/conditions.d.ts.map +1 -0
- package/dist/query/conditions.js +446 -0
- package/dist/query/conditions.js.map +1 -0
- package/dist/query/cte-builder.d.ts +95 -0
- package/dist/query/cte-builder.d.ts.map +1 -0
- package/dist/query/cte-builder.js +172 -0
- package/dist/query/cte-builder.js.map +1 -0
- package/dist/query/grouped-query.d.ts +186 -0
- package/dist/query/grouped-query.d.ts.map +1 -0
- package/dist/query/grouped-query.js +588 -0
- package/dist/query/grouped-query.js.map +1 -0
- package/dist/query/join-builder.d.ts +106 -0
- package/dist/query/join-builder.d.ts.map +1 -0
- package/dist/query/join-builder.js +275 -0
- package/dist/query/join-builder.js.map +1 -0
- package/dist/query/query-builder.d.ts +543 -0
- package/dist/query/query-builder.d.ts.map +1 -0
- package/dist/query/query-builder.js +2649 -0
- package/dist/query/query-builder.js.map +1 -0
- package/dist/query/strategies/jsonb-collection-strategy.d.ts +51 -0
- package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/jsonb-collection-strategy.js +210 -0
- package/dist/query/strategies/jsonb-collection-strategy.js.map +1 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts +95 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/temptable-collection-strategy.js +456 -0
- package/dist/query/strategies/temptable-collection-strategy.js.map +1 -0
- package/dist/query/subquery.d.ts +152 -0
- package/dist/query/subquery.d.ts.map +1 -0
- package/dist/query/subquery.js +206 -0
- package/dist/query/subquery.js.map +1 -0
- package/dist/schema/column-builder.d.ts +127 -0
- package/dist/schema/column-builder.d.ts.map +1 -0
- package/dist/schema/column-builder.js +184 -0
- package/dist/schema/column-builder.js.map +1 -0
- package/dist/schema/inference.d.ts +26 -0
- package/dist/schema/inference.d.ts.map +1 -0
- package/dist/schema/inference.js +3 -0
- package/dist/schema/inference.js.map +1 -0
- package/dist/schema/navigation.d.ts +215 -0
- package/dist/schema/navigation.d.ts.map +1 -0
- package/dist/schema/navigation.js +233 -0
- package/dist/schema/navigation.js.map +1 -0
- package/dist/schema/row-type.d.ts +26 -0
- package/dist/schema/row-type.d.ts.map +1 -0
- package/dist/schema/row-type.js +3 -0
- package/dist/schema/row-type.js.map +1 -0
- package/dist/schema/sequence-builder.d.ts +87 -0
- package/dist/schema/sequence-builder.d.ts.map +1 -0
- package/dist/schema/sequence-builder.js +123 -0
- package/dist/schema/sequence-builder.js.map +1 -0
- package/dist/schema/table-builder.d.ts +122 -0
- package/dist/schema/table-builder.d.ts.map +1 -0
- package/dist/schema/table-builder.js +132 -0
- package/dist/schema/table-builder.js.map +1 -0
- package/dist/schema/typed-schema.d.ts +22 -0
- package/dist/schema/typed-schema.d.ts.map +1 -0
- package/dist/schema/typed-schema.js +28 -0
- package/dist/schema/typed-schema.js.map +1 -0
- package/dist/types/column-types.d.ts +20 -0
- package/dist/types/column-types.d.ts.map +1 -0
- package/dist/types/column-types.js +14 -0
- package/dist/types/column-types.js.map +1 -0
- package/dist/types/custom-types.d.ts +85 -0
- package/dist/types/custom-types.d.ts.map +1 -0
- package/dist/types/custom-types.js +132 -0
- package/dist/types/custom-types.js.map +1 -0
- package/dist/types/enum-builder.d.ts +31 -0
- package/dist/types/enum-builder.d.ts.map +1 -0
- package/dist/types/enum-builder.js +46 -0
- package/dist/types/enum-builder.js.map +1 -0
- package/dist/types/metadata.d.ts +67 -0
- package/dist/types/metadata.d.ts.map +1 -0
- package/dist/types/metadata.js +57 -0
- package/dist/types/metadata.js.map +1 -0
- package/dist/types/type-mapper.d.ts +49 -0
- package/dist/types/type-mapper.d.ts.map +1 -0
- package/dist/types/type-mapper.js +49 -0
- package/dist/types/type-mapper.js.map +1 -0
- 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 @@
|
|
|
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"}
|