@deterministic-code/datasources 0.1.11 → 0.1.14
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/dist/BulkCRUDRepository.js +2 -0
- package/dist/CRUDRepository.js +20 -9
- package/dist/CRUDRepositoryBuilder.d.ts +4 -0
- package/dist/CRUDRepositoryBuilder.js +9 -0
- package/dist/CreateEnrichmentStrategy.d.ts +8 -1
- package/dist/CreateEnrichmentStrategy.js +48 -3
- package/dist/DefaultWriteEnrichmentStrategy.d.ts +1 -0
- package/dist/DefaultWriteEnrichmentStrategy.js +8 -2
- package/dist/DriverLoader.d.ts +1 -1
- package/dist/DriverLoader.js +7 -110
- package/dist/IWriteEnrichmentStrategy.d.ts +1 -0
- package/dist/NestedSelectBuilder.d.ts +6 -0
- package/dist/NestedSelectBuilder.js +63 -0
- package/dist/NestedSelectBuilderOptions.d.ts +5 -0
- package/dist/NestedSelectBuilderOptions.js +1 -0
- package/dist/NestedSelectRelation.d.ts +9 -0
- package/dist/NestedSelectRelation.js +1 -0
- package/dist/NestedSelectRelationKind.d.ts +1 -0
- package/dist/NestedSelectRelationKind.js +1 -0
- package/dist/NestedSelectStatement.d.ts +10 -0
- package/dist/NestedSelectStatement.js +1 -0
- package/dist/NestedSelectType.d.ts +7 -0
- package/dist/NestedSelectType.js +1 -0
- package/dist/ReadonlyRepository.d.ts +2 -1
- package/dist/ReadonlyRepository.js +9 -1
- package/dist/RepositoryBuilderOptionsFactory.d.ts +8 -0
- package/dist/RepositoryBuilderOptionsFactory.js +12 -0
- package/dist/SelectFieldAliases.d.ts +14 -0
- package/dist/SelectFieldAliases.js +62 -0
- package/dist/StatementMappers.d.ts +1 -0
- package/dist/StatementMappers.js +21 -28
- package/dist/StoredEnrichment.d.ts +7 -5
- package/dist/StoredEnrichment.js +3 -1
- package/dist/converters/DefaultValueConverter.js +7 -5
- package/dist/converters/DefaultValueOptions.d.ts +2 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.js +3 -1
- package/dist/statements/Aggregate.d.ts +4 -4
- package/dist/statements/Aggregate.js +5 -5
- package/dist/statements/CreateNestedReadStoredProcedureStatement.d.ts +14 -0
- package/dist/statements/CreateNestedReadStoredProcedureStatement.js +37 -0
- package/dist/statements/CreateNestedReadStoredProcedureStatementTextRenderer.d.ts +4 -0
- package/dist/statements/CreateNestedReadStoredProcedureStatementTextRenderer.js +5 -0
- package/dist/statements/CreateTableStatementTextRenderer.d.ts +2 -1
- package/dist/statements/ICreateNestedReadStoredProcedureStatement.d.ts +8 -0
- package/dist/statements/ICreateNestedReadStoredProcedureStatement.js +1 -0
- package/dist/statements/IStatementVisitor.d.ts +2 -0
- package/dist/statements/NestedWhereArgument.d.ts +5 -0
- package/dist/statements/NestedWhereArgument.js +1 -0
- package/dist/statements/SelectStatement.d.ts +1 -0
- package/dist/statements/SelectStatement.js +2 -0
- package/dist/statements/SelectStatementOptions.d.ts +1 -0
- package/dist/statements/SelectStatementTextRenderer.js +6 -1
- package/dist/statements/StatementRenderer.d.ts +3 -0
- package/dist/statements/StatementRenderer.js +5 -0
- package/dist/statements/Where.js +1 -0
- package/dist/statements/index.d.ts +4 -0
- package/dist/statements/index.js +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export const selectFieldAliases = (table, fields, aliases = []) => {
|
|
2
|
+
const result = fields.map(() => undefined);
|
|
3
|
+
const used = new Set();
|
|
4
|
+
for (const [i] of fields.entries()) {
|
|
5
|
+
const alias = aliases[i];
|
|
6
|
+
if (alias !== undefined) {
|
|
7
|
+
result[i] = alias;
|
|
8
|
+
used.add(alias);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
for (const [i, field] of fields.entries()) {
|
|
12
|
+
const path = pathOf(field, table);
|
|
13
|
+
if (result[i] === undefined && path?.root) {
|
|
14
|
+
result[i] = path.last;
|
|
15
|
+
used.add(path.last);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
for (const [i, field] of fields.entries()) {
|
|
19
|
+
const path = pathOf(field, table);
|
|
20
|
+
if (result[i] === undefined && path && !path.root) {
|
|
21
|
+
const alias = used.has(path.last) ? `${path.owner}${path.last}` : path.last;
|
|
22
|
+
result[i] = alias;
|
|
23
|
+
used.add(alias);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
export const applySelectFieldAlias = (field, alias) => alias === undefined ? field : `${field} AS ${alias}`;
|
|
29
|
+
export const pathOf = (field, table) => {
|
|
30
|
+
if (asIndexOf(field) >= 0 || field.includes("("))
|
|
31
|
+
return undefined;
|
|
32
|
+
const parts = segments(field);
|
|
33
|
+
if (parts.length < 2)
|
|
34
|
+
return undefined;
|
|
35
|
+
return {
|
|
36
|
+
owner: parts[parts.length - 2],
|
|
37
|
+
last: parts[parts.length - 1],
|
|
38
|
+
root: parts.length === 2 && parts[0] === table,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export const functionOf = (field) => {
|
|
42
|
+
const open = field.indexOf("(");
|
|
43
|
+
return open <= 0 || !field.endsWith(")")
|
|
44
|
+
? undefined
|
|
45
|
+
: { name: field.slice(0, open).trim(), inner: field.slice(open + 1, -1).trim() };
|
|
46
|
+
};
|
|
47
|
+
export const asIndexOf = (field) => field.toUpperCase().indexOf(" AS ");
|
|
48
|
+
export const segments = (name) => {
|
|
49
|
+
const parts = [];
|
|
50
|
+
let quoted = false;
|
|
51
|
+
let start = 0;
|
|
52
|
+
for (let i = 0; i < name.length; i++) {
|
|
53
|
+
if (name[i] === '"')
|
|
54
|
+
quoted = !quoted;
|
|
55
|
+
if (name[i] === "." && !quoted) {
|
|
56
|
+
parts.push(name.slice(start, i));
|
|
57
|
+
start = i + 1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
parts.push(name.slice(start));
|
|
61
|
+
return parts;
|
|
62
|
+
};
|
|
@@ -12,5 +12,6 @@ export declare class StatementMappers implements IMapper<string, string> {
|
|
|
12
12
|
property: (key: string) => string;
|
|
13
13
|
apply: (query: IStatement | undefined, cell: (property: string, value: Cell) => Cell) => IStatement | undefined;
|
|
14
14
|
applyWhere: (where: IWhere | undefined, cell: (property: string, value: Cell) => Cell) => IWhere | undefined;
|
|
15
|
+
private mapSelectFields;
|
|
15
16
|
private mapSelectField;
|
|
16
17
|
}
|
package/dist/StatementMappers.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { DatasourceError } from "./DatasourceError.js";
|
|
2
|
+
import { applySelectFieldAlias, asIndexOf, functionOf, segments, selectFieldAliases } from "./SelectFieldAliases.js";
|
|
1
3
|
import { DeleteStatement } from "./statements/DeleteStatement.js";
|
|
2
4
|
import { InsertStatement } from "./statements/InsertStatement.js";
|
|
3
5
|
import { SelectInsertedIdStatement } from "./statements/SelectInsertedIdStatement.js";
|
|
@@ -12,25 +14,25 @@ export class StatementMappers {
|
|
|
12
14
|
this.propertyMappers = propertyMappers;
|
|
13
15
|
}
|
|
14
16
|
map = (property) => {
|
|
15
|
-
const
|
|
16
|
-
if (
|
|
17
|
+
const parts = segments(property);
|
|
18
|
+
if (parts.length < 2)
|
|
17
19
|
return this.propertyMappers.map(property);
|
|
18
|
-
const qualifier =
|
|
19
|
-
const name =
|
|
20
|
+
const qualifier = parts[parts.length - 2];
|
|
21
|
+
const name = parts[parts.length - 1];
|
|
20
22
|
const mapped = this.propertyMappers.map(name);
|
|
21
23
|
if (mapped !== name && mapped.includes("."))
|
|
22
24
|
return mapped;
|
|
23
25
|
const table = this.entityMappers.map(qualifier);
|
|
24
|
-
return table === qualifier && mapped === name ?
|
|
26
|
+
return table === qualifier && mapped === name ? `${qualifier}.${name}` : `${table}.${mapped}`;
|
|
25
27
|
};
|
|
26
28
|
reverseMap = (key) => {
|
|
27
29
|
const reversed = this.propertyMappers.reverseMap(key);
|
|
28
30
|
if (reversed !== key && this.propertyMappers.map(reversed) === key)
|
|
29
31
|
return reversed;
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
32
|
+
const parts = segments(key);
|
|
33
|
+
if (parts.length < 2)
|
|
32
34
|
return reversed;
|
|
33
|
-
const column =
|
|
35
|
+
const column = parts[parts.length - 1];
|
|
34
36
|
const name = this.propertyMappers.reverseMap(column);
|
|
35
37
|
return name !== column && this.propertyMappers.map(name) === column ? name : reversed;
|
|
36
38
|
};
|
|
@@ -41,7 +43,7 @@ export class StatementMappers {
|
|
|
41
43
|
return new SelectStatement({
|
|
42
44
|
distinct: query.distinct,
|
|
43
45
|
table: this.entityMappers.map(query.table),
|
|
44
|
-
fields: query.fields.
|
|
46
|
+
fields: this.mapSelectFields(query.table, query.fields, query.aliases),
|
|
45
47
|
where: query.where instanceof Where ? this.applyWhere(query.where, cell) : query.where,
|
|
46
48
|
joins: query.joins.map((join) => ({
|
|
47
49
|
kind: join.kind,
|
|
@@ -65,24 +67,15 @@ export class StatementMappers {
|
|
|
65
67
|
return query;
|
|
66
68
|
};
|
|
67
69
|
applyWhere = (where, cell) => where instanceof Where ? where.map(this.column, cell) : where;
|
|
68
|
-
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
mapSelectFields = (table, fields, aliases) => {
|
|
71
|
+
const lookup = selectFieldAliases(table, fields, aliases);
|
|
72
|
+
return fields.map((field, i) => this.mapSelectField(field, lookup[i]));
|
|
73
|
+
};
|
|
74
|
+
mapSelectField = (field, alias) => {
|
|
75
|
+
if (asIndexOf(field) >= 0)
|
|
76
|
+
throw new DatasourceError(`Select field "${field}" must be a path`);
|
|
77
|
+
const functionCall = functionOf(field);
|
|
78
|
+
const mapped = functionCall === undefined ? this.map(field) : `${functionCall.name}(${this.map(functionCall.inner)})`;
|
|
79
|
+
return applySelectFieldAlias(mapped, alias);
|
|
76
80
|
};
|
|
77
81
|
}
|
|
78
|
-
const lastDot = (name) => {
|
|
79
|
-
let quoted = false;
|
|
80
|
-
let dot = -1;
|
|
81
|
-
for (let i = 0; i < name.length; i++) {
|
|
82
|
-
if (name[i] === '"')
|
|
83
|
-
quoted = !quoted;
|
|
84
|
-
if (name[i] === "." && !quoted)
|
|
85
|
-
dot = i;
|
|
86
|
-
}
|
|
87
|
-
return dot;
|
|
88
|
-
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { Enrichment } from "./Enrichment.js";
|
|
2
2
|
import type { ICRUDRepository } from "./ICRUDRepository.js";
|
|
3
|
+
import type { IReadonlyRepository } from "./IReadonlyRepository.js";
|
|
3
4
|
import type { Row } from "./Row.js";
|
|
4
|
-
export type ApplyEnrichment<T
|
|
5
|
-
export declare class StoredEnrichment<T
|
|
5
|
+
export type ApplyEnrichment<T> = (parents: T[], sources?: (Row | undefined)[]) => Promise<void>;
|
|
6
|
+
export declare class StoredEnrichment<T, TRelated = T, TLink = TRelated> {
|
|
6
7
|
readonly enrichment: Enrichment;
|
|
7
8
|
apply: ApplyEnrichment<T>;
|
|
8
|
-
persist?: ICRUDRepository<
|
|
9
|
-
link?: ICRUDRepository<
|
|
10
|
-
|
|
9
|
+
persist?: ICRUDRepository<TRelated>;
|
|
10
|
+
link?: ICRUDRepository<TLink>;
|
|
11
|
+
via?: IReadonlyRepository<TRelated>;
|
|
12
|
+
constructor(enrichment: Enrichment, apply: ApplyEnrichment<T>, persist?: ICRUDRepository<TRelated>, link?: ICRUDRepository<TLink>, via?: IReadonlyRepository<TRelated>);
|
|
11
13
|
}
|
package/dist/StoredEnrichment.js
CHANGED
|
@@ -3,10 +3,12 @@ export class StoredEnrichment {
|
|
|
3
3
|
apply;
|
|
4
4
|
persist;
|
|
5
5
|
link;
|
|
6
|
-
|
|
6
|
+
via;
|
|
7
|
+
constructor(enrichment, apply, persist, link, via) {
|
|
7
8
|
this.enrichment = enrichment;
|
|
8
9
|
this.apply = apply;
|
|
9
10
|
this.persist = persist;
|
|
10
11
|
this.link = link;
|
|
12
|
+
this.via = via;
|
|
11
13
|
}
|
|
12
14
|
}
|
|
@@ -131,7 +131,7 @@ export class DefaultValueConverter {
|
|
|
131
131
|
const match = entry.reverse.exec(native);
|
|
132
132
|
if (match === null)
|
|
133
133
|
continue;
|
|
134
|
-
const arg = match
|
|
134
|
+
const arg = match.slice(1).find((group) => group !== undefined) ?? "";
|
|
135
135
|
return entry.specText === undefined ? name : entry.specText(arg);
|
|
136
136
|
}
|
|
137
137
|
throw new Error(`Native default '${native}' is not a valid ${specType} default`);
|
|
@@ -148,15 +148,17 @@ export class DefaultValueConverter {
|
|
|
148
148
|
String: token(numeric, (arg) => arg, numeric.spec),
|
|
149
149
|
};
|
|
150
150
|
};
|
|
151
|
+
const quote = opts.quote ?? quoted;
|
|
152
|
+
const quoteReverse = opts.quoteReverse ?? quotedReverse;
|
|
151
153
|
const quotedString = {
|
|
152
|
-
String: token(spec.string.String,
|
|
153
|
-
Numeric: token(spec.string.String,
|
|
154
|
+
String: token(spec.string.String, quote, quoteReverse),
|
|
155
|
+
Numeric: token(spec.string.String, quote, quoteReverse),
|
|
154
156
|
};
|
|
155
157
|
const dictionary = {
|
|
156
158
|
string: quotedString,
|
|
157
159
|
character: {
|
|
158
|
-
String: token(spec.character.String,
|
|
159
|
-
Numeric: token(spec.character.String,
|
|
160
|
+
String: token(spec.character.String, quote, quoteReverse),
|
|
161
|
+
Numeric: token(spec.character.String, quote, quoteReverse),
|
|
160
162
|
},
|
|
161
163
|
boolean: {
|
|
162
164
|
Boolean: token(spec.boolean.Boolean, (arg) => (arg === "true" ? opts.booleanOn : opts.booleanOff), new RegExp(`^(${escapeRe(opts.booleanOn)}|${escapeRe(opts.booleanOff)})$`)),
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { DatasourceOptions } from "./DatasourceOptions.js";
|
|
|
10
10
|
export { DatasourceFactory } from "./DatasourceFactory.js";
|
|
11
11
|
export { ProviderCatalog } from "./ProviderCatalog.js";
|
|
12
12
|
export { DriverLoader } from "./DriverLoader.js";
|
|
13
|
-
export type { ICreateTableStatement, ICreateIndexStatement, IDropTableStatement, IAlterTableStatement, AlterAction, IDropIndexStatement, IDropTriggerStatement, ICreateTriggerStatement, IIdentityInsertStatement, ICreateCreateStoredProcedureStatement, ICreateReadStoredProcedureStatement, ICreateUpdateStoredProcedureStatement, ICreateDeleteStoredProcedureStatement, ICreateBulkCreateStoredProcedureStatement, ICreateBulkUpdateStoredProcedureStatement, ICreateBulkDeleteStoredProcedureStatement, IDropRoutineStatement, RoutineParameter, IDeleteStatement, IExpression, IBulkDeleteStatement, IBulkInsertStatement, IBulkUpdateStatement, IInsertStatement, ISelectStatement, IStatement, IStatementVisitor, ICondition, IConditionVisitor, IExecuteStoredProcedureStatement, IReturnStatement, ITableConstraint, TableConstraintKind, IUpdateStatement, IWhere, } from "./statements/index.js";
|
|
13
|
+
export type { ICreateTableStatement, ICreateIndexStatement, IDropTableStatement, IAlterTableStatement, AlterAction, IDropIndexStatement, IDropTriggerStatement, ICreateTriggerStatement, IIdentityInsertStatement, ICreateCreateStoredProcedureStatement, ICreateReadStoredProcedureStatement, ICreateNestedReadStoredProcedureStatement, NestedWhereArgument, ICreateUpdateStoredProcedureStatement, ICreateDeleteStoredProcedureStatement, ICreateBulkCreateStoredProcedureStatement, ICreateBulkUpdateStoredProcedureStatement, ICreateBulkDeleteStoredProcedureStatement, IDropRoutineStatement, RoutineParameter, IDeleteStatement, IExpression, IBulkDeleteStatement, IBulkInsertStatement, IBulkUpdateStatement, IInsertStatement, ISelectStatement, IStatement, IStatementVisitor, ICondition, IConditionVisitor, IExecuteStoredProcedureStatement, IReturnStatement, ITableConstraint, TableConstraintKind, IUpdateStatement, IWhere, } from "./statements/index.js";
|
|
14
14
|
export type { IReader } from "./IReader.js";
|
|
15
15
|
export type { IRepository } from "./IRepository.js";
|
|
16
16
|
export type { IReadonlyRepository } from "./IReadonlyRepository.js";
|
|
@@ -52,7 +52,14 @@ export { RepositoryTreeNode } from "./RepositoryTreeNode.js";
|
|
|
52
52
|
export { CRUDRepository } from "./CRUDRepository.js";
|
|
53
53
|
export { ReadonlyRepositoryBuilder } from "./ReadonlyRepositoryBuilder.js";
|
|
54
54
|
export { CRUDRepositoryBuilder } from "./CRUDRepositoryBuilder.js";
|
|
55
|
+
export { RepositoryBuilderOptionsFactory } from "./RepositoryBuilderOptionsFactory.js";
|
|
55
56
|
export { StatementMappers } from "./StatementMappers.js";
|
|
57
|
+
export { NestedSelectBuilder } from "./NestedSelectBuilder.js";
|
|
58
|
+
export type { NestedSelectBuilderOptions } from "./NestedSelectBuilderOptions.js";
|
|
59
|
+
export type { NestedSelectRelation } from "./NestedSelectRelation.js";
|
|
60
|
+
export type { NestedSelectRelationKind } from "./NestedSelectRelationKind.js";
|
|
61
|
+
export type { NestedSelectStatement } from "./NestedSelectStatement.js";
|
|
62
|
+
export type { NestedSelectType } from "./NestedSelectType.js";
|
|
56
63
|
export { ReadonlyRepositoryStatements } from "./ReadonlyRepositoryStatements.js";
|
|
57
64
|
export { CRUDRepositoryStatements } from "./CRUDRepositoryStatements.js";
|
|
58
65
|
export type { BuiltRepository } from "./BuiltRepository.js";
|
|
@@ -67,7 +74,7 @@ export { UnitOfWorkTransaction } from "./UnitOfWorkTransaction.js";
|
|
|
67
74
|
export { IsolationLevel } from "./IsolationLevel.js";
|
|
68
75
|
export type { IsolationLevel as IsolationLevelName } from "./IsolationLevel.js";
|
|
69
76
|
export type { Comparison } from "./statements/index.js";
|
|
70
|
-
export { ArrayExpression, CheckConstraint, ColumnDefault, Condition, ConditionRenderer, ExpressionRenderer, CreateIndexStatement, CreateTableStatement, CreateTableStatementTextRenderer, CreateIndexStatementTextRenderer, DropTableStatement, DropTableStatementTextRenderer, AlterTableStatement, AlterTableStatementTextRenderer, DropIndexStatement, DropIndexStatementTextRenderer, DropTriggerStatement, DropTriggerStatementTextRenderer, CreateTriggerStatement, CreateTriggerStatementTextRenderer, IdentityInsertStatement, IdentityInsertStatementTextRenderer, CreateCreateStoredProcedureStatement, CreateReadStoredProcedureStatement, CreateUpdateStoredProcedureStatement, CreateDeleteStoredProcedureStatement, CreateBulkCreateStoredProcedureStatement, CreateBulkUpdateStoredProcedureStatement, CreateBulkDeleteStoredProcedureStatement, CreateCreateStoredProcedureStatementTextRenderer, CreateReadStoredProcedureStatementTextRenderer, CreateUpdateStoredProcedureStatementTextRenderer, CreateDeleteStoredProcedureStatementTextRenderer, CreateBulkCreateStoredProcedureStatementTextRenderer, CreateBulkUpdateStoredProcedureStatementTextRenderer, CreateBulkDeleteStoredProcedureStatementTextRenderer, DropRoutineStatement, DropRoutineStatementTextRenderer, SelectStatementTextRenderer, InsertStatementTextRenderer, UpdateStatementTextRenderer, DeleteStatementTextRenderer, BulkInsertStatementTextRenderer, BulkUpdateStatementTextRenderer, BulkDeleteStatementTextRenderer, ExecuteStoredProcedureStatementTextRenderer, ReturnStatementTextRenderer, SelectInsertedIdStatementTextRenderer, DefaultStatementTextRenderer, DeleteStatement, ForeignKey, Identifier, InsertStatement, BulkInsertStatement, BulkUpdateStatement, BulkDeleteStatement, Literal, NotNull, Operator, eq, ne, gt, lt, ge, le, PrimaryKey, Aggregate, OrderBy, SelectStatement, StatementParser, StatementRenderer, StatementTextRenderer, Native, n, Subquery, ReferentialAction, ExpressionEvaluator, StatementEvaluator, ExecuteStoredProcedureStatement, SelectInsertedIdStatement, ReturnStatement, UniqueConstraint, UpdateStatement, WhereText, Where, Join, } from "./statements/index.js";
|
|
77
|
+
export { ArrayExpression, CheckConstraint, ColumnDefault, Condition, ConditionRenderer, ExpressionRenderer, CreateIndexStatement, CreateTableStatement, CreateTableStatementTextRenderer, CreateIndexStatementTextRenderer, DropTableStatement, DropTableStatementTextRenderer, AlterTableStatement, AlterTableStatementTextRenderer, DropIndexStatement, DropIndexStatementTextRenderer, DropTriggerStatement, DropTriggerStatementTextRenderer, CreateTriggerStatement, CreateTriggerStatementTextRenderer, IdentityInsertStatement, IdentityInsertStatementTextRenderer, CreateCreateStoredProcedureStatement, CreateReadStoredProcedureStatement, CreateNestedReadStoredProcedureStatement, CreateUpdateStoredProcedureStatement, CreateDeleteStoredProcedureStatement, CreateBulkCreateStoredProcedureStatement, CreateBulkUpdateStoredProcedureStatement, CreateBulkDeleteStoredProcedureStatement, CreateCreateStoredProcedureStatementTextRenderer, CreateReadStoredProcedureStatementTextRenderer, CreateNestedReadStoredProcedureStatementTextRenderer, CreateUpdateStoredProcedureStatementTextRenderer, CreateDeleteStoredProcedureStatementTextRenderer, CreateBulkCreateStoredProcedureStatementTextRenderer, CreateBulkUpdateStoredProcedureStatementTextRenderer, CreateBulkDeleteStoredProcedureStatementTextRenderer, DropRoutineStatement, DropRoutineStatementTextRenderer, SelectStatementTextRenderer, InsertStatementTextRenderer, UpdateStatementTextRenderer, DeleteStatementTextRenderer, BulkInsertStatementTextRenderer, BulkUpdateStatementTextRenderer, BulkDeleteStatementTextRenderer, ExecuteStoredProcedureStatementTextRenderer, ReturnStatementTextRenderer, SelectInsertedIdStatementTextRenderer, DefaultStatementTextRenderer, DeleteStatement, ForeignKey, Identifier, InsertStatement, BulkInsertStatement, BulkUpdateStatement, BulkDeleteStatement, Literal, NotNull, Operator, eq, ne, gt, lt, ge, le, PrimaryKey, Aggregate, OrderBy, SelectStatement, StatementParser, StatementRenderer, StatementTextRenderer, Native, n, Subquery, ReferentialAction, ExpressionEvaluator, StatementEvaluator, ExecuteStoredProcedureStatement, SelectInsertedIdStatement, ReturnStatement, UniqueConstraint, UpdateStatement, WhereText, Where, Join, } from "./statements/index.js";
|
|
71
78
|
export type { IDatasourceFactory } from "./IDatasourceFactory.js";
|
|
72
79
|
export type { Parameter } from "./Parameter.js";
|
|
73
80
|
export { ParameterDirection } from "./ParameterDirection.js";
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,9 @@ export { RepositoryTreeNode } from "./RepositoryTreeNode.js";
|
|
|
29
29
|
export { CRUDRepository } from "./CRUDRepository.js";
|
|
30
30
|
export { ReadonlyRepositoryBuilder } from "./ReadonlyRepositoryBuilder.js";
|
|
31
31
|
export { CRUDRepositoryBuilder } from "./CRUDRepositoryBuilder.js";
|
|
32
|
+
export { RepositoryBuilderOptionsFactory } from "./RepositoryBuilderOptionsFactory.js";
|
|
32
33
|
export { StatementMappers } from "./StatementMappers.js";
|
|
34
|
+
export { NestedSelectBuilder } from "./NestedSelectBuilder.js";
|
|
33
35
|
export { ReadonlyRepositoryStatements } from "./ReadonlyRepositoryStatements.js";
|
|
34
36
|
export { CRUDRepositoryStatements } from "./CRUDRepositoryStatements.js";
|
|
35
37
|
export { createCRUDRepositoryOptions } from "./createCRUDRepositoryOptions.js";
|
|
@@ -37,7 +39,7 @@ export { createReadonlyRepositoryMappingOptions } from "./createReadonlyReposito
|
|
|
37
39
|
export { Response } from "./Response.js";
|
|
38
40
|
export { UnitOfWorkTransaction } from "./UnitOfWorkTransaction.js";
|
|
39
41
|
export { IsolationLevel } from "./IsolationLevel.js";
|
|
40
|
-
export { ArrayExpression, CheckConstraint, ColumnDefault, Condition, ConditionRenderer, ExpressionRenderer, CreateIndexStatement, CreateTableStatement, CreateTableStatementTextRenderer, CreateIndexStatementTextRenderer, DropTableStatement, DropTableStatementTextRenderer, AlterTableStatement, AlterTableStatementTextRenderer, DropIndexStatement, DropIndexStatementTextRenderer, DropTriggerStatement, DropTriggerStatementTextRenderer, CreateTriggerStatement, CreateTriggerStatementTextRenderer, IdentityInsertStatement, IdentityInsertStatementTextRenderer, CreateCreateStoredProcedureStatement, CreateReadStoredProcedureStatement, CreateUpdateStoredProcedureStatement, CreateDeleteStoredProcedureStatement, CreateBulkCreateStoredProcedureStatement, CreateBulkUpdateStoredProcedureStatement, CreateBulkDeleteStoredProcedureStatement, CreateCreateStoredProcedureStatementTextRenderer, CreateReadStoredProcedureStatementTextRenderer, CreateUpdateStoredProcedureStatementTextRenderer, CreateDeleteStoredProcedureStatementTextRenderer, CreateBulkCreateStoredProcedureStatementTextRenderer, CreateBulkUpdateStoredProcedureStatementTextRenderer, CreateBulkDeleteStoredProcedureStatementTextRenderer, DropRoutineStatement, DropRoutineStatementTextRenderer, SelectStatementTextRenderer, InsertStatementTextRenderer, UpdateStatementTextRenderer, DeleteStatementTextRenderer, BulkInsertStatementTextRenderer, BulkUpdateStatementTextRenderer, BulkDeleteStatementTextRenderer, ExecuteStoredProcedureStatementTextRenderer, ReturnStatementTextRenderer, SelectInsertedIdStatementTextRenderer, DefaultStatementTextRenderer, DeleteStatement, ForeignKey, Identifier, InsertStatement, BulkInsertStatement, BulkUpdateStatement, BulkDeleteStatement, Literal, NotNull, Operator, eq, ne, gt, lt, ge, le, PrimaryKey, Aggregate, OrderBy, SelectStatement, StatementParser, StatementRenderer, StatementTextRenderer, Native, n, Subquery, ReferentialAction, ExpressionEvaluator, StatementEvaluator, ExecuteStoredProcedureStatement, SelectInsertedIdStatement, ReturnStatement, UniqueConstraint, UpdateStatement, WhereText, Where, Join, } from "./statements/index.js";
|
|
42
|
+
export { ArrayExpression, CheckConstraint, ColumnDefault, Condition, ConditionRenderer, ExpressionRenderer, CreateIndexStatement, CreateTableStatement, CreateTableStatementTextRenderer, CreateIndexStatementTextRenderer, DropTableStatement, DropTableStatementTextRenderer, AlterTableStatement, AlterTableStatementTextRenderer, DropIndexStatement, DropIndexStatementTextRenderer, DropTriggerStatement, DropTriggerStatementTextRenderer, CreateTriggerStatement, CreateTriggerStatementTextRenderer, IdentityInsertStatement, IdentityInsertStatementTextRenderer, CreateCreateStoredProcedureStatement, CreateReadStoredProcedureStatement, CreateNestedReadStoredProcedureStatement, CreateUpdateStoredProcedureStatement, CreateDeleteStoredProcedureStatement, CreateBulkCreateStoredProcedureStatement, CreateBulkUpdateStoredProcedureStatement, CreateBulkDeleteStoredProcedureStatement, CreateCreateStoredProcedureStatementTextRenderer, CreateReadStoredProcedureStatementTextRenderer, CreateNestedReadStoredProcedureStatementTextRenderer, CreateUpdateStoredProcedureStatementTextRenderer, CreateDeleteStoredProcedureStatementTextRenderer, CreateBulkCreateStoredProcedureStatementTextRenderer, CreateBulkUpdateStoredProcedureStatementTextRenderer, CreateBulkDeleteStoredProcedureStatementTextRenderer, DropRoutineStatement, DropRoutineStatementTextRenderer, SelectStatementTextRenderer, InsertStatementTextRenderer, UpdateStatementTextRenderer, DeleteStatementTextRenderer, BulkInsertStatementTextRenderer, BulkUpdateStatementTextRenderer, BulkDeleteStatementTextRenderer, ExecuteStoredProcedureStatementTextRenderer, ReturnStatementTextRenderer, SelectInsertedIdStatementTextRenderer, DefaultStatementTextRenderer, DeleteStatement, ForeignKey, Identifier, InsertStatement, BulkInsertStatement, BulkUpdateStatement, BulkDeleteStatement, Literal, NotNull, Operator, eq, ne, gt, lt, ge, le, PrimaryKey, Aggregate, OrderBy, SelectStatement, StatementParser, StatementRenderer, StatementTextRenderer, Native, n, Subquery, ReferentialAction, ExpressionEvaluator, StatementEvaluator, ExecuteStoredProcedureStatement, SelectInsertedIdStatement, ReturnStatement, UniqueConstraint, UpdateStatement, WhereText, Where, Join, } from "./statements/index.js";
|
|
41
43
|
export { ParameterDirection } from "./ParameterDirection.js";
|
|
42
44
|
export { ArrayReader } from "./ArrayReader.js";
|
|
43
45
|
export { FirstResultReader } from "./FirstResultReader.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const Aggregate: {
|
|
2
|
-
count: (column: string
|
|
3
|
-
sum: (column: string
|
|
4
|
-
min: (column: string
|
|
5
|
-
max: (column: string
|
|
2
|
+
count: (column: string) => string;
|
|
3
|
+
sum: (column: string) => string;
|
|
4
|
+
min: (column: string) => string;
|
|
5
|
+
max: (column: string) => string;
|
|
6
6
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const fragment = (op, column
|
|
1
|
+
const fragment = (op, column) => `${op}(${column})`;
|
|
2
2
|
export const Aggregate = {
|
|
3
|
-
count: (column
|
|
4
|
-
sum: (column
|
|
5
|
-
min: (column
|
|
6
|
-
max: (column
|
|
3
|
+
count: (column) => fragment("COUNT", column),
|
|
4
|
+
sum: (column) => fragment("SUM", column),
|
|
5
|
+
min: (column) => fragment("MIN", column),
|
|
6
|
+
max: (column) => fragment("MAX", column),
|
|
7
7
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { NestedSelectStatement } from "../NestedSelectStatement.js";
|
|
2
|
+
import type { ICreateNestedReadStoredProcedureStatement } from "./ICreateNestedReadStoredProcedureStatement.js";
|
|
3
|
+
import type { IStatementVisitor } from "./IStatementVisitor.js";
|
|
4
|
+
import type { NestedWhereArgument } from "./NestedWhereArgument.js";
|
|
5
|
+
import { SelectStatement } from "./SelectStatement.js";
|
|
6
|
+
export declare class CreateNestedReadStoredProcedureStatement implements ICreateNestedReadStoredProcedureStatement {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly nested: NestedSelectStatement;
|
|
9
|
+
readonly arguments: readonly NestedWhereArgument[];
|
|
10
|
+
constructor(name: string, nested: NestedSelectStatement, args: readonly NestedWhereArgument[]);
|
|
11
|
+
get select(): SelectStatement;
|
|
12
|
+
accept: (visitor: IStatementVisitor) => string;
|
|
13
|
+
static withArguments(select: SelectStatement, arguments_: readonly NestedWhereArgument[]): SelectStatement;
|
|
14
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Operator } from "./Operator.js";
|
|
2
|
+
import { Identifier } from "./Identifier.js";
|
|
3
|
+
import { SelectStatement } from "./SelectStatement.js";
|
|
4
|
+
import { Where } from "./Where.js";
|
|
5
|
+
export class CreateNestedReadStoredProcedureStatement {
|
|
6
|
+
name;
|
|
7
|
+
nested;
|
|
8
|
+
arguments;
|
|
9
|
+
constructor(name, nested, args) {
|
|
10
|
+
this.name = name;
|
|
11
|
+
this.nested = nested;
|
|
12
|
+
this.arguments = args;
|
|
13
|
+
}
|
|
14
|
+
get select() {
|
|
15
|
+
return CreateNestedReadStoredProcedureStatement.withArguments(this.nested.select, this.arguments);
|
|
16
|
+
}
|
|
17
|
+
accept = (visitor) => visitor.visit(this);
|
|
18
|
+
static withArguments(select, arguments_) {
|
|
19
|
+
const where = arguments_.reduce((clause, argument) => {
|
|
20
|
+
const equals = new Operator.Equals(new Identifier(argument.path), new Identifier(argument.parameter.name));
|
|
21
|
+
return clause instanceof Where ? new Where(new Operator.And(clause.condition, equals)) : new Where(equals);
|
|
22
|
+
}, select.where);
|
|
23
|
+
return new SelectStatement({
|
|
24
|
+
distinct: select.distinct,
|
|
25
|
+
table: select.table,
|
|
26
|
+
fields: select.fields,
|
|
27
|
+
aliases: select.aliases,
|
|
28
|
+
joins: select.joins,
|
|
29
|
+
where,
|
|
30
|
+
groupBy: select.groupBy,
|
|
31
|
+
having: select.having,
|
|
32
|
+
orderBy: select.orderBy,
|
|
33
|
+
limit: select.limit,
|
|
34
|
+
offset: select.offset,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Column } from "./Column.js";
|
|
2
2
|
import type { CreateTableStatement } from "./CreateTableStatement.js";
|
|
3
3
|
import type { ITableConstraint } from "./ITableConstraint.js";
|
|
4
|
+
import type { NotNull } from "./NotNull.js";
|
|
4
5
|
export declare class CreateTableStatementTextRenderer {
|
|
5
6
|
render(statement: CreateTableStatement): string;
|
|
6
7
|
protected quote(name: string): string;
|
|
@@ -11,7 +12,7 @@ export declare class CreateTableStatementTextRenderer {
|
|
|
11
12
|
protected column(column: Column): string;
|
|
12
13
|
protected constraint(constraint: ITableConstraint): string;
|
|
13
14
|
private parts;
|
|
14
|
-
|
|
15
|
+
protected notNullSql(value?: NotNull): string;
|
|
15
16
|
private foreignKey;
|
|
16
17
|
private quoted;
|
|
17
18
|
private actionSql;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { NestedSelectStatement } from "../NestedSelectStatement.js";
|
|
2
|
+
import type { IStatement } from "./IStatement.js";
|
|
3
|
+
import type { NestedWhereArgument } from "./NestedWhereArgument.js";
|
|
4
|
+
export interface ICreateNestedReadStoredProcedureStatement extends IStatement {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly nested: NestedSelectStatement;
|
|
7
|
+
readonly arguments: readonly NestedWhereArgument[];
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -10,6 +10,7 @@ import type { DropIndexStatement } from "./DropIndexStatement.js";
|
|
|
10
10
|
import type { DropRoutineStatement } from "./DropRoutineStatement.js";
|
|
11
11
|
import type { CreateCreateStoredProcedureStatement } from "./CreateCreateStoredProcedureStatement.js";
|
|
12
12
|
import type { CreateReadStoredProcedureStatement } from "./CreateReadStoredProcedureStatement.js";
|
|
13
|
+
import type { CreateNestedReadStoredProcedureStatement } from "./CreateNestedReadStoredProcedureStatement.js";
|
|
13
14
|
import type { CreateUpdateStoredProcedureStatement } from "./CreateUpdateStoredProcedureStatement.js";
|
|
14
15
|
import type { CreateDeleteStoredProcedureStatement } from "./CreateDeleteStoredProcedureStatement.js";
|
|
15
16
|
import type { CreateBulkCreateStoredProcedureStatement } from "./CreateBulkCreateStoredProcedureStatement.js";
|
|
@@ -46,6 +47,7 @@ export interface IStatementVisitor {
|
|
|
46
47
|
visit(statement: DropRoutineStatement): string;
|
|
47
48
|
visit(statement: CreateCreateStoredProcedureStatement): string;
|
|
48
49
|
visit(statement: CreateReadStoredProcedureStatement): string;
|
|
50
|
+
visit(statement: CreateNestedReadStoredProcedureStatement): string;
|
|
49
51
|
visit(statement: CreateUpdateStoredProcedureStatement): string;
|
|
50
52
|
visit(statement: CreateDeleteStoredProcedureStatement): string;
|
|
51
53
|
visit(statement: CreateBulkCreateStoredProcedureStatement): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -9,6 +9,7 @@ export declare class SelectStatement implements ISelectStatement {
|
|
|
9
9
|
readonly distinct: boolean;
|
|
10
10
|
readonly table?: string;
|
|
11
11
|
readonly fields: string[];
|
|
12
|
+
readonly aliases: (string | undefined)[];
|
|
12
13
|
readonly joins: Join[];
|
|
13
14
|
readonly groupBy: string[];
|
|
14
15
|
readonly having?: IWhere;
|
|
@@ -3,6 +3,7 @@ export class SelectStatement {
|
|
|
3
3
|
distinct;
|
|
4
4
|
table;
|
|
5
5
|
fields;
|
|
6
|
+
aliases;
|
|
6
7
|
joins;
|
|
7
8
|
groupBy;
|
|
8
9
|
having;
|
|
@@ -14,6 +15,7 @@ export class SelectStatement {
|
|
|
14
15
|
this.distinct = options.distinct ?? false;
|
|
15
16
|
this.table = options.table;
|
|
16
17
|
this.fields = options.fields ?? [];
|
|
18
|
+
this.aliases = options.aliases ?? [];
|
|
17
19
|
this.joins = options.joins ?? [];
|
|
18
20
|
this.groupBy = options.groupBy ?? [];
|
|
19
21
|
this.having = options.having;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { orderText } from "./OrderBy.js";
|
|
2
|
+
import { applySelectFieldAlias } from "../SelectFieldAliases.js";
|
|
2
3
|
import { Where } from "./Where.js";
|
|
3
4
|
export class SelectStatementTextRenderer {
|
|
4
5
|
text;
|
|
@@ -6,7 +7,11 @@ export class SelectStatementTextRenderer {
|
|
|
6
7
|
this.text = text;
|
|
7
8
|
}
|
|
8
9
|
render(statement) {
|
|
9
|
-
return `SELECT ${statement.distinct ? "DISTINCT " : ""}${statement.fields.length === 0
|
|
10
|
+
return `SELECT ${statement.distinct ? "DISTINCT " : ""}${statement.fields.length === 0
|
|
11
|
+
? "*"
|
|
12
|
+
: statement.fields
|
|
13
|
+
.map((field, i) => applySelectFieldAlias(field, statement.aliases[i]))
|
|
14
|
+
.join(", ")} FROM ${statement.table}${this.joinSql(statement.joins)}${this.whereSql(statement.where)}${this.groupSql(statement.groupBy)}${this.havingSql(statement.having)}${this.orderSql(statement.orderBy)}${this.limit(statement.limit)}${this.offset(statement.offset)}`;
|
|
10
15
|
}
|
|
11
16
|
whereSql(where) {
|
|
12
17
|
return where ? ` WHERE ${this.text.render(where)}` : "";
|
|
@@ -11,6 +11,7 @@ import { DropIndexStatement } from "./DropIndexStatement.js";
|
|
|
11
11
|
import { DropRoutineStatement } from "./DropRoutineStatement.js";
|
|
12
12
|
import { CreateCreateStoredProcedureStatement } from "./CreateCreateStoredProcedureStatement.js";
|
|
13
13
|
import { CreateReadStoredProcedureStatement } from "./CreateReadStoredProcedureStatement.js";
|
|
14
|
+
import { CreateNestedReadStoredProcedureStatement } from "./CreateNestedReadStoredProcedureStatement.js";
|
|
14
15
|
import { CreateUpdateStoredProcedureStatement } from "./CreateUpdateStoredProcedureStatement.js";
|
|
15
16
|
import { CreateDeleteStoredProcedureStatement } from "./CreateDeleteStoredProcedureStatement.js";
|
|
16
17
|
import { CreateBulkCreateStoredProcedureStatement } from "./CreateBulkCreateStoredProcedureStatement.js";
|
|
@@ -50,6 +51,7 @@ export declare class StatementRenderer implements IStatementVisitor {
|
|
|
50
51
|
visit(statement: DropRoutineStatement): string;
|
|
51
52
|
visit(statement: CreateCreateStoredProcedureStatement): string;
|
|
52
53
|
visit(statement: CreateReadStoredProcedureStatement): string;
|
|
54
|
+
visit(statement: CreateNestedReadStoredProcedureStatement): string;
|
|
53
55
|
visit(statement: CreateUpdateStoredProcedureStatement): string;
|
|
54
56
|
visit(statement: CreateDeleteStoredProcedureStatement): string;
|
|
55
57
|
visit(statement: CreateBulkCreateStoredProcedureStatement): string;
|
|
@@ -76,6 +78,7 @@ export declare class StatementRenderer implements IStatementVisitor {
|
|
|
76
78
|
protected visitDropRoutine(statement: DropRoutineStatement): string;
|
|
77
79
|
protected visitCreateCreateStoredProcedureStatement(statement: CreateCreateStoredProcedureStatement): string;
|
|
78
80
|
protected visitCreateReadStoredProcedureStatement(statement: CreateReadStoredProcedureStatement): string;
|
|
81
|
+
protected visitCreateNestedReadStoredProcedureStatement(statement: CreateNestedReadStoredProcedureStatement): string;
|
|
79
82
|
protected visitCreateUpdateStoredProcedureStatement(statement: CreateUpdateStoredProcedureStatement): string;
|
|
80
83
|
protected visitCreateDeleteStoredProcedureStatement(statement: CreateDeleteStoredProcedureStatement): string;
|
|
81
84
|
protected visitCreateBulkCreateStoredProcedureStatement(statement: CreateBulkCreateStoredProcedureStatement): string;
|
|
@@ -10,6 +10,7 @@ import { DropIndexStatementTextRenderer } from "./DropIndexStatementTextRenderer
|
|
|
10
10
|
import { DropRoutineStatementTextRenderer } from "./DropRoutineStatementTextRenderer.js";
|
|
11
11
|
import { CreateCreateStoredProcedureStatementTextRenderer } from "./CreateCreateStoredProcedureStatementTextRenderer.js";
|
|
12
12
|
import { CreateReadStoredProcedureStatementTextRenderer } from "./CreateReadStoredProcedureStatementTextRenderer.js";
|
|
13
|
+
import { CreateNestedReadStoredProcedureStatementTextRenderer } from "./CreateNestedReadStoredProcedureStatementTextRenderer.js";
|
|
13
14
|
import { CreateUpdateStoredProcedureStatementTextRenderer } from "./CreateUpdateStoredProcedureStatementTextRenderer.js";
|
|
14
15
|
import { CreateDeleteStoredProcedureStatementTextRenderer } from "./CreateDeleteStoredProcedureStatementTextRenderer.js";
|
|
15
16
|
import { CreateBulkCreateStoredProcedureStatementTextRenderer } from "./CreateBulkCreateStoredProcedureStatementTextRenderer.js";
|
|
@@ -51,6 +52,7 @@ export class StatementRenderer {
|
|
|
51
52
|
DropRoutineStatement: () => this.visitDropRoutine(statement),
|
|
52
53
|
CreateCreateStoredProcedureStatement: () => this.visitCreateCreateStoredProcedureStatement(statement),
|
|
53
54
|
CreateReadStoredProcedureStatement: () => this.visitCreateReadStoredProcedureStatement(statement),
|
|
55
|
+
CreateNestedReadStoredProcedureStatement: () => this.visitCreateNestedReadStoredProcedureStatement(statement),
|
|
54
56
|
CreateUpdateStoredProcedureStatement: () => this.visitCreateUpdateStoredProcedureStatement(statement),
|
|
55
57
|
CreateDeleteStoredProcedureStatement: () => this.visitCreateDeleteStoredProcedureStatement(statement),
|
|
56
58
|
CreateBulkCreateStoredProcedureStatement: () => this.visitCreateBulkCreateStoredProcedureStatement(statement),
|
|
@@ -122,6 +124,9 @@ export class StatementRenderer {
|
|
|
122
124
|
visitCreateReadStoredProcedureStatement(statement) {
|
|
123
125
|
return new CreateReadStoredProcedureStatementTextRenderer().render(statement);
|
|
124
126
|
}
|
|
127
|
+
visitCreateNestedReadStoredProcedureStatement(statement) {
|
|
128
|
+
return new CreateNestedReadStoredProcedureStatementTextRenderer().render(statement);
|
|
129
|
+
}
|
|
125
130
|
visitCreateUpdateStoredProcedureStatement(statement) {
|
|
126
131
|
return new CreateUpdateStoredProcedureStatementTextRenderer().render(statement);
|
|
127
132
|
}
|
package/dist/statements/Where.js
CHANGED
|
@@ -56,6 +56,7 @@ const rewriteQuery = (query, column, value) => query.table === undefined
|
|
|
56
56
|
distinct: query.distinct,
|
|
57
57
|
table: query.table,
|
|
58
58
|
fields: query.fields,
|
|
59
|
+
aliases: query.aliases,
|
|
59
60
|
where: rewriteWhere(query.where, column, value),
|
|
60
61
|
joins: query.joins.map((join) => join.on ? { ...join, on: rewrite(join.on, column, value) } : join),
|
|
61
62
|
groupBy: query.groupBy,
|
|
@@ -23,6 +23,8 @@ export type { IIdentityInsertStatement } from "./IIdentityInsertStatement.js";
|
|
|
23
23
|
export type { IDropRoutineStatement } from "./IDropRoutineStatement.js";
|
|
24
24
|
export type { ICreateCreateStoredProcedureStatement } from "./ICreateCreateStoredProcedureStatement.js";
|
|
25
25
|
export type { ICreateReadStoredProcedureStatement } from "./ICreateReadStoredProcedureStatement.js";
|
|
26
|
+
export type { ICreateNestedReadStoredProcedureStatement } from "./ICreateNestedReadStoredProcedureStatement.js";
|
|
27
|
+
export type { NestedWhereArgument } from "./NestedWhereArgument.js";
|
|
26
28
|
export type { ICreateUpdateStoredProcedureStatement } from "./ICreateUpdateStoredProcedureStatement.js";
|
|
27
29
|
export type { ICreateDeleteStoredProcedureStatement } from "./ICreateDeleteStoredProcedureStatement.js";
|
|
28
30
|
export type { ICreateBulkCreateStoredProcedureStatement } from "./ICreateBulkCreateStoredProcedureStatement.js";
|
|
@@ -90,6 +92,8 @@ export { CreateCreateStoredProcedureStatement } from "./CreateCreateStoredProced
|
|
|
90
92
|
export { CreateCreateStoredProcedureStatementTextRenderer } from "./CreateCreateStoredProcedureStatementTextRenderer.js";
|
|
91
93
|
export { CreateReadStoredProcedureStatement } from "./CreateReadStoredProcedureStatement.js";
|
|
92
94
|
export { CreateReadStoredProcedureStatementTextRenderer } from "./CreateReadStoredProcedureStatementTextRenderer.js";
|
|
95
|
+
export { CreateNestedReadStoredProcedureStatement } from "./CreateNestedReadStoredProcedureStatement.js";
|
|
96
|
+
export { CreateNestedReadStoredProcedureStatementTextRenderer } from "./CreateNestedReadStoredProcedureStatementTextRenderer.js";
|
|
93
97
|
export { CreateUpdateStoredProcedureStatement } from "./CreateUpdateStoredProcedureStatement.js";
|
|
94
98
|
export { CreateUpdateStoredProcedureStatementTextRenderer } from "./CreateUpdateStoredProcedureStatementTextRenderer.js";
|
|
95
99
|
export { CreateDeleteStoredProcedureStatement } from "./CreateDeleteStoredProcedureStatement.js";
|
package/dist/statements/index.js
CHANGED
|
@@ -51,6 +51,8 @@ export { CreateCreateStoredProcedureStatement } from "./CreateCreateStoredProced
|
|
|
51
51
|
export { CreateCreateStoredProcedureStatementTextRenderer } from "./CreateCreateStoredProcedureStatementTextRenderer.js";
|
|
52
52
|
export { CreateReadStoredProcedureStatement } from "./CreateReadStoredProcedureStatement.js";
|
|
53
53
|
export { CreateReadStoredProcedureStatementTextRenderer } from "./CreateReadStoredProcedureStatementTextRenderer.js";
|
|
54
|
+
export { CreateNestedReadStoredProcedureStatement } from "./CreateNestedReadStoredProcedureStatement.js";
|
|
55
|
+
export { CreateNestedReadStoredProcedureStatementTextRenderer } from "./CreateNestedReadStoredProcedureStatementTextRenderer.js";
|
|
54
56
|
export { CreateUpdateStoredProcedureStatement } from "./CreateUpdateStoredProcedureStatement.js";
|
|
55
57
|
export { CreateUpdateStoredProcedureStatementTextRenderer } from "./CreateUpdateStoredProcedureStatementTextRenderer.js";
|
|
56
58
|
export { CreateDeleteStoredProcedureStatement } from "./CreateDeleteStoredProcedureStatement.js";
|