@deterministic-code/datasources-mysql 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.
@@ -1,6 +1,8 @@
1
- import { AlterTableStatementTextRenderer, type AlterAction, type Column } from "@deterministic-code/datasources";
1
+ import { AlterTableStatementTextRenderer, type AlterAction, type Column, type NotNull } from "@deterministic-code/datasources";
2
2
  export declare class MysqlAlterTableStatementRenderer extends AlterTableStatementTextRenderer {
3
3
  protected typeName(column: Column): string;
4
+ protected columnDefault(column: Column): string;
5
+ protected notNullSql(value?: NotNull): string;
4
6
  protected identity(column: Column): string;
5
7
  protected actionSql(action: AlterAction): string;
6
8
  }
@@ -4,6 +4,12 @@ export class MysqlAlterTableStatementRenderer extends AlterTableStatementTextRen
4
4
  typeName(column) {
5
5
  return columnTypes[column.type] ?? column.type;
6
6
  }
7
+ columnDefault(column) {
8
+ return column.default == null ? "" : ` DEFAULT ${column.default.value}`;
9
+ }
10
+ notNullSql(value) {
11
+ return value == null ? "" : " NOT NULL";
12
+ }
7
13
  identity(column) {
8
14
  return column.identity ? " AUTO_INCREMENT" : "";
9
15
  }
@@ -1,5 +1,7 @@
1
- import { CreateTableStatementTextRenderer, type Column } from "@deterministic-code/datasources";
1
+ import { CreateTableStatementTextRenderer, type Column, type NotNull } from "@deterministic-code/datasources";
2
2
  export declare class MysqlCreateTableStatementRenderer extends CreateTableStatementTextRenderer {
3
3
  protected typeName(column: Column): string;
4
+ protected columnDefault(column: Column): string;
5
+ protected notNullSql(value?: NotNull): string;
4
6
  protected identity(column: Column): string;
5
7
  }
@@ -4,6 +4,12 @@ export class MysqlCreateTableStatementRenderer extends CreateTableStatementTextR
4
4
  typeName(column) {
5
5
  return columnTypes[column.type] ?? column.type;
6
6
  }
7
+ columnDefault(column) {
8
+ return column.default == null ? "" : ` DEFAULT ${column.default.value}`;
9
+ }
10
+ notNullSql(value) {
11
+ return value == null ? "" : " NOT NULL";
12
+ }
7
13
  identity(column) {
8
14
  return column.identity ? " AUTO_INCREMENT" : "";
9
15
  }
@@ -1,4 +1,4 @@
1
- import { DatasourceError, DefaultValueConverter, DeterministicTypeConverter, StatementTextRenderer, } from "@deterministic-code/datasources";
1
+ import { DatasourceError, DefaultValueConverter, sqlStringLiteral, DeterministicTypeConverter, StatementTextRenderer, } from "@deterministic-code/datasources";
2
2
  import { MysqlConnection } from "./connection.js";
3
3
  import { MysqlCommand } from "./command.js";
4
4
  import { MysqlTransaction } from "./transaction.js";
@@ -63,8 +63,10 @@ export class MysqlDriver {
63
63
  utcNow: () => `(UTC_TIMESTAMP(3))`,
64
64
  booleanOn: "1",
65
65
  booleanOff: "0",
66
- hex: (arg) => `X'${arg}'`,
67
- hexReverse: /^X'(.*)'$/,
66
+ hex: (arg) => `(X'${arg}')`,
67
+ hexReverse: /^(?:\(X'(.*)'\)|X'(.*)')$/,
68
+ quote: (arg) => `(${sqlStringLiteral(arg)})`,
69
+ quoteReverse: /^(?:\('(.*)'\)|'(.*)')$/,
68
70
  });
69
71
  columnType = (name) => columnTypes[name] ??
