@simplysm/orm-common 13.0.82 → 13.0.84
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/README.md +106 -0
- package/dist/ddl/initialize.d.ts +2 -2
- package/dist/ddl/initialize.js +1 -1
- package/dist/ddl/initialize.js.map +1 -1
- package/dist/ddl/table-ddl.d.ts +1 -1
- package/dist/exec/queryable.d.ts +115 -115
- package/dist/exec/queryable.js +68 -68
- package/dist/exec/queryable.js.map +1 -1
- package/dist/expr/expr.d.ts +248 -248
- package/dist/expr/expr.js +250 -250
- package/dist/query-builder/base/expr-renderer-base.d.ts +7 -7
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +3 -3
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +5 -5
- package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +7 -7
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +2 -2
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +4 -4
- package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +4 -4
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +2 -2
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +4 -4
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +7 -7
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/schema/factory/column-builder.d.ts +46 -46
- package/dist/schema/factory/column-builder.js +25 -25
- package/dist/schema/factory/index-builder.d.ts +22 -22
- package/dist/schema/factory/index-builder.js +14 -14
- package/dist/schema/factory/relation-builder.d.ts +93 -93
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +37 -37
- package/dist/schema/procedure-builder.d.ts +38 -38
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +26 -26
- package/dist/schema/table-builder.d.ts +38 -38
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +29 -29
- package/dist/schema/view-builder.d.ts +26 -26
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +18 -18
- package/dist/types/db.d.ts +40 -40
- package/dist/types/expr.d.ts +75 -75
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/query-def.d.ts +32 -32
- package/dist/types/query-def.d.ts.map +1 -1
- package/docs/db-context.md +238 -0
- package/docs/expressions.md +413 -0
- package/docs/query-builder.md +198 -0
- package/docs/queryable.md +420 -0
- package/docs/schema-builders.md +216 -0
- package/docs/types-and-utilities.md +353 -0
- package/package.json +4 -3
- package/src/ddl/initialize.ts +16 -16
- package/src/ddl/table-ddl.ts +1 -1
- package/src/exec/queryable.ts +163 -163
- package/src/expr/expr.ts +257 -257
- package/src/query-builder/base/expr-renderer-base.ts +8 -8
- package/src/query-builder/mssql/mssql-expr-renderer.ts +20 -20
- package/src/query-builder/mssql/mssql-query-builder.ts +28 -28
- package/src/query-builder/mysql/mysql-expr-renderer.ts +22 -22
- package/src/query-builder/mysql/mysql-query-builder.ts +65 -65
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +15 -15
- package/src/query-builder/postgresql/postgresql-query-builder.ts +43 -43
- package/src/query-builder/query-builder.ts +1 -1
- package/src/schema/factory/column-builder.ts +48 -48
- package/src/schema/factory/index-builder.ts +22 -22
- package/src/schema/factory/relation-builder.ts +95 -95
- package/src/schema/procedure-builder.ts +38 -38
- package/src/schema/table-builder.ts +38 -38
- package/src/schema/view-builder.ts +28 -28
- package/src/types/db.ts +41 -41
- package/src/types/expr.ts +79 -79
- package/src/types/query-def.ts +37 -37
- package/tests/ddl/basic.expected.ts +8 -8
|
@@ -5,12 +5,12 @@ import { createRelationFactory, type InferDeepRelations, type RelationBuilderRec
|
|
|
5
5
|
/**
|
|
6
6
|
* Database View definition builder
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* DbContext
|
|
8
|
+
* Define View query and relations via Fluent API
|
|
9
|
+
* Use with DbContext's queryable() for type-safe query composition
|
|
10
10
|
*
|
|
11
11
|
* @template TDbContext - DbContext type
|
|
12
12
|
* @template TData - View data record type
|
|
13
|
-
* @template TRelations -
|
|
13
|
+
* @template TRelations - Relation definition record type
|
|
14
14
|
*
|
|
15
15
|
* @example
|
|
16
16
|
* ```typescript
|
|
@@ -29,7 +29,7 @@ import { createRelationFactory, type InferDeepRelations, type RelationBuilderRec
|
|
|
29
29
|
* }))
|
|
30
30
|
* );
|
|
31
31
|
*
|
|
32
|
-
* //
|
|
32
|
+
* // Used in DbContext
|
|
33
33
|
* class MyDb extends DbContext {
|
|
34
34
|
* readonly userSummary = queryable(this, UserSummary);
|
|
35
35
|
* }
|
|
@@ -47,18 +47,18 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
47
47
|
viewFn?: (db: TDbContext) => Queryable<TData, any>;
|
|
48
48
|
relations?: TRelations;
|
|
49
49
|
};
|
|
50
|
-
/**
|
|
50
|
+
/** Relation definition (type for inference) */
|
|
51
51
|
readonly $relations: TRelations;
|
|
52
|
-
/**
|
|
52
|
+
/** Full Type inference */
|
|
53
53
|
readonly $inferSelect: TData;
|
|
54
54
|
/**
|
|
55
55
|
* @param meta - View Metadata
|
|
56
|
-
* @param meta.name - View
|
|
57
|
-
* @param meta.description - View description (
|
|
58
|
-
* @param meta.database - Database
|
|
59
|
-
* @param meta.schema - Schema
|
|
56
|
+
* @param meta.name - View name
|
|
57
|
+
* @param meta.description - View description (comment)
|
|
58
|
+
* @param meta.database - Database name
|
|
59
|
+
* @param meta.schema - Schema name (MSSQL/PostgreSQL)
|
|
60
60
|
* @param meta.viewFn - View Query definition function
|
|
61
|
-
* @param meta.relations -
|
|
61
|
+
* @param meta.relations - Relation definition
|
|
62
62
|
*/
|
|
63
63
|
constructor(meta: {
|
|
64
64
|
name: string;
|
|
@@ -71,14 +71,14 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
71
71
|
/**
|
|
72
72
|
* View set description
|
|
73
73
|
*
|
|
74
|
-
* @param desc - View description (DDL Comment
|
|
74
|
+
* @param desc - View description (used as DDL Comment)
|
|
75
75
|
* @returns new ViewBuilder instance
|
|
76
76
|
*/
|
|
77
77
|
description(desc: string): ViewBuilder<TDbContext, TData, TRelations>;
|
|
78
78
|
/**
|
|
79
79
|
* Database set name
|
|
80
80
|
*
|
|
81
|
-
* @param db - Database
|
|
81
|
+
* @param db - Database name
|
|
82
82
|
* @returns new ViewBuilder instance
|
|
83
83
|
*
|
|
84
84
|
* @example
|
|
@@ -90,20 +90,20 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
90
90
|
/**
|
|
91
91
|
* schema set name
|
|
92
92
|
*
|
|
93
|
-
* MSSQL,
|
|
93
|
+
* Used in MSSQL, PostgreSQL
|
|
94
94
|
*
|
|
95
|
-
* @param schema - Schema
|
|
95
|
+
* @param schema - Schema name (MSSQL: dbo, PostgreSQL: public)
|
|
96
96
|
* @returns new ViewBuilder instance
|
|
97
97
|
*/
|
|
98
98
|
schema(schema: string): ViewBuilder<TDbContext, TData, TRelations>;
|
|
99
99
|
/**
|
|
100
100
|
* View Query definition
|
|
101
101
|
*
|
|
102
|
-
*
|
|
102
|
+
* Define the View's data source through a SELECT query
|
|
103
103
|
*
|
|
104
104
|
* @template TViewData - View data type
|
|
105
105
|
* @template TDb - DbContext type
|
|
106
|
-
* @param viewFn - DbContext
|
|
106
|
+
* @param viewFn - Function that receives a DbContext and returns a Queryable
|
|
107
107
|
* @returns new ViewBuilder instance
|
|
108
108
|
*
|
|
109
109
|
* @example
|
|
@@ -123,12 +123,12 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
123
123
|
*/
|
|
124
124
|
query<TViewData extends DataRecord, TDb extends DbContextBase>(viewFn: (db: TDb) => Queryable<TViewData, any>): ViewBuilder<TDb, TViewData, TRelations>;
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
126
|
+
* Relation definition
|
|
127
127
|
*
|
|
128
|
-
*
|
|
128
|
+
* Set up relations with other Tables/Views
|
|
129
129
|
*
|
|
130
|
-
* @template T -
|
|
131
|
-
* @param fn -
|
|
130
|
+
* @template T - Relation definition type
|
|
131
|
+
* @param fn - Function that receives a relation factory and returns relation definitions
|
|
132
132
|
* @returns new ViewBuilder instance
|
|
133
133
|
*
|
|
134
134
|
* @example
|
|
@@ -141,21 +141,21 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
141
141
|
* ```
|
|
142
142
|
*
|
|
143
143
|
* @see {@link ForeignKeyBuilder} FK builder
|
|
144
|
-
* @see {@link ForeignKeyTargetBuilder} FK
|
|
144
|
+
* @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
|
|
145
145
|
*/
|
|
146
146
|
relations<T extends RelationBuilderRecord>(fn: (r: ReturnType<typeof createRelationFactory<this, keyof TData & string>>) => T): ViewBuilder<TDbContext, TData & InferDeepRelations<T>, TRelations>;
|
|
147
147
|
}
|
|
148
148
|
/**
|
|
149
|
-
* View builder
|
|
149
|
+
* View builder factory function
|
|
150
150
|
*
|
|
151
|
-
* ViewBuilder
|
|
151
|
+
* Creates a ViewBuilder for defining View schema via Fluent API
|
|
152
152
|
*
|
|
153
|
-
* @param name - View
|
|
153
|
+
* @param name - View name
|
|
154
154
|
* @returns ViewBuilder instance
|
|
155
155
|
*
|
|
156
156
|
* @example
|
|
157
157
|
* ```typescript
|
|
158
|
-
* // Basic
|
|
158
|
+
* // Basic usage
|
|
159
159
|
* const ActiveUsers = View("ActiveUsers")
|
|
160
160
|
* .database("mydb")
|
|
161
161
|
* .query((db: MyDb) =>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-builder.d.ts","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,WAAW,CACtB,UAAU,SAAS,aAAa,EAChC,KAAK,SAAS,UAAU,EACxB,UAAU,SAAS,qBAAqB;IAiBtC,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;IAtBH
|
|
1
|
+
{"version":3,"file":"view-builder.d.ts","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,WAAW,CACtB,UAAU,SAAS,aAAa,EAChC,KAAK,SAAS,UAAU,EACxB,UAAU,SAAS,qBAAqB;IAiBtC,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;IAtBH,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAG,UAAU,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,YAAY,EAAG,KAAK,CAAC;IAE9B;;;;;;;;OAQG;gBAEQ,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;IAGH;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIrE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIhE;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIlE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,SAAS,SAAS,UAAU,EAAE,GAAG,SAAS,aAAa,EAC3D,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,GAC7C,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC;IAI1C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,CAAC,SAAS,qBAAqB,EACvC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,GACjF,WAAW,CAAC,UAAU,EAAE,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;CAQtE;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,iEAEhC"}
|
|
@@ -4,24 +4,24 @@ import {
|
|
|
4
4
|
class ViewBuilder {
|
|
5
5
|
/**
|
|
6
6
|
* @param meta - View Metadata
|
|
7
|
-
* @param meta.name - View
|
|
8
|
-
* @param meta.description - View description (
|
|
9
|
-
* @param meta.database - Database
|
|
10
|
-
* @param meta.schema - Schema
|
|
7
|
+
* @param meta.name - View name
|
|
8
|
+
* @param meta.description - View description (comment)
|
|
9
|
+
* @param meta.database - Database name
|
|
10
|
+
* @param meta.schema - Schema name (MSSQL/PostgreSQL)
|
|
11
11
|
* @param meta.viewFn - View Query definition function
|
|
12
|
-
* @param meta.relations -
|
|
12
|
+
* @param meta.relations - Relation definition
|
|
13
13
|
*/
|
|
14
14
|
constructor(meta) {
|
|
15
15
|
this.meta = meta;
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
17
|
+
/** Relation definition (type for inference) */
|
|
18
18
|
$relations;
|
|
19
|
-
/**
|
|
19
|
+
/** Full Type inference */
|
|
20
20
|
$inferSelect;
|
|
21
21
|
/**
|
|
22
22
|
* View set description
|
|
23
23
|
*
|
|
24
|
-
* @param desc - View description (DDL Comment
|
|
24
|
+
* @param desc - View description (used as DDL Comment)
|
|
25
25
|
* @returns new ViewBuilder instance
|
|
26
26
|
*/
|
|
27
27
|
description(desc) {
|
|
@@ -30,7 +30,7 @@ class ViewBuilder {
|
|
|
30
30
|
/**
|
|
31
31
|
* Database set name
|
|
32
32
|
*
|
|
33
|
-
* @param db - Database
|
|
33
|
+
* @param db - Database name
|
|
34
34
|
* @returns new ViewBuilder instance
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
@@ -44,9 +44,9 @@ class ViewBuilder {
|
|
|
44
44
|
/**
|
|
45
45
|
* schema set name
|
|
46
46
|
*
|
|
47
|
-
* MSSQL,
|
|
47
|
+
* Used in MSSQL, PostgreSQL
|
|
48
48
|
*
|
|
49
|
-
* @param schema - Schema
|
|
49
|
+
* @param schema - Schema name (MSSQL: dbo, PostgreSQL: public)
|
|
50
50
|
* @returns new ViewBuilder instance
|
|
51
51
|
*/
|
|
52
52
|
schema(schema) {
|
|
@@ -55,11 +55,11 @@ class ViewBuilder {
|
|
|
55
55
|
/**
|
|
56
56
|
* View Query definition
|
|
57
57
|
*
|
|
58
|
-
*
|
|
58
|
+
* Define the View's data source through a SELECT query
|
|
59
59
|
*
|
|
60
60
|
* @template TViewData - View data type
|
|
61
61
|
* @template TDb - DbContext type
|
|
62
|
-
* @param viewFn - DbContext
|
|
62
|
+
* @param viewFn - Function that receives a DbContext and returns a Queryable
|
|
63
63
|
* @returns new ViewBuilder instance
|
|
64
64
|
*
|
|
65
65
|
* @example
|
|
@@ -81,12 +81,12 @@ class ViewBuilder {
|
|
|
81
81
|
return new ViewBuilder({ ...this.meta, viewFn });
|
|
82
82
|
}
|
|
83
83
|
/**
|
|
84
|
-
*
|
|
84
|
+
* Relation definition
|
|
85
85
|
*
|
|
86
|
-
*
|
|
86
|
+
* Set up relations with other Tables/Views
|
|
87
87
|
*
|
|
88
|
-
* @template T -
|
|
89
|
-
* @param fn -
|
|
88
|
+
* @template T - Relation definition type
|
|
89
|
+
* @param fn - Function that receives a relation factory and returns relation definitions
|
|
90
90
|
* @returns new ViewBuilder instance
|
|
91
91
|
*
|
|
92
92
|
* @example
|
|
@@ -99,7 +99,7 @@ class ViewBuilder {
|
|
|
99
99
|
* ```
|
|
100
100
|
*
|
|
101
101
|
* @see {@link ForeignKeyBuilder} FK builder
|
|
102
|
-
* @see {@link ForeignKeyTargetBuilder} FK
|
|
102
|
+
* @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
|
|
103
103
|
*/
|
|
104
104
|
relations(fn) {
|
|
105
105
|
return new ViewBuilder({
|
package/dist/types/db.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { ColumnPrimitive, ColumnPrimitiveStr } from "./column";
|
|
|
2
2
|
import type { QueryDef } from "./query-def";
|
|
3
3
|
import type { DbContextBase, DbContextDdlMethods } from "./db-context-def";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Supported Database dialects
|
|
6
6
|
*
|
|
7
7
|
* - `mysql`: MySQL 8.0.14+
|
|
8
8
|
* - `mssql`: Microsoft SQL Server 2012+
|
|
@@ -10,9 +10,9 @@ import type { DbContextBase, DbContextDdlMethods } from "./db-context-def";
|
|
|
10
10
|
*/
|
|
11
11
|
export type Dialect = "mysql" | "mssql" | "postgresql";
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* List of all supported Database dialects
|
|
14
14
|
*
|
|
15
|
-
*
|
|
15
|
+
* Used for per-dialect validation in testing
|
|
16
16
|
*
|
|
17
17
|
* @example
|
|
18
18
|
* ```typescript
|
|
@@ -26,14 +26,14 @@ export declare const dialects: Dialect[];
|
|
|
26
26
|
/**
|
|
27
27
|
* QueryBuilder.build() return type
|
|
28
28
|
*
|
|
29
|
-
*
|
|
29
|
+
* Built SQL string and metadata for multiple result set processing
|
|
30
30
|
*
|
|
31
|
-
* @property sql -
|
|
32
|
-
* @property resultSetIndex - Result
|
|
33
|
-
* - MySQL INSERT with OUTPUT: 1 (INSERT + SELECT
|
|
34
|
-
* @property resultSetStride -
|
|
35
|
-
* -
|
|
36
|
-
* - MySQL
|
|
31
|
+
* @property sql - Built SQL string
|
|
32
|
+
* @property resultSetIndex - Result set index to fetch results from (default: 0)
|
|
33
|
+
* - MySQL INSERT with OUTPUT: 1 (SELECT from INSERT + SELECT)
|
|
34
|
+
* @property resultSetStride - Extract every Nth result set from multiple results
|
|
35
|
+
* - Example: index=1, stride=2 -> returns result sets 1, 3, 5, 7...
|
|
36
|
+
* - MySQL multiple INSERT: INSERT;SELECT; x N -> 1, 3, 5...
|
|
37
37
|
*/
|
|
38
38
|
export interface QueryBuildResult {
|
|
39
39
|
sql: string;
|
|
@@ -43,23 +43,23 @@ export interface QueryBuildResult {
|
|
|
43
43
|
/**
|
|
44
44
|
* Transaction isolation level
|
|
45
45
|
*
|
|
46
|
-
* - `READ_UNCOMMITTED`:
|
|
47
|
-
* - `READ_COMMITTED`:
|
|
48
|
-
* - `REPEATABLE_READ`:
|
|
49
|
-
* - `SERIALIZABLE`:
|
|
46
|
+
* - `READ_UNCOMMITTED`: Can read uncommitted data (Dirty Read)
|
|
47
|
+
* - `READ_COMMITTED`: Read only committed data (default)
|
|
48
|
+
* - `REPEATABLE_READ`: Guarantees same query returns same result within transaction
|
|
49
|
+
* - `SERIALIZABLE`: Full serialization (most strict)
|
|
50
50
|
*/
|
|
51
51
|
export type IsolationLevel = "READ_UNCOMMITTED" | "READ_COMMITTED" | "REPEATABLE_READ" | "SERIALIZABLE";
|
|
52
52
|
/**
|
|
53
53
|
* Query result data record type
|
|
54
54
|
*
|
|
55
|
-
*
|
|
55
|
+
* Represents nested relation (include) results with recursive structure
|
|
56
56
|
*
|
|
57
57
|
* @example
|
|
58
58
|
* ```typescript
|
|
59
|
-
* //
|
|
59
|
+
* // Simple record
|
|
60
60
|
* type User = { id: number; name: string; }
|
|
61
61
|
*
|
|
62
|
-
* //
|
|
62
|
+
* // Nested relation include
|
|
63
63
|
* type UserWithPosts = {
|
|
64
64
|
* id: number;
|
|
65
65
|
* name: string;
|
|
@@ -72,14 +72,14 @@ export type DataRecord = {
|
|
|
72
72
|
[key: string]: ColumnPrimitive | DataRecord | DataRecord[];
|
|
73
73
|
};
|
|
74
74
|
/**
|
|
75
|
-
* DbContext
|
|
75
|
+
* DbContext executor interface
|
|
76
76
|
*
|
|
77
|
-
*
|
|
78
|
-
* NodeDbContextExecutor (
|
|
77
|
+
* Responsible for actual DB connection and query execution
|
|
78
|
+
* Implemented by NodeDbContextExecutor (server) or SdOrmServiceClientDbContextExecutor (client)
|
|
79
79
|
*
|
|
80
80
|
* @example
|
|
81
81
|
* ```typescript
|
|
82
|
-
* //
|
|
82
|
+
* // Server-side implementation example
|
|
83
83
|
* class NodeDbContextExecutor implements IDbContextExecutor {
|
|
84
84
|
* async connect(): Promise<void> {
|
|
85
85
|
* await this.connection.connect();
|
|
@@ -88,48 +88,48 @@ export type DataRecord = {
|
|
|
88
88
|
* }
|
|
89
89
|
* ```
|
|
90
90
|
*
|
|
91
|
-
* @see {@link DbContext}
|
|
91
|
+
* @see {@link DbContext} Used in DbContext
|
|
92
92
|
*/
|
|
93
93
|
export interface DbContextExecutor {
|
|
94
94
|
/**
|
|
95
|
-
* DB
|
|
95
|
+
* Establish DB connection
|
|
96
96
|
*/
|
|
97
97
|
connect(): Promise<void>;
|
|
98
98
|
/**
|
|
99
|
-
* DB
|
|
99
|
+
* Close DB connection
|
|
100
100
|
*/
|
|
101
101
|
close(): Promise<void>;
|
|
102
102
|
/**
|
|
103
|
-
*
|
|
103
|
+
* Begin transaction
|
|
104
104
|
*
|
|
105
|
-
* @param isolationLevel -
|
|
105
|
+
* @param isolationLevel - Isolation level (optional)
|
|
106
106
|
*/
|
|
107
107
|
beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
|
108
108
|
/**
|
|
109
|
-
*
|
|
109
|
+
* Commit transaction
|
|
110
110
|
*/
|
|
111
111
|
commitTransaction(): Promise<void>;
|
|
112
112
|
/**
|
|
113
|
-
*
|
|
113
|
+
* Rollback transaction
|
|
114
114
|
*/
|
|
115
115
|
rollbackTransaction(): Promise<void>;
|
|
116
116
|
/**
|
|
117
|
-
* QueryDef array
|
|
117
|
+
* Execute QueryDef array
|
|
118
118
|
*
|
|
119
119
|
* @template T - Result record type
|
|
120
|
-
* @param defs -
|
|
121
|
-
* @param resultMetas -
|
|
122
|
-
* @returns
|
|
120
|
+
* @param defs - QueryDef array to execute
|
|
121
|
+
* @param resultMetas - Metadata for result transformation (optional)
|
|
122
|
+
* @returns Array of result arrays per QueryDef
|
|
123
123
|
*/
|
|
124
124
|
executeDefs<T = DataRecord>(defs: QueryDef[], resultMetas?: (ResultMeta | undefined)[]): Promise<T[][]>;
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
|
-
*
|
|
127
|
+
* Metadata for query result transformation
|
|
128
128
|
*
|
|
129
|
-
*
|
|
129
|
+
* Used when transforming SELECT results into TypeScript objects
|
|
130
130
|
*
|
|
131
|
-
* @property columns - Column
|
|
132
|
-
* @property joins - JOIN
|
|
131
|
+
* @property columns - Column name -> ColumnPrimitiveStr mapping
|
|
132
|
+
* @property joins - JOIN alias -> single/array indicator
|
|
133
133
|
*/
|
|
134
134
|
export interface ResultMeta {
|
|
135
135
|
columns: Record<string, ColumnPrimitiveStr>;
|
|
@@ -140,10 +140,10 @@ export interface ResultMeta {
|
|
|
140
140
|
/**
|
|
141
141
|
* Database migration definition
|
|
142
142
|
*
|
|
143
|
-
* schema
|
|
143
|
+
* Version-control schema changes
|
|
144
144
|
*
|
|
145
|
-
* @property name - Migration
|
|
146
|
-
* @property up - Migration
|
|
145
|
+
* @property name - Unique Migration name (timestamp recommended)
|
|
146
|
+
* @property up - Migration execution function
|
|
147
147
|
*
|
|
148
148
|
* @example
|
|
149
149
|
* ```typescript
|
|
@@ -166,7 +166,7 @@ export interface ResultMeta {
|
|
|
166
166
|
* ];
|
|
167
167
|
* ```
|
|
168
168
|
*
|
|
169
|
-
* @see {@link DbContext.initialize} migration
|
|
169
|
+
* @see {@link DbContext.initialize} migration execution
|
|
170
170
|
*/
|
|
171
171
|
export interface Migration {
|
|
172
172
|
name: string;
|