@deterministic-code/datasources 0.1.17 → 0.1.29

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 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
  }
@@ -1,6 +1,5 @@
1
1
  export const EMPTY_UUID = "00000000-0000-0000-0000-000000000000";
2
- const NUMERIC_LITERAL_TYPES = new Set([
3
- "number",
2
+ const NUMERIC_TYPES = [
4
3
  "integer",
5
4
  "unsignedinteger",
6
5
  "smallinteger",
@@ -9,8 +8,8 @@ const NUMERIC_LITERAL_TYPES = new Set([
9
8
  "unsignedbiginteger",
10
9
  "float",
11
10
  "decimal",
12
- "reference",
13
- ]);
11
+ ];
12
+ const NUMERIC_LITERAL_TYPES = new Set([...NUMERIC_TYPES, "reference"]);
14
13
  const CALL_FORM = /^([A-Za-z]+)\('(.*)'\)$/;
15
14
  const quotedReverse = /^'(.*)'$/;
16
15
  const identity = (arg) => arg;
@@ -27,22 +26,10 @@ const token = (specToken, native, reverse) => ({
27
26
  native,
28
27
  reverse,
29
28
  });
30
- const NUMERIC_TYPES = [
31
- "number",
32
- "integer",
33
- "unsignedinteger",
34
- "smallinteger",
35
- "unsignedsmallinteger",
36
- "biginteger",
37
- "unsignedbiginteger",
38
- "float",
39
- "decimal",
40
- ];
41
29
  export class DefaultValueConverter {
42
30
  static spec = {
43
31
  string: { String: { spec: /^.*$/, specText: identity } },
44
32
  character: { String: { spec: /^.+$/, specText: identity } },
45
- number: { Numeric: intLit },
46
33
  integer: { Numeric: intLit },
47
34
  unsignedinteger: { Numeric: uintLit },
48
35
  smallinteger: { Numeric: intLit },
@@ -23,11 +23,8 @@ export class DeterministicTypeConverter {
23
23
  this.#rules = rules;
24
24
  this.#reverse = new Map();
25
25
  for (const [specType, native] of Object.entries(dictionary)) {
26
- const existing = this.#reverse.get(native);
27
- if (existing === undefined)
28
- this.#reverse.set(native, [specType]);
29
- else
30
- existing.push(specType);
26
+ if (!this.#reverse.has(native))
27
+ this.#reverse.set(native, specType);
31
28
  }
32
29
  }
33
30
  convert(from) {
@@ -63,12 +60,9 @@ export class DeterministicTypeConverter {
63
60
  return this.convert(field.type);
64
61
  }
65
62
  reverseConvert = (native) => {
66
- const specTypes = this.#reverse.get(native);
67
- if (specTypes === undefined)
63
+ const spec = this.#reverse.get(native);
64
+ if (spec === undefined)
68
65
  throw new Error(`Unknown native field type: ${native}`);
69
- if (specTypes.length > 1) {
70
- throw new Error(`Native field type ${native} maps to multiple spec types: ${specTypes.join(", ")}`);
71
- }
72
- return specTypes[0];
66
+ return spec;
73
67
  };
74
68
  }
@@ -8,7 +8,7 @@ export class RowTypeConverter extends TypeConverter {
8
8
  static from(converters, columns) {
9
9
  const fields = {};
10
10
  for (const [name, type] of Object.entries(columns)) {
11
- const converter = converters[type];
11
+ const converter = converters[type] ?? (type.endsWith("integer") ? converters.integer : undefined);
12
12
  if (converter)
13
13
  fields[name] = converter;
14
14
  }
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, 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";
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, 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
  }
@@ -5,7 +5,6 @@ export declare class CreateTriggerStatement implements ICreateTriggerStatement {
5
5
  readonly name: string;
6
6
  readonly updatedColumn: string;
7
7
  readonly keyColumn: string;
8
- readonly utcNow: string;
9
- constructor(table: string, name: string, updatedColumn: string, keyColumn: string, utcNow: string);
8
+ constructor(table: string, name: string, updatedColumn: string, keyColumn: string);
10
9
  accept: (visitor: IStatementVisitor) => string;
11
10
  }
@@ -3,13 +3,11 @@ export class CreateTriggerStatement {
3
3
  name;
4
4
  updatedColumn;
5
5
  keyColumn;
6
- utcNow;
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);
15
13
  }
@@ -0,0 +1,15 @@
1
+ import type { IForeignKeyStatement } from "./IForeignKeyStatement.js";
2
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
3
+ import type { ReferentialAction } from "./ForeignKey.js";
4
+ export declare class ForeignKeyStatement implements IForeignKeyStatement {
5
+ readonly table: string;
6
+ readonly name: string;
7
+ readonly columns: readonly string[];
8
+ readonly referencesTable: string;
9
+ readonly referencesColumns: readonly string[];
10
+ readonly kind: "add" | "drop";
11
+ readonly onDelete?: ReferentialAction | undefined;
12
+ readonly onUpdate?: ReferentialAction | undefined;
13
+ constructor(table: string, name: string, columns: readonly string[], referencesTable: string, referencesColumns: readonly string[], kind?: "add" | "drop", onDelete?: ReferentialAction | undefined, onUpdate?: ReferentialAction | undefined);
14
+ accept: (visitor: IStatementVisitor) => string;
15
+ }
@@ -0,0 +1,21 @@
1
+ export class ForeignKeyStatement {
2
+ table;
3
+ name;
4
+ columns;
5
+ referencesTable;
6
+ referencesColumns;
7
+ kind;
8
+ onDelete;
9
+ onUpdate;
10
+ constructor(table, name, columns, referencesTable, referencesColumns, kind = "add", onDelete, onUpdate) {
11
+ this.table = table;
12
+ this.name = name;
13
+ this.columns = columns;
14
+ this.referencesTable = referencesTable;
15
+ this.referencesColumns = referencesColumns;
16
+ this.kind = kind;
17
+ this.onDelete = onDelete;
18
+ this.onUpdate = onUpdate;
19
+ }
20
+ accept = (visitor) => visitor.visit(this);
21
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface IForeignKeyStatement extends IStatement {
3
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface ISqlSeedStatement extends IStatement {
3
+ }
@@ -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,4 +1,6 @@
1
+ import type { SpecField } from "../converters/SpecField.js";
1
2
  export type RoutineParameter = {
2
3
  name: string;
3
4
  type: string;
5
+ field?: SpecField;
4
6
  };
@@ -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
+ }
@@ -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";
@@ -48,6 +50,8 @@ export declare class StatementRenderer implements IStatementVisitor {
48
50
  visit(statement: DropTriggerStatement): string;
49
51
  visit(statement: CreateTriggerStatement): string;
50
52
  visit(statement: IdentityInsertStatement): string;
53
+ visit(statement: SqlSeedStatement): string;
54
+ visit(statement: ForeignKeyStatement): string;
51
55
  visit(statement: DropRoutineStatement): string;
52
56
  visit(statement: CreateCreateStoredProcedureStatement): string;
53
57
  visit(statement: CreateReadStoredProcedureStatement): string;
@@ -75,6 +79,8 @@ export declare class StatementRenderer implements IStatementVisitor {
75
79
  protected visitDropTrigger(statement: DropTriggerStatement): string;
76
80
  protected visitCreateTrigger(statement: CreateTriggerStatement): string;
77
81
  protected visitIdentityInsert(statement: IdentityInsertStatement): string;
82
+ protected visitSqlSeed(_statement: SqlSeedStatement): string;
83
+ protected visitForeignKey(_statement: ForeignKeyStatement): string;
78
84
  protected visitDropRoutine(statement: DropRoutineStatement): string;
79
85
  protected visitCreateCreateStoredProcedureStatement(statement: CreateCreateStoredProcedureStatement): string;
80
86
  protected visitCreateReadStoredProcedureStatement(statement: CreateReadStoredProcedureStatement): string;
@@ -49,6 +49,8 @@ export class StatementRenderer {
49
49
  DropTriggerStatement: () => this.visitDropTrigger(statement),
50
50
  CreateTriggerStatement: () => this.visitCreateTrigger(statement),
51
51
  IdentityInsertStatement: () => this.visitIdentityInsert(statement),
52
+ SqlSeedStatement: () => this.visitSqlSeed(statement),
53
+ ForeignKeyStatement: () => this.visitForeignKey(statement),
52
54
  DropRoutineStatement: () => this.visitDropRoutine(statement),
53
55
  CreateCreateStoredProcedureStatement: () => this.visitCreateCreateStoredProcedureStatement(statement),
54
56
  CreateReadStoredProcedureStatement: () => this.visitCreateReadStoredProcedureStatement(statement),
@@ -115,6 +117,12 @@ export class StatementRenderer {
115
117
  visitIdentityInsert(statement) {
116
118
  return new IdentityInsertStatementTextRenderer().render(statement);
117
119
  }
120
+ visitSqlSeed(_statement) {
121
+ throw new Error("SqlSeedStatement is rendered by the SQL driver.");
122
+ }
123
+ visitForeignKey(_statement) {
124
+ throw new Error("ForeignKeyStatement is rendered by the SQL driver.");
125
+ }
118
126
  visitDropRoutine(statement) {
119
127
  return new DropRoutineStatementTextRenderer().render(statement);
120
128
  }
@@ -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";
@@ -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";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deterministic-code/datasources",
3
- "version": "0.1.17",
3
+ "version": "0.1.29",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.js",