@deterministic-code/datasources 0.1.18 → 0.1.30
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/IDriver.d.ts +0 -2
- package/dist/index.d.ts +3 -7
- package/dist/index.js +1 -3
- package/dist/statements/Column.d.ts +2 -0
- package/dist/statements/ConstraintName.d.ts +2 -0
- package/dist/statements/ConstraintName.js +3 -0
- package/dist/statements/CreateIndexStatement.d.ts +2 -0
- package/dist/statements/CreateIndexStatement.js +2 -0
- package/dist/statements/CreateTableStatement.d.ts +3 -0
- package/dist/statements/CreateTableStatement.js +4 -0
- package/dist/statements/CreateTriggerStatement.d.ts +3 -2
- package/dist/statements/CreateTriggerStatement.js +7 -3
- package/dist/statements/ForeignKey.d.ts +2 -0
- package/dist/statements/ForeignKey.js +2 -0
- package/dist/statements/ForeignKeyStatement.d.ts +17 -0
- package/dist/statements/ForeignKeyStatement.js +23 -0
- package/dist/statements/IForeignKeyStatement.d.ts +3 -0
- package/dist/statements/IForeignKeyStatement.js +1 -0
- package/dist/statements/ISqlSeedStatement.d.ts +3 -0
- package/dist/statements/ISqlSeedStatement.js +1 -0
- package/dist/statements/IStatementVisitor.d.ts +4 -0
- package/dist/statements/KeywordCasing.d.ts +5 -0
- package/dist/statements/KeywordCasing.js +4 -0
- package/dist/statements/PrimaryKey.d.ts +2 -0
- package/dist/statements/PrimaryKey.js +2 -0
- package/dist/statements/ProcedureSource.d.ts +23 -0
- package/dist/statements/ProcedureSource.js +1 -0
- package/dist/statements/RoutineParameter.d.ts +2 -0
- package/dist/statements/SqlProcedureStatements.d.ts +4 -0
- package/dist/statements/SqlProcedureStatements.js +34 -0
- package/dist/statements/SqlSeedStatement.d.ts +17 -0
- package/dist/statements/SqlSeedStatement.js +15 -0
- package/dist/statements/StatementNaming.d.ts +26 -0
- package/dist/statements/StatementNaming.js +64 -0
- package/dist/statements/StatementRenderer.d.ts +7 -0
- package/dist/statements/StatementRenderer.js +11 -0
- package/dist/statements/StatementTextRenderer.d.ts +11 -1
- package/dist/statements/StatementTextRenderer.js +18 -1
- package/dist/statements/UniqueConstraint.d.ts +2 -0
- package/dist/statements/UniqueConstraint.js +2 -0
- package/dist/statements/index.d.ts +10 -0
- package/dist/statements/index.js +6 -0
- package/package.json +1 -1
package/dist/IDriver.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import type { ITransaction } from "./ITransaction.js";
|
|
|
4
4
|
import type { IsolationLevel } from "./IsolationLevel.js";
|
|
5
5
|
import type { DatasourceOptions } from "./DatasourceOptions.js";
|
|
6
6
|
import type { Cell } from "./converters/Cell.js";
|
|
7
|
-
import type { DefaultValueConverter } from "./converters/DefaultValueConverter.js";
|
|
8
7
|
import type { IMapping } from "./converters/IMapping.js";
|
|
9
8
|
import type { TypeConverter } from "./converters/TypeConverter.js";
|
|
10
9
|
import type { Information } from "./Information.js";
|
|
@@ -17,7 +16,6 @@ export interface IDriver {
|
|
|
17
16
|
rowTypeConverters: Record<string, TypeConverter<Cell, Cell>>;
|
|
18
17
|
columnType(name: string): string;
|
|
19
18
|
typeConverter?: IMapping<string, string> | null;
|
|
20
|
-
defaultValueConverter?: DefaultValueConverter | null;
|
|
21
19
|
statementRenderer?: StatementTextRenderer | null;
|
|
22
20
|
information?: Information | null;
|
|
23
21
|
}
|
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, 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";
|
|
13
|
+
export type { ICreateTableStatement, ICreateIndexStatement, IDropTableStatement, IAlterTableStatement, AlterAction, IDropIndexStatement, IDropTriggerStatement, ICreateTriggerStatement, IIdentityInsertStatement, ISqlSeedStatement, IForeignKeyStatement, SqlSeedColumn, 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";
|
|
@@ -74,7 +74,7 @@ export { UnitOfWorkTransaction } from "./UnitOfWorkTransaction.js";
|
|
|
74
74
|
export { IsolationLevel } from "./IsolationLevel.js";
|
|
75
75
|
export type { IsolationLevel as IsolationLevelName } from "./IsolationLevel.js";
|
|
76
76
|
export type { Comparison } 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";
|
|
77
|
+
export { ArrayExpression, CheckConstraint, ColumnDefault, Condition, ConditionRenderer, ExpressionRenderer, CreateIndexStatement, CreateTableStatement, CreateTableStatementTextRenderer, CreateIndexStatementTextRenderer, DropTableStatement, DropTableStatementTextRenderer, AlterTableStatement, AlterTableStatementTextRenderer, DropIndexStatement, DropIndexStatementTextRenderer, DropTriggerStatement, DropTriggerStatementTextRenderer, CreateTriggerStatement, CreateTriggerStatementTextRenderer, IdentityInsertStatement, IdentityInsertStatementTextRenderer, SqlSeedStatement, ForeignKeyStatement, 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, StatementNaming, KeywordCasing, constraintNameOf, sqlProcedureStatementsOf, procedureNameOf, Native, n, Subquery, ReferentialAction, ExpressionEvaluator, StatementEvaluator, ExecuteStoredProcedureStatement, SelectInsertedIdStatement, ReturnStatement, UniqueConstraint, UpdateStatement, WhereText, Where, Join, } from "./statements/index.js";
|
|
78
78
|
export type { IDatasourceFactory } from "./IDatasourceFactory.js";
|
|
79
79
|
export type { Parameter } from "./Parameter.js";
|
|
80
80
|
export { ParameterDirection } from "./ParameterDirection.js";
|
|
@@ -98,11 +98,7 @@ export type { Cell, Cells } from "./converters/Cell.js";
|
|
|
98
98
|
export type { Constructable } from "./converters/Constructable.js";
|
|
99
99
|
export { TypeConverter } from "./converters/TypeConverter.js";
|
|
100
100
|
export { type FieldSize, type SpecField, } from "./converters/SpecField.js";
|
|
101
|
-
export type { DecimalRule, SpecFieldRules } from "./converters/SpecFieldRules.js";
|
|
102
101
|
export type { IMapping } from "./converters/IMapping.js";
|
|
103
|
-
export { DeterministicTypeConverter } from "./converters/DeterministicTypeConverter.js";
|
|
104
|
-
export type { DefaultValueOptions } from "./converters/DefaultValueOptions.js";
|
|
105
|
-
export { DefaultValueConverter, EMPTY_UUID, sqlStringLiteral, } from "./converters/DefaultValueConverter.js";
|
|
106
102
|
export { MetaDataRowTypeConverter } from "./converters/MetaDataRowTypeConverter.js";
|
|
107
103
|
export { RowTypeConverter } from "./converters/RowTypeConverter.js";
|
|
108
104
|
export { ToLowerCaseConverter } from "./converters/ToLowerCaseConverter.js";
|
|
@@ -128,7 +124,7 @@ export { RowTypeMapper } from "./mappers/RowTypeMapper.js";
|
|
|
128
124
|
export { parametersToRecord } from "./parametersToRecord.js";
|
|
129
125
|
export { ProviderNotImplementedError } from "./ProviderNotImplementedError.js";
|
|
130
126
|
export { ProviderNotInstalledError } from "./ProviderNotInstalledError.js";
|
|
131
|
-
export type { Column, JoinKind, SelectStatementOptions, ReferentialAction as ReferentialActionName, SortDirection } from "./statements/index.js";
|
|
127
|
+
export type { Column, JoinKind, SelectStatementOptions, ReferentialAction as ReferentialActionName, SortDirection, ProcedureSource, ProcedureByGroup } from "./statements/index.js";
|
|
132
128
|
export type { Field, Scalar } from "./builders/index.js";
|
|
133
129
|
export { readerToAsyncIterable } from "./readerToAsyncIterable.js";
|
|
134
130
|
export { StubCommand, StubConnection, StubDatasource, StubReader, StubRepository, StubTransaction, createStubDatasource, } from "./stubs/index.js";
|
package/dist/index.js
CHANGED
|
@@ -39,7 +39,7 @@ export { createReadonlyRepositoryMappingOptions } from "./createReadonlyReposito
|
|
|
39
39
|
export { Response } from "./Response.js";
|
|
40
40
|
export { UnitOfWorkTransaction } from "./UnitOfWorkTransaction.js";
|
|
41
41
|
export { IsolationLevel } from "./IsolationLevel.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";
|
|
42
|
+
export { ArrayExpression, CheckConstraint, ColumnDefault, Condition, ConditionRenderer, ExpressionRenderer, CreateIndexStatement, CreateTableStatement, CreateTableStatementTextRenderer, CreateIndexStatementTextRenderer, DropTableStatement, DropTableStatementTextRenderer, AlterTableStatement, AlterTableStatementTextRenderer, DropIndexStatement, DropIndexStatementTextRenderer, DropTriggerStatement, DropTriggerStatementTextRenderer, CreateTriggerStatement, CreateTriggerStatementTextRenderer, IdentityInsertStatement, IdentityInsertStatementTextRenderer, SqlSeedStatement, ForeignKeyStatement, 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, StatementNaming, KeywordCasing, constraintNameOf, sqlProcedureStatementsOf, procedureNameOf, Native, n, Subquery, ReferentialAction, ExpressionEvaluator, StatementEvaluator, ExecuteStoredProcedureStatement, SelectInsertedIdStatement, ReturnStatement, UniqueConstraint, UpdateStatement, WhereText, Where, Join, } from "./statements/index.js";
|
|
43
43
|
export { ParameterDirection } from "./ParameterDirection.js";
|
|
44
44
|
export { ArrayReader } from "./ArrayReader.js";
|
|
45
45
|
export { FirstResultReader } from "./FirstResultReader.js";
|
|
@@ -59,8 +59,6 @@ import { DatasourceFactory } from "./DatasourceFactory.js";
|
|
|
59
59
|
Datasource.create = (options) => DatasourceFactory.create(options);
|
|
60
60
|
export { DatasourceError } from "./DatasourceError.js";
|
|
61
61
|
export { TypeConverter } from "./converters/TypeConverter.js";
|
|
62
|
-
export { DeterministicTypeConverter } from "./converters/DeterministicTypeConverter.js";
|
|
63
|
-
export { DefaultValueConverter, EMPTY_UUID, sqlStringLiteral, } from "./converters/DefaultValueConverter.js";
|
|
64
62
|
export { MetaDataRowTypeConverter } from "./converters/MetaDataRowTypeConverter.js";
|
|
65
63
|
export { RowTypeConverter } from "./converters/RowTypeConverter.js";
|
|
66
64
|
export { ToLowerCaseConverter } from "./converters/ToLowerCaseConverter.js";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SpecField } from "../converters/SpecField.js";
|
|
1
2
|
import type { ColumnDefault } from "./ColumnDefault.js";
|
|
2
3
|
import type { NotNull } from "./NotNull.js";
|
|
3
4
|
export interface Column {
|
|
@@ -6,4 +7,5 @@ export interface Column {
|
|
|
6
7
|
default?: ColumnDefault;
|
|
7
8
|
notNull?: NotNull;
|
|
8
9
|
identity?: boolean;
|
|
10
|
+
field?: SpecField;
|
|
9
11
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ICreateIndexStatement } from "./ICreateIndexStatement.js";
|
|
2
2
|
import type { IStatementVisitor } from "./IStatementVisitor.js";
|
|
3
|
+
import type { StatementNaming } from "./StatementNaming.js";
|
|
3
4
|
export declare class CreateIndexStatement implements ICreateIndexStatement {
|
|
4
5
|
readonly name: string;
|
|
5
6
|
readonly table: string;
|
|
@@ -7,4 +8,5 @@ export declare class CreateIndexStatement implements ICreateIndexStatement {
|
|
|
7
8
|
readonly unique: boolean;
|
|
8
9
|
constructor(name: string, table: string, columns: string[], unique?: boolean);
|
|
9
10
|
accept: (visitor: IStatementVisitor) => string;
|
|
11
|
+
static nameOf: (entity: string, naming: StatementNaming, ...parts: string[]) => string;
|
|
10
12
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { constraintNameOf } from "./ConstraintName.js";
|
|
1
2
|
export class CreateIndexStatement {
|
|
2
3
|
name;
|
|
3
4
|
table;
|
|
@@ -10,4 +11,5 @@ export class CreateIndexStatement {
|
|
|
10
11
|
this.unique = unique;
|
|
11
12
|
}
|
|
12
13
|
accept = (visitor) => visitor.visit(this);
|
|
14
|
+
static nameOf = (entity, naming, ...parts) => constraintNameOf(entity, naming, ...parts);
|
|
13
15
|
}
|
|
@@ -2,10 +2,13 @@ import type { Column } from "./Column.js";
|
|
|
2
2
|
import type { ICreateTableStatement } from "./ICreateTableStatement.js";
|
|
3
3
|
import type { IStatementVisitor } from "./IStatementVisitor.js";
|
|
4
4
|
import type { ITableConstraint } from "./ITableConstraint.js";
|
|
5
|
+
import type { StatementNaming } from "./StatementNaming.js";
|
|
5
6
|
export declare class CreateTableStatement implements ICreateTableStatement {
|
|
6
7
|
readonly table: string;
|
|
7
8
|
readonly columns: Column[];
|
|
8
9
|
readonly constraints: ITableConstraint[];
|
|
9
10
|
constructor(table: string, columns: Column[], constraints?: ITableConstraint[]);
|
|
10
11
|
accept: (visitor: IStatementVisitor) => string;
|
|
12
|
+
static tableName: (entity: string, naming: StatementNaming) => string;
|
|
13
|
+
static columnName: (field: string, naming: StatementNaming) => string;
|
|
11
14
|
}
|
|
@@ -8,4 +8,8 @@ export class CreateTableStatement {
|
|
|
8
8
|
this.constraints = constraints;
|
|
9
9
|
}
|
|
10
10
|
accept = (visitor) => visitor.visit(this);
|
|
11
|
+
static tableName = (entity, naming) => naming.isVerbatim(entity)
|
|
12
|
+
? entity
|
|
13
|
+
: naming.letter(naming.convert(naming.physicalStem(entity), naming.tableNameCasing));
|
|
14
|
+
static columnName = (field, naming) => naming.isVerbatim(field) ? field : naming.convert(field, naming.fieldNameCasing);
|
|
11
15
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { ICreateTriggerStatement } from "./ICreateTriggerStatement.js";
|
|
2
2
|
import type { IStatementVisitor } from "./IStatementVisitor.js";
|
|
3
|
+
import type { StatementNaming } from "./StatementNaming.js";
|
|
3
4
|
export declare class CreateTriggerStatement implements ICreateTriggerStatement {
|
|
4
5
|
readonly table: string;
|
|
5
6
|
readonly name: string;
|
|
6
7
|
readonly updatedColumn: string;
|
|
7
8
|
readonly keyColumn: string;
|
|
8
|
-
|
|
9
|
-
constructor(table: string, name: string, updatedColumn: string, keyColumn: string, utcNow: string);
|
|
9
|
+
constructor(table: string, name: string, updatedColumn: string, keyColumn: string);
|
|
10
10
|
accept: (visitor: IStatementVisitor) => string;
|
|
11
|
+
static nameOf: (entity: string, naming: StatementNaming) => string;
|
|
11
12
|
}
|
|
@@ -3,13 +3,17 @@ export class CreateTriggerStatement {
|
|
|
3
3
|
name;
|
|
4
4
|
updatedColumn;
|
|
5
5
|
keyColumn;
|
|
6
|
-
|
|
7
|
-
constructor(table, name, updatedColumn, keyColumn, utcNow) {
|
|
6
|
+
constructor(table, name, updatedColumn, keyColumn) {
|
|
8
7
|
this.table = table;
|
|
9
8
|
this.name = name;
|
|
10
9
|
this.updatedColumn = updatedColumn;
|
|
11
10
|
this.keyColumn = keyColumn;
|
|
12
|
-
this.utcNow = utcNow;
|
|
13
11
|
}
|
|
14
12
|
accept = (visitor) => visitor.visit(this);
|
|
13
|
+
static nameOf = (entity, naming) => {
|
|
14
|
+
if (naming.isVerbatim(entity))
|
|
15
|
+
return `trg_${entity}_updated_at`;
|
|
16
|
+
const stem = naming.physicalStem(entity);
|
|
17
|
+
return naming.letter(naming.convert(`trg_${stem}_updated_at`, naming.triggerNameCasing));
|
|
18
|
+
};
|
|
15
19
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ITableConstraint } from "./ITableConstraint.js";
|
|
2
|
+
import type { StatementNaming } from "./StatementNaming.js";
|
|
2
3
|
export declare const ReferentialAction: {
|
|
3
4
|
readonly Cascade: "cascade";
|
|
4
5
|
readonly SetNull: "setNull";
|
|
@@ -16,4 +17,5 @@ export declare class ForeignKey implements ITableConstraint {
|
|
|
16
17
|
readonly onUpdate?: ReferentialAction | undefined;
|
|
17
18
|
readonly kind: "foreignKey";
|
|
18
19
|
constructor(name: string, columns: string[], referencesTable: string, referencesColumns: string[], onDelete?: ReferentialAction | undefined, onUpdate?: ReferentialAction | undefined);
|
|
20
|
+
static nameOf: (entity: string, naming: StatementNaming, ...parts: string[]) => string;
|
|
19
21
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { constraintNameOf } from "./ConstraintName.js";
|
|
1
2
|
export const ReferentialAction = {
|
|
2
3
|
Cascade: "cascade",
|
|
3
4
|
SetNull: "setNull",
|
|
@@ -21,4 +22,5 @@ export class ForeignKey {
|
|
|
21
22
|
this.onDelete = onDelete;
|
|
22
23
|
this.onUpdate = onUpdate;
|
|
23
24
|
}
|
|
25
|
+
static nameOf = (entity, naming, ...parts) => constraintNameOf(entity, naming, ...parts);
|
|
24
26
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IForeignKeyStatement } from "./IForeignKeyStatement.js";
|
|
2
|
+
import type { IStatementVisitor } from "./IStatementVisitor.js";
|
|
3
|
+
import type { ReferentialAction } from "./ForeignKey.js";
|
|
4
|
+
import type { StatementNaming } from "./StatementNaming.js";
|
|
5
|
+
export declare class ForeignKeyStatement implements IForeignKeyStatement {
|
|
6
|
+
readonly table: string;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly columns: readonly string[];
|
|
9
|
+
readonly referencesTable: string;
|
|
10
|
+
readonly referencesColumns: readonly string[];
|
|
11
|
+
readonly kind: "add" | "drop";
|
|
12
|
+
readonly onDelete?: ReferentialAction | undefined;
|
|
13
|
+
readonly onUpdate?: ReferentialAction | undefined;
|
|
14
|
+
constructor(table: string, name: string, columns: readonly string[], referencesTable: string, referencesColumns: readonly string[], kind?: "add" | "drop", onDelete?: ReferentialAction | undefined, onUpdate?: ReferentialAction | undefined);
|
|
15
|
+
accept: (visitor: IStatementVisitor) => string;
|
|
16
|
+
static nameOf: (entity: string, naming: StatementNaming, ...parts: string[]) => string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { constraintNameOf } from "./ConstraintName.js";
|
|
2
|
+
export class ForeignKeyStatement {
|
|
3
|
+
table;
|
|
4
|
+
name;
|
|
5
|
+
columns;
|
|
6
|
+
referencesTable;
|
|
7
|
+
referencesColumns;
|
|
8
|
+
kind;
|
|
9
|
+
onDelete;
|
|
10
|
+
onUpdate;
|
|
11
|
+
constructor(table, name, columns, referencesTable, referencesColumns, kind = "add", onDelete, onUpdate) {
|
|
12
|
+
this.table = table;
|
|
13
|
+
this.name = name;
|
|
14
|
+
this.columns = columns;
|
|
15
|
+
this.referencesTable = referencesTable;
|
|
16
|
+
this.referencesColumns = referencesColumns;
|
|
17
|
+
this.kind = kind;
|
|
18
|
+
this.onDelete = onDelete;
|
|
19
|
+
this.onUpdate = onUpdate;
|
|
20
|
+
}
|
|
21
|
+
accept = (visitor) => visitor.visit(this);
|
|
22
|
+
static nameOf = (entity, naming, ...parts) => constraintNameOf(entity, naming, ...parts);
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -20,6 +20,8 @@ import type { DropTableStatement } from "./DropTableStatement.js";
|
|
|
20
20
|
import type { DropTriggerStatement } from "./DropTriggerStatement.js";
|
|
21
21
|
import type { ExecuteStoredProcedureStatement } from "./ExecuteStoredProcedureStatement.js";
|
|
22
22
|
import type { IdentityInsertStatement } from "./IdentityInsertStatement.js";
|
|
23
|
+
import type { SqlSeedStatement } from "./SqlSeedStatement.js";
|
|
24
|
+
import type { ForeignKeyStatement } from "./ForeignKeyStatement.js";
|
|
23
25
|
import type { InsertStatement } from "./InsertStatement.js";
|
|
24
26
|
import type { ReturnStatement } from "./ReturnStatement.js";
|
|
25
27
|
import type { SelectInsertedIdStatement } from "./SelectInsertedIdStatement.js";
|
|
@@ -44,6 +46,8 @@ export interface IStatementVisitor {
|
|
|
44
46
|
visit(statement: DropTriggerStatement): string;
|
|
45
47
|
visit(statement: CreateTriggerStatement): string;
|
|
46
48
|
visit(statement: IdentityInsertStatement): string;
|
|
49
|
+
visit(statement: SqlSeedStatement): string;
|
|
50
|
+
visit(statement: ForeignKeyStatement): string;
|
|
47
51
|
visit(statement: DropRoutineStatement): string;
|
|
48
52
|
visit(statement: CreateCreateStoredProcedureStatement): string;
|
|
49
53
|
visit(statement: CreateReadStoredProcedureStatement): string;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { ITableConstraint } from "./ITableConstraint.js";
|
|
2
|
+
import type { StatementNaming } from "./StatementNaming.js";
|
|
2
3
|
export declare class PrimaryKey implements ITableConstraint {
|
|
3
4
|
readonly name: string;
|
|
4
5
|
readonly columns: string[];
|
|
5
6
|
readonly kind: "primaryKey";
|
|
6
7
|
constructor(name: string, columns: string[]);
|
|
8
|
+
static nameOf: (entity: string, naming: StatementNaming, ...parts: string[]) => string;
|
|
7
9
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { constraintNameOf } from "./ConstraintName.js";
|
|
1
2
|
export class PrimaryKey {
|
|
2
3
|
name;
|
|
3
4
|
columns;
|
|
@@ -6,4 +7,5 @@ export class PrimaryKey {
|
|
|
6
7
|
this.name = name;
|
|
7
8
|
this.columns = columns;
|
|
8
9
|
}
|
|
10
|
+
static nameOf = (entity, naming, ...parts) => constraintNameOf(entity, naming, ...parts);
|
|
9
11
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { RoutineParameter } from "./RoutineParameter.js";
|
|
2
|
+
export type ProcedureByGroup = {
|
|
3
|
+
logical: readonly string[];
|
|
4
|
+
columns: readonly string[];
|
|
5
|
+
parameters: readonly RoutineParameter[];
|
|
6
|
+
updateParameters: readonly RoutineParameter[];
|
|
7
|
+
};
|
|
8
|
+
export type ProcedureSource = {
|
|
9
|
+
plural: string;
|
|
10
|
+
table: string;
|
|
11
|
+
columns: readonly string[];
|
|
12
|
+
createParameters: readonly RoutineParameter[];
|
|
13
|
+
writable: readonly string[];
|
|
14
|
+
createColumns: readonly RoutineParameter[];
|
|
15
|
+
updateColumns: readonly RoutineParameter[];
|
|
16
|
+
typedColumns: readonly RoutineParameter[];
|
|
17
|
+
byGroups: readonly ProcedureByGroup[];
|
|
18
|
+
key: string;
|
|
19
|
+
keyType: string;
|
|
20
|
+
auditUpdated?: string;
|
|
21
|
+
generatedKey: boolean;
|
|
22
|
+
routineName: (stem: string) => string;
|
|
23
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IStatement } from "./IStatement.js";
|
|
2
|
+
import type { ProcedureSource } from "./ProcedureSource.js";
|
|
3
|
+
export declare const sqlProcedureStatementsOf: (source: ProcedureSource) => IStatement[];
|
|
4
|
+
export declare const procedureNameOf: (statement: IStatement) => string;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CreateBulkCreateStoredProcedureStatement } from "./CreateBulkCreateStoredProcedureStatement.js";
|
|
2
|
+
import { CreateBulkDeleteStoredProcedureStatement } from "./CreateBulkDeleteStoredProcedureStatement.js";
|
|
3
|
+
import { CreateBulkUpdateStoredProcedureStatement } from "./CreateBulkUpdateStoredProcedureStatement.js";
|
|
4
|
+
import { CreateCreateStoredProcedureStatement } from "./CreateCreateStoredProcedureStatement.js";
|
|
5
|
+
import { CreateDeleteStoredProcedureStatement } from "./CreateDeleteStoredProcedureStatement.js";
|
|
6
|
+
import { CreateReadStoredProcedureStatement } from "./CreateReadStoredProcedureStatement.js";
|
|
7
|
+
import { CreateUpdateStoredProcedureStatement } from "./CreateUpdateStoredProcedureStatement.js";
|
|
8
|
+
export const sqlProcedureStatementsOf = (source) => {
|
|
9
|
+
const name = (stem) => source.routineName(stem);
|
|
10
|
+
const plural = source.plural;
|
|
11
|
+
const payload = { name: "payload", type: "payload" };
|
|
12
|
+
const statements = [
|
|
13
|
+
new CreateCreateStoredProcedureStatement(name(`create_${plural}`), source.table, source.columns, source.createParameters, source.key, source.keyType, source.writable, source.generatedKey, source.auditUpdated),
|
|
14
|
+
new CreateReadStoredProcedureStatement(name(`read_${plural}`), source.table, source.columns, [], source.key, source.keyType, source.writable, [], source.generatedKey, source.auditUpdated),
|
|
15
|
+
];
|
|
16
|
+
for (const group of source.byGroups) {
|
|
17
|
+
const suffix = `_by_${group.logical.join("_")}`;
|
|
18
|
+
statements.push(new CreateReadStoredProcedureStatement(name(`read_${plural}${suffix}`), source.table, source.columns, group.parameters, source.key, source.keyType, source.writable, group.columns, source.generatedKey, source.auditUpdated), new CreateUpdateStoredProcedureStatement(name(`update_${plural}${suffix}`), source.table, source.columns, group.updateParameters, source.key, source.keyType, source.writable, group.columns, source.generatedKey, source.auditUpdated), new CreateDeleteStoredProcedureStatement(name(`delete_${plural}${suffix}`), source.table, source.columns, group.parameters, source.key, source.keyType, source.writable, group.columns, source.generatedKey, source.auditUpdated));
|
|
19
|
+
}
|
|
20
|
+
statements.push(new CreateBulkCreateStoredProcedureStatement(name(`bulk_create_${plural}`), source.table, source.createColumns, payload, source.key, source.keyType), new CreateBulkUpdateStoredProcedureStatement(name(`bulk_update_${plural}`), source.table, source.updateColumns, payload, source.key, source.keyType), new CreateBulkDeleteStoredProcedureStatement(name(`bulk_delete_${plural}`), source.table, source.typedColumns, payload, source.key, source.keyType));
|
|
21
|
+
return statements;
|
|
22
|
+
};
|
|
23
|
+
export const procedureNameOf = (statement) => {
|
|
24
|
+
if (statement instanceof CreateCreateStoredProcedureStatement ||
|
|
25
|
+
statement instanceof CreateReadStoredProcedureStatement ||
|
|
26
|
+
statement instanceof CreateUpdateStoredProcedureStatement ||
|
|
27
|
+
statement instanceof CreateDeleteStoredProcedureStatement ||
|
|
28
|
+
statement instanceof CreateBulkCreateStoredProcedureStatement ||
|
|
29
|
+
statement instanceof CreateBulkUpdateStoredProcedureStatement ||
|
|
30
|
+
statement instanceof CreateBulkDeleteStoredProcedureStatement) {
|
|
31
|
+
return statement.name;
|
|
32
|
+
}
|
|
33
|
+
throw new Error("procedure statement has no name");
|
|
34
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SpecField } from "../converters/SpecField.js";
|
|
2
|
+
import type { ISqlSeedStatement } from "./ISqlSeedStatement.js";
|
|
3
|
+
import type { IStatementVisitor } from "./IStatementVisitor.js";
|
|
4
|
+
export type SqlSeedColumn = {
|
|
5
|
+
column: string;
|
|
6
|
+
field: SpecField;
|
|
7
|
+
value: unknown;
|
|
8
|
+
};
|
|
9
|
+
export declare class SqlSeedStatement implements ISqlSeedStatement {
|
|
10
|
+
readonly table: string;
|
|
11
|
+
readonly columns: readonly SqlSeedColumn[];
|
|
12
|
+
readonly kind: "insert" | "delete";
|
|
13
|
+
readonly identity: boolean;
|
|
14
|
+
readonly idColumn?: string | undefined;
|
|
15
|
+
constructor(table: string, columns: readonly SqlSeedColumn[], kind?: "insert" | "delete", identity?: boolean, idColumn?: string | undefined);
|
|
16
|
+
accept: (visitor: IStatementVisitor) => string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class SqlSeedStatement {
|
|
2
|
+
table;
|
|
3
|
+
columns;
|
|
4
|
+
kind;
|
|
5
|
+
identity;
|
|
6
|
+
idColumn;
|
|
7
|
+
constructor(table, columns, kind = "insert", identity = false, idColumn) {
|
|
8
|
+
this.table = table;
|
|
9
|
+
this.columns = columns;
|
|
10
|
+
this.kind = kind;
|
|
11
|
+
this.identity = identity;
|
|
12
|
+
this.idColumn = idColumn;
|
|
13
|
+
}
|
|
14
|
+
accept = (visitor) => visitor.visit(this);
|
|
15
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Casing } from "../converters/ChangeCasingConverter.js";
|
|
2
|
+
import { KeywordCasing } from "./KeywordCasing.js";
|
|
3
|
+
export declare class StatementNaming {
|
|
4
|
+
readonly tableNameCasing: Casing;
|
|
5
|
+
readonly fieldNameCasing: Casing;
|
|
6
|
+
readonly constraintNameCasing: Casing;
|
|
7
|
+
readonly triggerNameCasing: Casing;
|
|
8
|
+
readonly keywordCasing: KeywordCasing;
|
|
9
|
+
readonly pluralizeTables: boolean;
|
|
10
|
+
readonly objects: "preserve" | "upper" | "lower";
|
|
11
|
+
static readonly sql: StatementNaming;
|
|
12
|
+
constructor(options?: {
|
|
13
|
+
tableNameCasing?: Casing;
|
|
14
|
+
fieldNameCasing?: Casing;
|
|
15
|
+
constraintNameCasing?: Casing;
|
|
16
|
+
triggerNameCasing?: Casing;
|
|
17
|
+
keywordCasing?: KeywordCasing;
|
|
18
|
+
pluralizeTables?: boolean;
|
|
19
|
+
objects?: "preserve" | "upper" | "lower";
|
|
20
|
+
});
|
|
21
|
+
isVerbatim: (mapping: string) => boolean;
|
|
22
|
+
physicalStem: (name: string) => string;
|
|
23
|
+
convert: (text: string, casing: Casing) => string;
|
|
24
|
+
letter: (text: string) => string;
|
|
25
|
+
keyword: (text: string) => string;
|
|
26
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ChangeCasingConverter } from "../converters/ChangeCasingConverter.js";
|
|
2
|
+
import { PluralizerConverter } from "../converters/PluralizerConverter.js";
|
|
3
|
+
import { KeywordCasing } from "./KeywordCasing.js";
|
|
4
|
+
const snake = /^[a-z_][a-z0-9_]*$/;
|
|
5
|
+
const pluralizer = new PluralizerConverter();
|
|
6
|
+
export class StatementNaming {
|
|
7
|
+
tableNameCasing;
|
|
8
|
+
fieldNameCasing;
|
|
9
|
+
constraintNameCasing;
|
|
10
|
+
triggerNameCasing;
|
|
11
|
+
keywordCasing;
|
|
12
|
+
pluralizeTables;
|
|
13
|
+
objects;
|
|
14
|
+
static sql = new StatementNaming();
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
this.tableNameCasing = options.tableNameCasing ?? "snakeCase";
|
|
17
|
+
this.fieldNameCasing = options.fieldNameCasing ?? "snakeCase";
|
|
18
|
+
this.constraintNameCasing = options.constraintNameCasing ?? "snakeCase";
|
|
19
|
+
this.triggerNameCasing = options.triggerNameCasing ?? "snakeCase";
|
|
20
|
+
this.keywordCasing = options.keywordCasing ?? KeywordCasing.Upper;
|
|
21
|
+
this.pluralizeTables = options.pluralizeTables ?? true;
|
|
22
|
+
this.objects = options.objects ?? "preserve";
|
|
23
|
+
}
|
|
24
|
+
isVerbatim = (mapping) => !snake.test(mapping);
|
|
25
|
+
physicalStem = (name) => this.isVerbatim(name) ? name : this.pluralizeTables ? lastToken(name) : name;
|
|
26
|
+
convert = (text, casing) => {
|
|
27
|
+
const words = identifierWords(text);
|
|
28
|
+
if (words.length === 0)
|
|
29
|
+
return text;
|
|
30
|
+
switch (casing) {
|
|
31
|
+
case "camelCase":
|
|
32
|
+
return words.map((word, i) => (i === 0 ? word : cap(word))).join("");
|
|
33
|
+
case "pascalCase":
|
|
34
|
+
return words.map(cap).join("");
|
|
35
|
+
case "snakeCase":
|
|
36
|
+
return words.join("_");
|
|
37
|
+
case "kebabCase":
|
|
38
|
+
return words.join("-");
|
|
39
|
+
default:
|
|
40
|
+
return new ChangeCasingConverter(casing).convert(text);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
letter = (text) => this.objects === "upper"
|
|
44
|
+
? text.toUpperCase()
|
|
45
|
+
: this.objects === "lower"
|
|
46
|
+
? text.toLowerCase()
|
|
47
|
+
: text;
|
|
48
|
+
keyword = (text) => this.keywordCasing === KeywordCasing.Lower ? text.toLowerCase() : text.toUpperCase();
|
|
49
|
+
}
|
|
50
|
+
const identifierWords = (name) => name
|
|
51
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
52
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2")
|
|
53
|
+
.replace(/[_\-.]+/g, " ")
|
|
54
|
+
.trim()
|
|
55
|
+
.split(/\s+/)
|
|
56
|
+
.filter((word) => word.length > 0)
|
|
57
|
+
.map((word) => word.toLowerCase());
|
|
58
|
+
const cap = (word) => word[0].toUpperCase() + word.slice(1);
|
|
59
|
+
const lastToken = (name) => {
|
|
60
|
+
const at = name.lastIndexOf("_");
|
|
61
|
+
return at < 0
|
|
62
|
+
? pluralizer.convert(name)
|
|
63
|
+
: `${name.slice(0, at + 1)}${pluralizer.convert(name.slice(at + 1))}`;
|
|
64
|
+
};
|
|
@@ -21,6 +21,8 @@ import { DropTableStatement } from "./DropTableStatement.js";
|
|
|
21
21
|
import { DropTriggerStatement } from "./DropTriggerStatement.js";
|
|
22
22
|
import { ExecuteStoredProcedureStatement } from "./ExecuteStoredProcedureStatement.js";
|
|
23
23
|
import { IdentityInsertStatement } from "./IdentityInsertStatement.js";
|
|
24
|
+
import { SqlSeedStatement } from "./SqlSeedStatement.js";
|
|
25
|
+
import { ForeignKeyStatement } from "./ForeignKeyStatement.js";
|
|
24
26
|
import { InsertStatement } from "./InsertStatement.js";
|
|
25
27
|
import { ReturnStatement } from "./ReturnStatement.js";
|
|
26
28
|
import { SelectInsertedIdStatement } from "./SelectInsertedIdStatement.js";
|
|
@@ -30,6 +32,7 @@ import { UpdateStatement } from "./UpdateStatement.js";
|
|
|
30
32
|
export declare class StatementRenderer implements IStatementVisitor {
|
|
31
33
|
protected readonly text: StatementTextRenderer;
|
|
32
34
|
constructor(text: StatementTextRenderer);
|
|
35
|
+
procedures(_source: import("./ProcedureSource.js").ProcedureSource): import("./IStatement.js").IStatement[];
|
|
33
36
|
visit(statement: SelectStatement): string;
|
|
34
37
|
visit(statement: InsertStatement): string;
|
|
35
38
|
visit(statement: UpdateStatement): string;
|
|
@@ -48,6 +51,8 @@ export declare class StatementRenderer implements IStatementVisitor {
|
|
|
48
51
|
visit(statement: DropTriggerStatement): string;
|
|
49
52
|
visit(statement: CreateTriggerStatement): string;
|
|
50
53
|
visit(statement: IdentityInsertStatement): string;
|
|
54
|
+
visit(statement: SqlSeedStatement): string;
|
|
55
|
+
visit(statement: ForeignKeyStatement): string;
|
|
51
56
|
visit(statement: DropRoutineStatement): string;
|
|
52
57
|
visit(statement: CreateCreateStoredProcedureStatement): string;
|
|
53
58
|
visit(statement: CreateReadStoredProcedureStatement): string;
|
|
@@ -75,6 +80,8 @@ export declare class StatementRenderer implements IStatementVisitor {
|
|
|
75
80
|
protected visitDropTrigger(statement: DropTriggerStatement): string;
|
|
76
81
|
protected visitCreateTrigger(statement: CreateTriggerStatement): string;
|
|
77
82
|
protected visitIdentityInsert(statement: IdentityInsertStatement): string;
|
|
83
|
+
protected visitSqlSeed(_statement: SqlSeedStatement): string;
|
|
84
|
+
protected visitForeignKey(_statement: ForeignKeyStatement): string;
|
|
78
85
|
protected visitDropRoutine(statement: DropRoutineStatement): string;
|
|
79
86
|
protected visitCreateCreateStoredProcedureStatement(statement: CreateCreateStoredProcedureStatement): string;
|
|
80
87
|
protected visitCreateReadStoredProcedureStatement(statement: CreateReadStoredProcedureStatement): string;
|
|
@@ -30,6 +30,9 @@ export class StatementRenderer {
|
|
|
30
30
|
constructor(text) {
|
|
31
31
|
this.text = text;
|
|
32
32
|
}
|
|
33
|
+
procedures(_source) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
33
36
|
visit(statement) {
|
|
34
37
|
return ({
|
|
35
38
|
SelectStatement: () => this.visitSelect(statement),
|
|
@@ -49,6 +52,8 @@ export class StatementRenderer {
|
|
|
49
52
|
DropTriggerStatement: () => this.visitDropTrigger(statement),
|
|
50
53
|
CreateTriggerStatement: () => this.visitCreateTrigger(statement),
|
|
51
54
|
IdentityInsertStatement: () => this.visitIdentityInsert(statement),
|
|
55
|
+
SqlSeedStatement: () => this.visitSqlSeed(statement),
|
|
56
|
+
ForeignKeyStatement: () => this.visitForeignKey(statement),
|
|
52
57
|
DropRoutineStatement: () => this.visitDropRoutine(statement),
|
|
53
58
|
CreateCreateStoredProcedureStatement: () => this.visitCreateCreateStoredProcedureStatement(statement),
|
|
54
59
|
CreateReadStoredProcedureStatement: () => this.visitCreateReadStoredProcedureStatement(statement),
|
|
@@ -115,6 +120,12 @@ export class StatementRenderer {
|
|
|
115
120
|
visitIdentityInsert(statement) {
|
|
116
121
|
return new IdentityInsertStatementTextRenderer().render(statement);
|
|
117
122
|
}
|
|
123
|
+
visitSqlSeed(_statement) {
|
|
124
|
+
throw new Error("SqlSeedStatement is rendered by the SQL driver.");
|
|
125
|
+
}
|
|
126
|
+
visitForeignKey(_statement) {
|
|
127
|
+
throw new Error("ForeignKeyStatement is rendered by the SQL driver.");
|
|
128
|
+
}
|
|
118
129
|
visitDropRoutine(statement) {
|
|
119
130
|
return new DropRoutineStatementTextRenderer().render(statement);
|
|
120
131
|
}
|
|
@@ -4,11 +4,21 @@ import type { IStatement } from "./IStatement.js";
|
|
|
4
4
|
import type { IStatementVisitor } from "./IStatementVisitor.js";
|
|
5
5
|
import { ConditionRenderer } from "./ConditionRenderer.js";
|
|
6
6
|
import { ExpressionRenderer } from "./ExpressionRenderer.js";
|
|
7
|
+
import type { ProcedureSource } from "./ProcedureSource.js";
|
|
7
8
|
import { StatementRenderer } from "./StatementRenderer.js";
|
|
9
|
+
import { StatementNaming } from "./StatementNaming.js";
|
|
8
10
|
export declare class StatementTextRenderer {
|
|
9
11
|
protected readonly statements: IStatementVisitor;
|
|
10
12
|
protected readonly conditions: IConditionVisitor;
|
|
11
|
-
|
|
13
|
+
readonly naming: StatementNaming;
|
|
14
|
+
private readonly statementsFactory?;
|
|
15
|
+
private readonly conditionsFactory?;
|
|
16
|
+
private readonly expressionsFactory?;
|
|
17
|
+
private readonly applyKeywordsFn?;
|
|
18
|
+
constructor(statements?: (text: StatementTextRenderer) => StatementRenderer, conditions?: (expressions: ExpressionRenderer) => ConditionRenderer, expressions?: (text: StatementTextRenderer) => ExpressionRenderer, naming?: StatementNaming, applyKeywords?: (sql: string, keyword: (word: string) => string) => string);
|
|
19
|
+
withNaming: (naming: StatementNaming) => StatementTextRenderer;
|
|
20
|
+
procedures: (source: ProcedureSource) => IStatement[];
|
|
21
|
+
applyKeywords: (sql: string) => string;
|
|
12
22
|
render(statement: IStatement): string;
|
|
13
23
|
render(condition: ICondition): string;
|
|
14
24
|
}
|
|
@@ -1,17 +1,34 @@
|
|
|
1
1
|
import { is } from "./brand.js";
|
|
2
2
|
import { ConditionRenderer } from "./ConditionRenderer.js";
|
|
3
3
|
import { ExpressionRenderer } from "./ExpressionRenderer.js";
|
|
4
|
+
import { KeywordCasing } from "./KeywordCasing.js";
|
|
4
5
|
import { StatementRenderer } from "./StatementRenderer.js";
|
|
6
|
+
import { StatementNaming } from "./StatementNaming.js";
|
|
5
7
|
import { Where } from "./Where.js";
|
|
6
8
|
import { WhereText } from "./WhereText.js";
|
|
7
9
|
export class StatementTextRenderer {
|
|
8
10
|
statements;
|
|
9
11
|
conditions;
|
|
10
|
-
|
|
12
|
+
naming;
|
|
13
|
+
statementsFactory;
|
|
14
|
+
conditionsFactory;
|
|
15
|
+
expressionsFactory;
|
|
16
|
+
applyKeywordsFn;
|
|
17
|
+
constructor(statements, conditions, expressions, naming, applyKeywords) {
|
|
18
|
+
this.statementsFactory = statements;
|
|
19
|
+
this.conditionsFactory = conditions;
|
|
20
|
+
this.expressionsFactory = expressions;
|
|
21
|
+
this.applyKeywordsFn = applyKeywords;
|
|
22
|
+
this.naming = naming ?? StatementNaming.sql;
|
|
11
23
|
const expressionRenderer = expressions?.(this) ?? new ExpressionRenderer(this);
|
|
12
24
|
this.statements = statements?.(this) ?? new StatementRenderer(this);
|
|
13
25
|
this.conditions = conditions?.(expressionRenderer) ?? new ConditionRenderer(expressionRenderer);
|
|
14
26
|
}
|
|
27
|
+
withNaming = (naming) => new StatementTextRenderer(this.statementsFactory, this.conditionsFactory, this.expressionsFactory, naming, this.applyKeywordsFn);
|
|
28
|
+
procedures = (source) => this.statements instanceof StatementRenderer ? this.statements.procedures(source) : [];
|
|
29
|
+
applyKeywords = (sql) => this.naming.keywordCasing === KeywordCasing.Lower && this.applyKeywordsFn !== undefined
|
|
30
|
+
? this.applyKeywordsFn(sql, this.naming.keyword)
|
|
31
|
+
: sql;
|
|
15
32
|
render(target) {
|
|
16
33
|
return is(target, Where) || is(target, WhereText)
|
|
17
34
|
? target.accept(this.conditions)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { ITableConstraint } from "./ITableConstraint.js";
|
|
2
|
+
import type { StatementNaming } from "./StatementNaming.js";
|
|
2
3
|
export declare class UniqueConstraint implements ITableConstraint {
|
|
3
4
|
readonly name: string;
|
|
4
5
|
readonly columns: string[];
|
|
5
6
|
readonly kind: "unique";
|
|
6
7
|
constructor(name: string, columns: string[]);
|
|
8
|
+
static nameOf: (entity: string, naming: StatementNaming, ...parts: string[]) => string;
|
|
7
9
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { constraintNameOf } from "./ConstraintName.js";
|
|
1
2
|
export class UniqueConstraint {
|
|
2
3
|
name;
|
|
3
4
|
columns;
|
|
@@ -6,4 +7,5 @@ export class UniqueConstraint {
|
|
|
6
7
|
this.name = name;
|
|
7
8
|
this.columns = columns;
|
|
8
9
|
}
|
|
10
|
+
static nameOf = (entity, naming, ...parts) => constraintNameOf(entity, naming, ...parts);
|
|
9
11
|
}
|
|
@@ -20,6 +20,11 @@ export type { IDropIndexStatement } from "./IDropIndexStatement.js";
|
|
|
20
20
|
export type { IDropTriggerStatement } from "./IDropTriggerStatement.js";
|
|
21
21
|
export type { ICreateTriggerStatement } from "./ICreateTriggerStatement.js";
|
|
22
22
|
export type { IIdentityInsertStatement } from "./IIdentityInsertStatement.js";
|
|
23
|
+
export type { ISqlSeedStatement } from "./ISqlSeedStatement.js";
|
|
24
|
+
export { SqlSeedStatement } from "./SqlSeedStatement.js";
|
|
25
|
+
export type { IForeignKeyStatement } from "./IForeignKeyStatement.js";
|
|
26
|
+
export { ForeignKeyStatement } from "./ForeignKeyStatement.js";
|
|
27
|
+
export type { SqlSeedColumn } from "./SqlSeedStatement.js";
|
|
23
28
|
export type { IDropRoutineStatement } from "./IDropRoutineStatement.js";
|
|
24
29
|
export type { ICreateCreateStoredProcedureStatement } from "./ICreateCreateStoredProcedureStatement.js";
|
|
25
30
|
export type { ICreateReadStoredProcedureStatement } from "./ICreateReadStoredProcedureStatement.js";
|
|
@@ -55,6 +60,11 @@ export { WhereText } from "./WhereText.js";
|
|
|
55
60
|
export { SelectStatement } from "./SelectStatement.js";
|
|
56
61
|
export { StatementParser } from "./StatementParser.js";
|
|
57
62
|
export { StatementTextRenderer } from "./StatementTextRenderer.js";
|
|
63
|
+
export { StatementNaming } from "./StatementNaming.js";
|
|
64
|
+
export { KeywordCasing } from "./KeywordCasing.js";
|
|
65
|
+
export { constraintNameOf } from "./ConstraintName.js";
|
|
66
|
+
export type { ProcedureSource, ProcedureByGroup } from "./ProcedureSource.js";
|
|
67
|
+
export { sqlProcedureStatementsOf, procedureNameOf } from "./SqlProcedureStatements.js";
|
|
58
68
|
export { DefaultStatementTextRenderer } from "./DefaultStatementTextRenderer.js";
|
|
59
69
|
export { StatementRenderer } from "./StatementRenderer.js";
|
|
60
70
|
export { ExpressionRenderer } from "./ExpressionRenderer.js";
|
package/dist/statements/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { SqlSeedStatement } from "./SqlSeedStatement.js";
|
|
2
|
+
export { ForeignKeyStatement } from "./ForeignKeyStatement.js";
|
|
1
3
|
export { Join } from "./Join.js";
|
|
2
4
|
export { Aggregate } from "./Aggregate.js";
|
|
3
5
|
export { OrderBy } from "./OrderBy.js";
|
|
@@ -14,6 +16,10 @@ export { WhereText } from "./WhereText.js";
|
|
|
14
16
|
export { SelectStatement } from "./SelectStatement.js";
|
|
15
17
|
export { StatementParser } from "./StatementParser.js";
|
|
16
18
|
export { StatementTextRenderer } from "./StatementTextRenderer.js";
|
|
19
|
+
export { StatementNaming } from "./StatementNaming.js";
|
|
20
|
+
export { KeywordCasing } from "./KeywordCasing.js";
|
|
21
|
+
export { constraintNameOf } from "./ConstraintName.js";
|
|
22
|
+
export { sqlProcedureStatementsOf, procedureNameOf } from "./SqlProcedureStatements.js";
|
|
17
23
|
export { DefaultStatementTextRenderer } from "./DefaultStatementTextRenderer.js";
|
|
18
24
|
export { StatementRenderer } from "./StatementRenderer.js";
|
|
19
25
|
export { ExpressionRenderer } from "./ExpressionRenderer.js";
|