70
72
  (() => {
@@ -1,4 +1,4 @@
1
- import { AlterTableStatement, BulkUpdateStatement, CreateBulkCreateStoredProcedureStatement, CreateBulkDeleteStoredProcedureStatement, CreateBulkUpdateStoredProcedureStatement, CreateCreateStoredProcedureStatement, CreateDeleteStoredProcedureStatement, CreateReadStoredProcedureStatement, CreateTableStatement, CreateTriggerStatement, CreateUpdateStoredProcedureStatement, DropIndexStatement, DropRoutineStatement, SelectInsertedIdStatement, StatementRenderer, type StatementTextRenderer } from "@deterministic-code/datasources";
1
+ import { AlterTableStatement, BulkUpdateStatement, CreateBulkCreateStoredProcedureStatement, CreateBulkDeleteStoredProcedureStatement, CreateBulkUpdateStoredProcedureStatement, CreateCreateStoredProcedureStatement, CreateDeleteStoredProcedureStatement, CreateNestedReadStoredProcedureStatement, CreateReadStoredProcedureStatement, CreateTableStatement, CreateTriggerStatement, CreateUpdateStoredProcedureStatement, DropIndexStatement, DropRoutineStatement, SelectInsertedIdStatement, StatementRenderer, type StatementTextRenderer } from "@deterministic-code/datasources";
2
2
  export declare class MysqlStatementRenderer extends StatementRenderer {
3
3
  constructor(text: StatementTextRenderer);
4
4
  protected visitSelectInsertedId(inserted: SelectInsertedIdStatement): string;
@@ -10,6 +10,7 @@ export declare class MysqlStatementRenderer extends StatementRenderer {
10
10
  protected visitDropRoutine(routine: DropRoutineStatement): string;
11
11
  protected visitCreateCreateStoredProcedureStatement(statement: CreateCreateStoredProcedureStatement): string;
12
12
  protected visitCreateReadStoredProcedureStatement(statement: CreateReadStoredProcedureStatement): string;
13
+ protected visitCreateNestedReadStoredProcedureStatement(statement: CreateNestedReadStoredProcedureStatement): string;
13
14
  protected visitCreateUpdateStoredProcedureStatement(statement: CreateUpdateStoredProcedureStatement): string;
14
15
  protected visitCreateDeleteStoredProcedureStatement(statement: CreateDeleteStoredProcedureStatement): string;
15
16
  protected visitCreateBulkCreateStoredProcedureStatement(statement: CreateBulkCreateStoredProcedureStatement): string;
@@ -42,6 +42,9 @@ export class MysqlStatementRenderer extends StatementRenderer {
42
42
  visitCreateReadStoredProcedureStatement(statement) {
43
43
  return new MysqlStoredProcedureStatementRenderer().renderRead(statement);
44
44
  }
45
+ visitCreateNestedReadStoredProcedureStatement(statement) {
46
+ return new MysqlStoredProcedureStatementRenderer().renderNestedRead(statement);
47
+ }
45
48
  visitCreateUpdateStoredProcedureStatement(statement) {
46
49
  return new MysqlStoredProcedureStatementRenderer().renderUpdate(statement);
47
50
  }
@@ -1,6 +1,7 @@
1
- import type { CreateBulkCreateStoredProcedureStatement, CreateBulkDeleteStoredProcedureStatement, CreateBulkUpdateStoredProcedureStatement, CreateCreateStoredProcedureStatement, CreateDeleteStoredProcedureStatement, CreateReadStoredProcedureStatement, CreateUpdateStoredProcedureStatement } from "@deterministic-code/datasources";
1
+ import type { CreateBulkCreateStoredProcedureStatement, CreateBulkDeleteStoredProcedureStatement, CreateBulkUpdateStoredProcedureStatement, CreateCreateStoredProcedureStatement, CreateDeleteStoredProcedureStatement, CreateNestedReadStoredProcedureStatement, CreateReadStoredProcedureStatement, CreateUpdateStoredProcedureStatement } from "@deterministic-code/datasources";
2
2
  export declare class MysqlStoredProcedureStatementRenderer {
3
3
  renderCreate(statement: CreateCreateStoredProcedureStatement): string;
4
+ renderNestedRead(statement: CreateNestedReadStoredProcedureStatement): string;
4
5
  renderRead(statement: CreateReadStoredProcedureStatement): string;
5
6
  renderUpdate(statement: CreateUpdateStoredProcedureStatement): string;
6
7
  renderDelete(statement: CreateDeleteStoredProcedureStatement): string;
@@ -1,3 +1,4 @@
1
+ import { DefaultStatementTextRenderer } from "@deterministic-code/datasources";
1
2
  const params = (list) => list.map((p) => ` IN ${p.name} ${p.type}`).join(",\n");
2
3
  const where = (columns) => columns.map((c) => `t.${c} = ${c}`).join(" AND ");
3
4
  const jsonColumns = (columns) => columns.map((c) => `${c.name} ${c.type} PATH '$.${c.name}'`).join(", ");
@@ -26,6 +27,13 @@ export class MysqlStoredProcedureStatementRenderer {
26
27
  SELECT LAST_INSERT_ID() AS ${statement.key};`;
27
28
  return procedure(statement.name, `\n${params(statement.parameters)}\n`, body);
28
29
  }
30
+ renderNestedRead(statement) {
31
+ const select = DefaultStatementTextRenderer.instance.render(statement.select);
32
+ const signature = statement.arguments
33
+ .map((argument) => `IN ${argument.parameter.name} ${argument.parameter.type}`)
34
+ .join(", ");
35
+ return procedure(statement.name, signature, ` ${select};`);
36
+ }
29
37
  renderRead(statement) {
30
38
  const aliased = statement.columns.map((c) => `t.${c}`).join(", ");
31
39
  if (statement.byProperties.length === 0) {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { register } from "@deterministic-code/datasources-code-generators/common/sql-dialect";
2
+ import { MysqlDriver } from "./MysqlDriver.js";
3
+ register("mysql", new MysqlDriver());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deterministic-code/datasources-mysql",
3
- "version": "0.1.11",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.js",
@@ -18,7 +18,7 @@
18
18
  "access": "public"
19
19
  },
20
20
  "dependencies": {
21
- "@deterministic-code/datasources": "^0.1.11",
21
+ "@deterministic-code/datasources": "^0.1.14",
22
22
  "mysql2": "^3.14.0"
23
23
  }
24
24
  }