@simplysm/orm-common 13.0.83 → 13.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ddl/initialize.d.ts +2 -2
- package/dist/ddl/initialize.js +1 -1
- package/dist/ddl/initialize.js.map +1 -1
- package/dist/ddl/table-ddl.d.ts +1 -1
- package/dist/exec/queryable.d.ts +115 -115
- package/dist/exec/queryable.js +68 -68
- package/dist/exec/queryable.js.map +1 -1
- package/dist/expr/expr.d.ts +248 -248
- package/dist/expr/expr.js +250 -250
- package/dist/query-builder/base/expr-renderer-base.d.ts +7 -7
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +3 -3
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +5 -5
- package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +7 -7
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +2 -2
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +4 -4
- package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +4 -4
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +2 -2
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +4 -4
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +7 -7
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/schema/factory/column-builder.d.ts +46 -46
- package/dist/schema/factory/column-builder.js +25 -25
- package/dist/schema/factory/index-builder.d.ts +22 -22
- package/dist/schema/factory/index-builder.js +14 -14
- package/dist/schema/factory/relation-builder.d.ts +93 -93
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +37 -37
- package/dist/schema/procedure-builder.d.ts +38 -38
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +26 -26
- package/dist/schema/table-builder.d.ts +38 -38
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +29 -29
- package/dist/schema/view-builder.d.ts +26 -26
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +18 -18
- package/dist/types/db.d.ts +40 -40
- package/dist/types/expr.d.ts +75 -75
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/query-def.d.ts +32 -32
- package/dist/types/query-def.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/ddl/initialize.ts +16 -16
- package/src/ddl/table-ddl.ts +1 -1
- package/src/exec/queryable.ts +163 -163
- package/src/expr/expr.ts +257 -257
- package/src/query-builder/base/expr-renderer-base.ts +8 -8
- package/src/query-builder/mssql/mssql-expr-renderer.ts +20 -20
- package/src/query-builder/mssql/mssql-query-builder.ts +28 -28
- package/src/query-builder/mysql/mysql-expr-renderer.ts +22 -22
- package/src/query-builder/mysql/mysql-query-builder.ts +65 -65
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +15 -15
- package/src/query-builder/postgresql/postgresql-query-builder.ts +43 -43
- package/src/query-builder/query-builder.ts +1 -1
- package/src/schema/factory/column-builder.ts +48 -48
- package/src/schema/factory/index-builder.ts +22 -22
- package/src/schema/factory/relation-builder.ts +95 -95
- package/src/schema/procedure-builder.ts +38 -38
- package/src/schema/table-builder.ts +38 -38
- package/src/schema/view-builder.ts +28 -28
- package/src/types/db.ts +41 -41
- package/src/types/expr.ts +79 -79
- package/src/types/query-def.ts +37 -37
- package/tests/ddl/basic.expected.ts +8 -8
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import type { Expr, WhereExpr, ExprColumn, ExprValue, ExprRaw, ExprEq, ExprGt, ExprLt, ExprGte, ExprLte, ExprBetween, ExprIsNull, ExprLike, ExprRegexp, ExprIn, ExprInQuery, ExprExists, ExprNot, ExprAnd, ExprOr, ExprConcat, ExprLeft, ExprRight, ExprTrim, ExprPadStart, ExprReplace, ExprUpper, ExprLower, ExprLength, ExprByteLength, ExprSubstring, ExprIndexOf, ExprAbs, ExprRound, ExprCeil, ExprFloor, ExprYear, ExprMonth, ExprDay, ExprHour, ExprMinute, ExprSecond, ExprIsoWeek, ExprIsoWeekStartDate, ExprIsoYearMonth, ExprDateDiff, ExprDateAdd, ExprFormatDate, ExprCoalesce, ExprNullIf, ExprIs, ExprSwitch, ExprIf, ExprCount, ExprSum, ExprAvg, ExprMax, ExprMin, ExprGreatest, ExprLeast, ExprRowNum, ExprRandom, ExprCast, ExprWindow, ExprSubquery } from "../../types/expr";
|
|
2
2
|
import type { SelectQueryDef } from "../../types/query-def";
|
|
3
3
|
/**
|
|
4
|
-
* Expr → SQL Render
|
|
4
|
+
* Expr → SQL Render abstract base class
|
|
5
5
|
*
|
|
6
6
|
* Base principles:
|
|
7
7
|
* - Implement only 100% identical logic across all dialects (dispatch)
|
|
8
8
|
* - If different at all, make it abstract
|
|
9
|
-
* - Method
|
|
9
|
+
* - Method names match expr.type (enables dynamic dispatch)
|
|
10
10
|
*/
|
|
11
11
|
export declare abstract class ExprRendererBase {
|
|
12
12
|
protected buildSelect: (def: SelectQueryDef) => string;
|
|
13
13
|
constructor(buildSelect: (def: SelectQueryDef) => string);
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Wrap identifier (table name, column name, etc.)
|
|
16
16
|
* MySQL: `name`, MSSQL: [name], PostgreSQL: "name"
|
|
17
17
|
*/
|
|
18
18
|
abstract wrap(name: string): string;
|
|
19
19
|
/**
|
|
20
|
-
* SQL
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Escape for SQL string literals
|
|
21
|
+
* Called when used as a string value in dynamic SQL or system queries
|
|
22
|
+
* e.g.: WHERE schema_name = 'escaped_value'
|
|
23
23
|
*/
|
|
24
24
|
abstract escapeString(value: string): string;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* Value escape (transform to appropriate SQL literal based on type)
|
|
27
27
|
*/
|
|
28
28
|
abstract escapeValue(value: unknown): string;
|
|
29
29
|
render(expr: Expr | WhereExpr): string;
|
|
@@ -5,11 +5,11 @@ import { ExprRendererBase } from "../base/expr-renderer-base";
|
|
|
5
5
|
* MSSQL expression renderer
|
|
6
6
|
*/
|
|
7
7
|
export declare class MssqlExprRenderer extends ExprRendererBase {
|
|
8
|
-
/**
|
|
8
|
+
/** Wrap identifier */
|
|
9
9
|
wrap(name: string): string;
|
|
10
|
-
/** SQL
|
|
10
|
+
/** Escape for SQL string literals (returns without quotes) */
|
|
11
11
|
escapeString(value: string): string;
|
|
12
|
-
/**
|
|
12
|
+
/** Value escape */
|
|
13
13
|
escapeValue(value: unknown): string;
|
|
14
14
|
/** DataType → SQL type */
|
|
15
15
|
renderDataType(dataType: DataType): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mssql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mssql\\mssql-expr-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EAEb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IAGrD,
|
|
1
|
+
{"version":3,"file":"mssql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mssql\\mssql-expr-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { bytes, DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
|
|
2
2
|
import { ExprRendererBase } from "../base/expr-renderer-base.js";
|
|
3
3
|
class MssqlExprRenderer extends ExprRendererBase {
|
|
4
|
-
//#region ==========
|
|
5
|
-
/**
|
|
4
|
+
//#region ========== Utilities (public - also used by QueryBuilder) ==========
|
|
5
|
+
/** Wrap identifier */
|
|
6
6
|
wrap(name) {
|
|
7
7
|
return `[${name.replace(/]/g, "]]")}]`;
|
|
8
8
|
}
|
|
9
|
-
/** SQL
|
|
9
|
+
/** Escape for SQL string literals (returns without quotes) */
|
|
10
10
|
escapeString(value) {
|
|
11
11
|
return value.replace(/'/g, "''");
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
13
|
+
/** Value escape */
|
|
14
14
|
escapeValue(value) {
|
|
15
15
|
if (value == null) {
|
|
16
16
|
return "NULL";
|
|
@@ -160,7 +160,7 @@ class MssqlExprRenderer extends ExprRendererBase {
|
|
|
160
160
|
return `(${expr.conditions.map((c) => this.render(c)).join(" OR ")})`;
|
|
161
161
|
}
|
|
162
162
|
//#endregion
|
|
163
|
-
//#region ==========
|
|
163
|
+
//#region ========== String (null handling) ==========
|
|
164
164
|
concat(expr) {
|
|
165
165
|
const args = expr.args.map((a) => this.render(a)).join(", ");
|
|
166
166
|
return `CONCAT(${args})`;
|
|
@@ -7,9 +7,9 @@ import { MssqlExprRenderer } from "./mssql-expr-renderer";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare class MssqlQueryBuilder extends QueryBuilderBase {
|
|
9
9
|
protected expr: MssqlExprRenderer;
|
|
10
|
-
/**
|
|
10
|
+
/** Render table name */
|
|
11
11
|
protected tableName(obj: QueryDefObjectName): string;
|
|
12
|
-
/** OFFSET...FETCH
|
|
12
|
+
/** Render OFFSET...FETCH clause */
|
|
13
13
|
protected renderLimit(limit: [number, number] | undefined): string;
|
|
14
14
|
protected renderJoin(join: SelectQueryDefJoin): string;
|
|
15
15
|
protected select(def: SelectQueryDef): QueryBuildResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mssql-query-builder.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mssql\\mssql-query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,SAAS,CAAC,IAAI,oBAAwD;IAItE,
|
|
1
|
+
{"version":3,"file":"mssql-query-builder.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mssql\\mssql-query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import { QueryBuilderBase } from "../base/query-builder-base.js";
|
|
|
2
2
|
import { MssqlExprRenderer } from "./mssql-expr-renderer.js";
|
|
3
3
|
class MssqlQueryBuilder extends QueryBuilderBase {
|
|
4
4
|
expr = new MssqlExprRenderer((def) => this.select(def).sql);
|
|
5
|
-
//#region ==========
|
|
6
|
-
/**
|
|
5
|
+
//#region ========== Utilities ==========
|
|
6
|
+
/** Render table name */
|
|
7
7
|
tableName(obj) {
|
|
8
8
|
const parts = [];
|
|
9
9
|
if (obj.database != null) {
|
|
@@ -17,7 +17,7 @@ class MssqlQueryBuilder extends QueryBuilderBase {
|
|
|
17
17
|
parts.push(this.expr.wrap(obj.name));
|
|
18
18
|
return parts.join(".");
|
|
19
19
|
}
|
|
20
|
-
/** OFFSET...FETCH
|
|
20
|
+
/** Render OFFSET...FETCH clause */
|
|
21
21
|
renderLimit(limit) {
|
|
22
22
|
if (limit == null) return "";
|
|
23
23
|
const [offset, count] = limit;
|
|
@@ -388,22 +388,22 @@ END`;
|
|
|
388
388
|
DECLARE @sql NVARCHAR(MAX);
|
|
389
389
|
SET @sql = N'';
|
|
390
390
|
|
|
391
|
-
-- FK
|
|
391
|
+
-- Drop FK constraints
|
|
392
392
|
SELECT @sql = @sql + N'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + N' DROP CONSTRAINT ' + QUOTENAME(name) + N';' + CHAR(13)
|
|
393
393
|
FROM ${db}.sys.foreign_keys
|
|
394
394
|
WHERE OBJECT_SCHEMA_NAME(parent_object_id) = '${schema}';
|
|
395
395
|
|
|
396
|
-
-- Drop
|
|
396
|
+
-- Drop tables
|
|
397
397
|
SELECT @sql = @sql + N'DROP TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + N';' + CHAR(13)
|
|
398
398
|
FROM ${db}.sys.tables
|
|
399
399
|
WHERE SCHEMA_NAME(schema_id) = '${schema}';
|
|
400
400
|
|
|
401
|
-
-- Drop
|
|
401
|
+
-- Drop views
|
|
402
402
|
SELECT @sql = @sql + N'DROP VIEW ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + N';' + CHAR(13)
|
|
403
403
|
FROM ${db}.sys.views
|
|
404
404
|
WHERE schema_id = SCHEMA_ID('${schema}');
|
|
405
405
|
|
|
406
|
-
--
|
|
406
|
+
-- Drop procedures
|
|
407
407
|
SELECT @sql = @sql + N'DROP PROCEDURE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + N';' + CHAR(13)
|
|
408
408
|
FROM ${db}.sys.procedures
|
|
409
409
|
WHERE SCHEMA_NAME(schema_id) = '${schema}';
|
|
@@ -5,9 +5,9 @@ import { ExprRendererBase } from "../base/expr-renderer-base";
|
|
|
5
5
|
* MySQL expression renderer
|
|
6
6
|
*/
|
|
7
7
|
export declare class MysqlExprRenderer extends ExprRendererBase {
|
|
8
|
-
/**
|
|
8
|
+
/** Wrap identifier */
|
|
9
9
|
wrap(name: string): string;
|
|
10
|
-
/** SQL
|
|
10
|
+
/** Escape for SQL string literals (returns without quotes) */
|
|
11
11
|
escapeString(value: string): string;
|
|
12
12
|
/** value escape */
|
|
13
13
|
escapeValue(value: unknown): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mysql\\mysql-expr-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EAEb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IAGrD,
|
|
1
|
+
{"version":3,"file":"mysql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mysql\\mysql-expr-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { bytes, DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
|
|
2
2
|
import { ExprRendererBase } from "../base/expr-renderer-base.js";
|
|
3
3
|
class MysqlExprRenderer extends ExprRendererBase {
|
|
4
|
-
//#region ==========
|
|
5
|
-
/**
|
|
4
|
+
//#region ========== Utilities (public - also used by QueryBuilder) ==========
|
|
5
|
+
/** Wrap identifier */
|
|
6
6
|
wrap(name) {
|
|
7
7
|
return `\`${name.replace(/`/g, "``")}\``;
|
|
8
8
|
}
|
|
9
|
-
/** SQL
|
|
9
|
+
/** Escape for SQL string literals (returns without quotes) */
|
|
10
10
|
escapeString(value) {
|
|
11
11
|
return value.replace(/\\/g, "\\\\").replace(/'/g, "''").replace(/\0/g, "\\0").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t");
|
|
12
12
|
}
|
|
@@ -158,7 +158,7 @@ class MysqlExprRenderer extends ExprRendererBase {
|
|
|
158
158
|
return `(${expr.conditions.map((c) => this.render(c)).join(" OR ")})`;
|
|
159
159
|
}
|
|
160
160
|
//#endregion
|
|
161
|
-
//#region ==========
|
|
161
|
+
//#region ========== String (null handling) ==========
|
|
162
162
|
concat(expr) {
|
|
163
163
|
const args = expr.args.map((a) => `IFNULL(${this.render(a)}, '')`);
|
|
164
164
|
return `CONCAT(${args.join(", ")})`;
|
|
@@ -5,19 +5,19 @@ import { MysqlExprRenderer } from "./mysql-expr-renderer";
|
|
|
5
5
|
/**
|
|
6
6
|
* MySQL QueryBuilder
|
|
7
7
|
*
|
|
8
|
-
* MySQL
|
|
9
|
-
* - OUTPUT
|
|
10
|
-
* - INSERT OUTPUT: LAST_INSERT_ID()
|
|
11
|
-
* - UPDATE/UPSERT OUTPUT:
|
|
12
|
-
* - DELETE OUTPUT:
|
|
13
|
-
* - switchFk:
|
|
14
|
-
* -
|
|
8
|
+
* MySQL specifics:
|
|
9
|
+
* - No OUTPUT support: workaround via multi-statement pattern (INSERT + SET @var + SELECT)
|
|
10
|
+
* - INSERT OUTPUT: uses LAST_INSERT_ID() for AI column, extracts PK from record for non-AI
|
|
11
|
+
* - UPDATE/UPSERT OUTPUT: saves PK to temp table first since WHERE condition may change after UPDATE, then SELECT
|
|
12
|
+
* - DELETE OUTPUT: saves output columns to temp table before delete
|
|
13
|
+
* - switchFk: global setting (SET FOREIGN_KEY_CHECKS), table parameter is ignored
|
|
14
|
+
* - Index is automatically created when adding FK
|
|
15
15
|
*/
|
|
16
16
|
export declare class MysqlQueryBuilder extends QueryBuilderBase {
|
|
17
17
|
protected expr: MysqlExprRenderer;
|
|
18
|
-
/**
|
|
18
|
+
/** Render table name (MySQL: ignores schema, uses database.table only) */
|
|
19
19
|
protected tableName(obj: QueryDefObjectName): string;
|
|
20
|
-
/** LIMIT
|
|
20
|
+
/** Render LIMIT clause */
|
|
21
21
|
protected renderLimit(limit: [number, number] | undefined, top: number | undefined): string;
|
|
22
22
|
protected renderJoin(join: SelectQueryDefJoin): string;
|
|
23
23
|
protected select(def: SelectQueryDef): QueryBuildResult;
|
|
@@ -48,7 +48,7 @@ export declare class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
48
48
|
protected execProc(def: ExecProcQueryDef): QueryBuildResult;
|
|
49
49
|
protected clearSchema(def: ClearSchemaQueryDef): QueryBuildResult;
|
|
50
50
|
protected schemaExists(def: SchemaExistsQueryDef): QueryBuildResult;
|
|
51
|
-
/** MySQL
|
|
51
|
+
/** MySQL only supports global setting (table parameter is ignored) */
|
|
52
52
|
protected switchFk(def: SwitchFkQueryDef): QueryBuildResult;
|
|
53
53
|
}
|
|
54
54
|
//# sourceMappingURL=mysql-query-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql-query-builder.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mysql\\mysql-query-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,SAAS,CAAC,IAAI,oBAAwD;IAItE,
|
|
1
|
+
{"version":3,"file":"mysql-query-builder.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mysql\\mysql-query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,15 +3,15 @@ import { QueryBuilderBase } from "../base/query-builder-base.js";
|
|
|
3
3
|
import { MysqlExprRenderer } from "./mysql-expr-renderer.js";
|
|
4
4
|
class MysqlQueryBuilder extends QueryBuilderBase {
|
|
5
5
|
expr = new MysqlExprRenderer((def) => this.select(def).sql);
|
|
6
|
-
//#region ==========
|
|
7
|
-
/**
|
|
6
|
+
//#region ========== Utilities ==========
|
|
7
|
+
/** Render table name (MySQL: ignores schema, uses database.table only) */
|
|
8
8
|
tableName(obj) {
|
|
9
9
|
if (obj.database != null) {
|
|
10
10
|
return `${this.expr.wrap(obj.database)}.${this.expr.wrap(obj.name)}`;
|
|
11
11
|
}
|
|
12
12
|
return this.expr.wrap(obj.name);
|
|
13
13
|
}
|
|
14
|
-
/** LIMIT
|
|
14
|
+
/** Render LIMIT clause */
|
|
15
15
|
renderLimit(limit, top) {
|
|
16
16
|
if (limit != null) {
|
|
17
17
|
const [offset, count] = limit;
|
|
@@ -472,7 +472,7 @@ SET FOREIGN_KEY_CHECKS = 1`
|
|
|
472
472
|
sql: `SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${dbName}'`
|
|
473
473
|
};
|
|
474
474
|
}
|
|
475
|
-
/** MySQL
|
|
475
|
+
/** MySQL only supports global setting (table parameter is ignored) */
|
|
476
476
|
switchFk(def) {
|
|
477
477
|
return def.enabled ? { sql: "SET FOREIGN_KEY_CHECKS = 1" } : { sql: "SET FOREIGN_KEY_CHECKS = 0" };
|
|
478
478
|
}
|
|
@@ -5,9 +5,9 @@ import { ExprRendererBase } from "../base/expr-renderer-base";
|
|
|
5
5
|
* PostgreSQL expression renderer
|
|
6
6
|
*/
|
|
7
7
|
export declare class PostgresqlExprRenderer extends ExprRendererBase {
|
|
8
|
-
/**
|
|
8
|
+
/** Wrap identifier */
|
|
9
9
|
wrap(name: string): string;
|
|
10
|
-
/** SQL
|
|
10
|
+
/** Escape for SQL string literals (returns without quotes) */
|
|
11
11
|
escapeString(value: string): string;
|
|
12
12
|
/** value escape */
|
|
13
13
|
escapeValue(value: unknown): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\postgresql\\postgresql-expr-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EAEb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAG1D,
|
|
1
|
+
{"version":3,"file":"postgresql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\postgresql\\postgresql-expr-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { bytes, DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
|
|
2
2
|
import { ExprRendererBase } from "../base/expr-renderer-base.js";
|
|
3
3
|
class PostgresqlExprRenderer extends ExprRendererBase {
|
|
4
|
-
//#region ==========
|
|
5
|
-
/**
|
|
4
|
+
//#region ========== Utilities (public - also used by QueryBuilder) ==========
|
|
5
|
+
/** Wrap identifier */
|
|
6
6
|
wrap(name) {
|
|
7
7
|
return `"${name.replace(/"/g, '""')}"`;
|
|
8
8
|
}
|
|
9
|
-
/** SQL
|
|
9
|
+
/** Escape for SQL string literals (returns without quotes) */
|
|
10
10
|
escapeString(value) {
|
|
11
11
|
return value.replace(/'/g, "''");
|
|
12
12
|
}
|
|
@@ -160,7 +160,7 @@ class PostgresqlExprRenderer extends ExprRendererBase {
|
|
|
160
160
|
return `(${expr.conditions.map((c) => this.render(c)).join(" OR ")})`;
|
|
161
161
|
}
|
|
162
162
|
//#endregion
|
|
163
|
-
//#region ==========
|
|
163
|
+
//#region ========== String (null handling) ==========
|
|
164
164
|
concat(expr) {
|
|
165
165
|
const args = expr.args.map((a) => `COALESCE(${this.render(a)}, '')`);
|
|
166
166
|
return args.join(" || ");
|
|
@@ -5,18 +5,18 @@ import { PostgresqlExprRenderer } from "./postgresql-expr-renderer";
|
|
|
5
5
|
/**
|
|
6
6
|
* PostgreSQL QueryBuilder
|
|
7
7
|
*
|
|
8
|
-
* PostgreSQL
|
|
9
|
-
* - OUTPUT: RETURNING
|
|
10
|
-
* - TRUNCATE: RESTART IDENTITY option
|
|
11
|
-
* - UPSERT: CTE
|
|
12
|
-
* - AUTO_INCREMENT: GENERATED BY DEFAULT AS IDENTITY (explicit value
|
|
13
|
-
* -
|
|
8
|
+
* PostgreSQL specifics:
|
|
9
|
+
* - OUTPUT: uses RETURNING clause (native support)
|
|
10
|
+
* - TRUNCATE: RESTART IDENTITY option required
|
|
11
|
+
* - UPSERT: CTE approach (INSERT ... ON CONFLICT only supports single unique constraint)
|
|
12
|
+
* - AUTO_INCREMENT: GENERATED BY DEFAULT AS IDENTITY (allows explicit value assignment)
|
|
13
|
+
* - Separate index generation needed when adding FK (unlike MySQL)
|
|
14
14
|
*/
|
|
15
15
|
export declare class PostgresqlQueryBuilder extends QueryBuilderBase {
|
|
16
16
|
protected expr: PostgresqlExprRenderer;
|
|
17
|
-
/**
|
|
17
|
+
/** Render table name (PostgreSQL: database is handled by connection, uses schema.table only) */
|
|
18
18
|
protected tableName(obj: QueryDefObjectName): string;
|
|
19
|
-
/** LIMIT...OFFSET
|
|
19
|
+
/** Render LIMIT...OFFSET clause */
|
|
20
20
|
protected renderLimit(limit: [number, number] | undefined, top: number | undefined): string;
|
|
21
21
|
protected renderJoin(join: SelectQueryDefJoin): string;
|
|
22
22
|
protected select(def: SelectQueryDef): QueryBuildResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql-query-builder.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\postgresql\\postgresql-query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE;;;;;;;;;GASG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,SAAS,CAAC,IAAI,yBAA6D;IAI3E,
|
|
1
|
+
{"version":3,"file":"postgresql-query-builder.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\postgresql\\postgresql-query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@ import { QueryBuilderBase } from "../base/query-builder-base.js";
|
|
|
2
2
|
import { PostgresqlExprRenderer } from "./postgresql-expr-renderer.js";
|
|
3
3
|
class PostgresqlQueryBuilder extends QueryBuilderBase {
|
|
4
4
|
expr = new PostgresqlExprRenderer((def) => this.select(def).sql);
|
|
5
|
-
//#region ==========
|
|
6
|
-
/**
|
|
5
|
+
//#region ========== Utilities ==========
|
|
6
|
+
/** Render table name (PostgreSQL: database is handled by connection, uses schema.table only) */
|
|
7
7
|
tableName(obj) {
|
|
8
8
|
const schema = obj.schema ?? "public";
|
|
9
9
|
return `${this.expr.wrap(schema)}.${this.expr.wrap(obj.name)}`;
|
|
10
10
|
}
|
|
11
|
-
/** LIMIT...OFFSET
|
|
11
|
+
/** Render LIMIT...OFFSET clause */
|
|
12
12
|
renderLimit(limit, top) {
|
|
13
13
|
if (limit != null) {
|
|
14
14
|
const [offset, count] = limit;
|
|
@@ -415,7 +415,7 @@ DO $$
|
|
|
415
415
|
DECLARE
|
|
416
416
|
r RECORD;
|
|
417
417
|
BEGIN
|
|
418
|
-
-- FK
|
|
418
|
+
-- Drop FK constraints
|
|
419
419
|
FOR r IN (SELECT conname, conrelid::regclass AS tablename
|
|
420
420
|
FROM pg_constraint
|
|
421
421
|
WHERE contype = 'f' AND connamespace = '${schema}'::regnamespace)
|
|
@@ -423,19 +423,19 @@ BEGIN
|
|
|
423
423
|
EXECUTE 'ALTER TABLE ' || r.tablename || ' DROP CONSTRAINT ' || quote_ident(r.conname);
|
|
424
424
|
END LOOP;
|
|
425
425
|
|
|
426
|
-
-- Drop
|
|
426
|
+
-- Drop tables
|
|
427
427
|
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = '${schema}')
|
|
428
428
|
LOOP
|
|
429
429
|
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
|
|
430
430
|
END LOOP;
|
|
431
431
|
|
|
432
|
-
-- Drop
|
|
432
|
+
-- Drop views
|
|
433
433
|
FOR r IN (SELECT viewname FROM pg_views WHERE schemaname = '${schema}')
|
|
434
434
|
LOOP
|
|
435
435
|
EXECUTE 'DROP VIEW IF EXISTS ' || quote_ident(r.viewname) || ' CASCADE';
|
|
436
436
|
END LOOP;
|
|
437
437
|
|
|
438
|
-
--
|
|
438
|
+
-- Drop functions
|
|
439
439
|
FOR r IN (SELECT proname, pg_get_function_identity_arguments(oid) AS args
|
|
440
440
|
FROM pg_proc WHERE pronamespace = '${schema}'::regnamespace)
|
|
441
441
|
LOOP
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Dialect } from "../types/db";
|
|
2
2
|
import type { QueryBuilderBase } from "./base/query-builder-base";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Generate a QueryBuilder instance matching the given Dialect
|
|
5
5
|
*/
|
|
6
6
|
export declare function createQueryBuilder(dialect: Dialect): QueryBuilderBase;
|
|
7
7
|
//# sourceMappingURL=query-builder.d.ts.map
|