@zyno-io/dk-server-foundation 26.412.2137 → 26.601.2229
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/resources/proto/generated/devconsole/devconsole.js +1 -1
- package/dist/src/app/config.d.ts +1 -0
- package/dist/src/app/config.d.ts.map +1 -1
- package/dist/src/app/config.js +1 -1
- package/dist/src/app/config.js.map +1 -1
- package/dist/src/database/common.d.ts +3 -0
- package/dist/src/database/common.d.ts.map +1 -1
- package/dist/src/database/common.js +46 -1
- package/dist/src/database/common.js.map +1 -1
- package/dist/src/database/factory.d.ts +17 -0
- package/dist/src/database/factory.d.ts.map +1 -0
- package/dist/src/database/factory.js +53 -0
- package/dist/src/database/factory.js.map +1 -0
- package/dist/src/database/index.d.ts +2 -0
- package/dist/src/database/index.d.ts.map +1 -1
- package/dist/src/database/index.js +2 -0
- package/dist/src/database/index.js.map +1 -1
- package/dist/src/database/migration/MigrationResetCommand.d.ts.map +1 -1
- package/dist/src/database/migration/MigrationResetCommand.js +6 -20
- package/dist/src/database/migration/MigrationResetCommand.js.map +1 -1
- package/dist/src/database/migration/MigrationRunCommand.d.ts.map +1 -1
- package/dist/src/database/migration/MigrationRunCommand.js +2 -0
- package/dist/src/database/migration/MigrationRunCommand.js.map +1 -1
- package/dist/src/database/migration/create/MigrationCreateCommand.d.ts +2 -0
- package/dist/src/database/migration/create/MigrationCreateCommand.d.ts.map +1 -1
- package/dist/src/database/migration/create/MigrationCreateCommand.js +36 -11
- package/dist/src/database/migration/create/MigrationCreateCommand.js.map +1 -1
- package/dist/src/database/migration/create/builder-regenerator.d.ts +12 -0
- package/dist/src/database/migration/create/builder-regenerator.d.ts.map +1 -0
- package/dist/src/database/migration/create/builder-regenerator.js +308 -0
- package/dist/src/database/migration/create/builder-regenerator.js.map +1 -0
- package/dist/src/database/migration/create/comparator.js +33 -4
- package/dist/src/database/migration/create/comparator.js.map +1 -1
- package/dist/src/database/migration/create/db-reader.js +63 -9
- package/dist/src/database/migration/create/db-reader.js.map +1 -1
- package/dist/src/database/migration/create/ddl-generator.d.ts.map +1 -1
- package/dist/src/database/migration/create/ddl-generator.js +44 -206
- package/dist/src/database/migration/create/ddl-generator.js.map +1 -1
- package/dist/src/database/migration/create/entity-reader.js +47 -5
- package/dist/src/database/migration/create/entity-reader.js.map +1 -1
- package/dist/src/database/migration/create/file-generator.d.ts +2 -0
- package/dist/src/database/migration/create/file-generator.d.ts.map +1 -1
- package/dist/src/database/migration/create/file-generator.js +7 -2
- package/dist/src/database/migration/create/file-generator.js.map +1 -1
- package/dist/src/database/migration/create/schema-model.d.ts +9 -0
- package/dist/src/database/migration/create/schema-model.d.ts.map +1 -1
- package/dist/src/database/migration/create/schema-model.js +3 -3
- package/dist/src/database/mysql.d.ts.map +1 -1
- package/dist/src/database/mysql.js +5 -11
- package/dist/src/database/mysql.js.map +1 -1
- package/dist/src/database/postgres.d.ts +1 -0
- package/dist/src/database/postgres.d.ts.map +1 -1
- package/dist/src/database/postgres.js +1 -13
- package/dist/src/database/postgres.js.map +1 -1
- package/dist/src/database/schema/AlterBlueprint.d.ts +50 -0
- package/dist/src/database/schema/AlterBlueprint.d.ts.map +1 -0
- package/dist/src/database/schema/AlterBlueprint.js +88 -0
- package/dist/src/database/schema/AlterBlueprint.js.map +1 -0
- package/dist/src/database/schema/Blueprint.d.ts +16 -0
- package/dist/src/database/schema/Blueprint.d.ts.map +1 -0
- package/dist/src/database/schema/Blueprint.js +51 -0
- package/dist/src/database/schema/Blueprint.js.map +1 -0
- package/dist/src/database/schema/BlueprintBase.d.ts +65 -0
- package/dist/src/database/schema/BlueprintBase.d.ts.map +1 -0
- package/dist/src/database/schema/BlueprintBase.js +385 -0
- package/dist/src/database/schema/BlueprintBase.js.map +1 -0
- package/dist/src/database/schema/ColumnDefinition.d.ts +43 -0
- package/dist/src/database/schema/ColumnDefinition.d.ts.map +1 -0
- package/dist/src/database/schema/ColumnDefinition.js +117 -0
- package/dist/src/database/schema/ColumnDefinition.js.map +1 -0
- package/dist/src/database/schema/Schema.d.ts +32 -0
- package/dist/src/database/schema/Schema.d.ts.map +1 -0
- package/dist/src/database/schema/Schema.js +151 -0
- package/dist/src/database/schema/Schema.js.map +1 -0
- package/dist/src/database/schema/grammar/Grammar.d.ts +35 -0
- package/dist/src/database/schema/grammar/Grammar.d.ts.map +1 -0
- package/dist/src/database/schema/grammar/Grammar.js +36 -0
- package/dist/src/database/schema/grammar/Grammar.js.map +1 -0
- package/dist/src/database/schema/grammar/MySQLGrammar.d.ts +29 -0
- package/dist/src/database/schema/grammar/MySQLGrammar.d.ts.map +1 -0
- package/dist/src/database/schema/grammar/MySQLGrammar.js +199 -0
- package/dist/src/database/schema/grammar/MySQLGrammar.js.map +1 -0
- package/dist/src/database/schema/grammar/PostgresGrammar.d.ts +29 -0
- package/dist/src/database/schema/grammar/PostgresGrammar.d.ts.map +1 -0
- package/dist/src/database/schema/grammar/PostgresGrammar.js +233 -0
- package/dist/src/database/schema/grammar/PostgresGrammar.js.map +1 -0
- package/dist/src/database/schema/index.d.ts +9 -0
- package/dist/src/database/schema/index.d.ts.map +1 -0
- package/dist/src/database/schema/index.js +12 -0
- package/dist/src/database/schema/index.js.map +1 -0
- package/dist/src/database/types.d.ts +8 -0
- package/dist/src/database/types.d.ts.map +1 -1
- package/dist/src/database/types.js +3 -1
- package/dist/src/database/types.js.map +1 -1
- package/docs/content/cli.md +4 -1
- package/docs/content/configuration.md +6 -0
- package/docs/content/database.md +137 -0
- package/package.json +1 -1
- package/src/app/config.ts +2 -0
- package/src/database/common.ts +51 -0
- package/src/database/factory.ts +59 -0
- package/src/database/index.ts +2 -0
- package/src/database/migration/MigrationResetCommand.ts +6 -22
- package/src/database/migration/MigrationRunCommand.ts +2 -0
- package/src/database/migration/create/MigrationCreateCommand.ts +42 -12
- package/src/database/migration/create/builder-regenerator.ts +294 -0
- package/src/database/migration/create/comparator.ts +34 -4
- package/src/database/migration/create/db-reader.ts +60 -9
- package/src/database/migration/create/ddl-generator.ts +45 -212
- package/src/database/migration/create/entity-reader.ts +46 -5
- package/src/database/migration/create/file-generator.ts +5 -1
- package/src/database/migration/create/schema-model.ts +6 -0
- package/src/database/mysql.ts +7 -15
- package/src/database/postgres.ts +3 -17
- package/src/database/schema/AlterBlueprint.ts +92 -0
- package/src/database/schema/Blueprint.ts +43 -0
- package/src/database/schema/BlueprintBase.ts +425 -0
- package/src/database/schema/ColumnDefinition.ts +131 -0
- package/src/database/schema/Schema.ts +167 -0
- package/src/database/schema/grammar/Grammar.ts +62 -0
- package/src/database/schema/grammar/MySQLGrammar.ts +206 -0
- package/src/database/schema/grammar/PostgresGrammar.ts +243 -0
- package/src/database/schema/index.ts +8 -0
- package/src/database/types.ts +6 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Schema = void 0;
|
|
4
|
+
const common_1 = require("../common");
|
|
5
|
+
/*@ts-ignore*/
|
|
6
|
+
var { __ΩDialect } = require('../dialect');
|
|
7
|
+
const dialect_1 = require("../dialect");
|
|
8
|
+
/*@ts-ignore*/
|
|
9
|
+
var { __ΩForeignKeySchema } = require('../migration/create/schema-model');
|
|
10
|
+
const AlterBlueprint_1 = require("./AlterBlueprint");
|
|
11
|
+
const Blueprint_1 = require("./Blueprint");
|
|
12
|
+
const Grammar_1 = require("./grammar/Grammar");
|
|
13
|
+
class Schema {
|
|
14
|
+
constructor(db, grammar) {
|
|
15
|
+
this.db = db;
|
|
16
|
+
this.grammar = grammar;
|
|
17
|
+
this.enumTypeRegistry = (Set.Ω = [['&']], new Set());
|
|
18
|
+
this.pendingForeignKeys = [];
|
|
19
|
+
}
|
|
20
|
+
/** Create a new table. Inline FKs are deferred until flush() (auto-called at migration end). */
|
|
21
|
+
async create(name, fn) {
|
|
22
|
+
const blueprint = new Blueprint_1.Blueprint(name, this.grammar);
|
|
23
|
+
fn(blueprint);
|
|
24
|
+
const table = blueprint.build();
|
|
25
|
+
for (const col of table.columns) {
|
|
26
|
+
if (col.type === 'enum' && col.enumTypeName && col.enumValues) {
|
|
27
|
+
await this.ensureEnumType(col.enumTypeName, col.enumValues);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
await this.db.rawExecute(this.grammar.createTable(table));
|
|
31
|
+
for (const idx of table.indexes) {
|
|
32
|
+
await this.db.rawExecute(this.grammar.createIndex(name, idx));
|
|
33
|
+
}
|
|
34
|
+
for (const fk of table.foreignKeys) {
|
|
35
|
+
this.pendingForeignKeys.push({ tableName: name, fk });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Modify an existing table — add/drop/rename/change columns, add/drop indexes & FKs, change PK. */
|
|
39
|
+
async alter(name, fn) {
|
|
40
|
+
const blueprint = new AlterBlueprint_1.AlterBlueprint(name, this.grammar);
|
|
41
|
+
fn(blueprint);
|
|
42
|
+
// Order: drops first (to free up names/refs), then renames, then PG enum prep, then adds/modifies.
|
|
43
|
+
for (const fkName of blueprint.droppedForeignKeys) {
|
|
44
|
+
await this.db.rawExecute(this.grammar.dropForeignKey(name, fkName));
|
|
45
|
+
}
|
|
46
|
+
for (const idxName of blueprint.droppedIndexes) {
|
|
47
|
+
await this.db.rawExecute(this.grammar.dropIndex(name, idxName));
|
|
48
|
+
}
|
|
49
|
+
for (const { from, to } of blueprint.renamedIndexes) {
|
|
50
|
+
await this.db.rawExecute(this.grammar.renameIndex(name, from, to));
|
|
51
|
+
}
|
|
52
|
+
if (blueprint.dropsPrimaryKey) {
|
|
53
|
+
await this.db.rawExecute(this.grammar.dropPrimaryKey(name));
|
|
54
|
+
}
|
|
55
|
+
for (const colName of blueprint.droppedColumns) {
|
|
56
|
+
await this.db.rawExecute(this.grammar.dropColumn(name, colName));
|
|
57
|
+
}
|
|
58
|
+
for (const { from, to } of blueprint.renamedColumns) {
|
|
59
|
+
await this.db.rawExecute(this.grammar.renameColumn(name, from, to));
|
|
60
|
+
}
|
|
61
|
+
// Pre-create PG enum types for any added/modified columns
|
|
62
|
+
for (const col of [...blueprint.addedColumns, ...blueprint.modifiedColumns]) {
|
|
63
|
+
if (col.type === 'enum' && col.enumTypeName && col.enumValues) {
|
|
64
|
+
await this.ensureEnumType(col.enumTypeName, col.enumValues);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
for (const col of blueprint.addedColumns) {
|
|
68
|
+
await this.db.rawExecute(this.grammar.addColumn(name, col));
|
|
69
|
+
}
|
|
70
|
+
for (const col of blueprint.modifiedColumns) {
|
|
71
|
+
for (const stmt of this.grammar.modifyColumn(name, col)) {
|
|
72
|
+
await this.db.rawExecute(stmt);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (blueprint.newPrimaryKey) {
|
|
76
|
+
await this.db.rawExecute(this.grammar.addPrimaryKey(name, blueprint.newPrimaryKey));
|
|
77
|
+
}
|
|
78
|
+
for (const idx of blueprint.addedIndexes) {
|
|
79
|
+
await this.db.rawExecute(this.grammar.createIndex(name, idx));
|
|
80
|
+
}
|
|
81
|
+
// Defer added FKs until flush() so cross-table refs can resolve
|
|
82
|
+
for (const fk of blueprint.addedForeignKeys) {
|
|
83
|
+
this.pendingForeignKeys.push({ tableName: name, fk });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async drop(name) {
|
|
87
|
+
await this.db.rawExecute(this.grammar.dropTable(name));
|
|
88
|
+
}
|
|
89
|
+
async dropIfExists(name) {
|
|
90
|
+
await this.db.rawExecute(this.grammar.dropTableIfExists(name));
|
|
91
|
+
}
|
|
92
|
+
async rename(from, to) {
|
|
93
|
+
await this.db.rawExecute(this.grammar.renameTable(from, to));
|
|
94
|
+
}
|
|
95
|
+
/** Explicitly create a (PG) enum type. Deduped per Schema instance. No-op on MySQL. */
|
|
96
|
+
async enumType(name, values) {
|
|
97
|
+
await this.ensureEnumType(name, values);
|
|
98
|
+
}
|
|
99
|
+
/** Execute raw SQL. Escape hatch for cases the builder does not cover. */
|
|
100
|
+
async raw(sql) {
|
|
101
|
+
await this.db.rawExecute(sql);
|
|
102
|
+
}
|
|
103
|
+
/** Run a block only when running against the given dialect. */
|
|
104
|
+
async onlyOn(dialect, fn) {
|
|
105
|
+
if (this.grammar.dialect === dialect)
|
|
106
|
+
await fn();
|
|
107
|
+
}
|
|
108
|
+
// --- Introspection (for conditional/idempotent migrations) ---
|
|
109
|
+
async hasTable(name) {
|
|
110
|
+
const sql = (0, dialect_1.tableExistsSql)(this.grammar.dialect, name, this.grammar.pgSchema);
|
|
111
|
+
const rows = await this.db.rawQuery(sql);
|
|
112
|
+
return rows.length > 0;
|
|
113
|
+
}
|
|
114
|
+
async hasColumn(table, column) {
|
|
115
|
+
const sql = this.grammar.dialect === 'mysql'
|
|
116
|
+
? `SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '${escapeLiteral(table)}' AND COLUMN_NAME = '${escapeLiteral(column)}'`
|
|
117
|
+
: `SELECT 1 FROM information_schema.columns WHERE table_schema = '${escapeLiteral(this.grammar.pgSchema)}' AND table_name = '${escapeLiteral(table)}' AND column_name = '${escapeLiteral(column)}'`;
|
|
118
|
+
const rows = await this.db.rawQuery(sql);
|
|
119
|
+
return rows.length > 0;
|
|
120
|
+
}
|
|
121
|
+
async hasIndex(table, indexName) {
|
|
122
|
+
const sql = this.grammar.dialect === 'mysql'
|
|
123
|
+
? `SELECT 1 FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '${escapeLiteral(table)}' AND INDEX_NAME = '${escapeLiteral(indexName)}' LIMIT 1`
|
|
124
|
+
: `SELECT 1 FROM pg_indexes WHERE schemaname = '${escapeLiteral(this.grammar.pgSchema)}' AND tablename = '${escapeLiteral(table)}' AND indexname = '${escapeLiteral(indexName)}'`;
|
|
125
|
+
const rows = await this.db.rawQuery(sql);
|
|
126
|
+
return rows.length > 0;
|
|
127
|
+
}
|
|
128
|
+
/** Apply deferred FKs and clear per-cycle state. Called automatically by the migration runner. */
|
|
129
|
+
async flush() {
|
|
130
|
+
for (const { tableName, fk } of this.pendingForeignKeys) {
|
|
131
|
+
await this.db.rawExecute(this.grammar.addForeignKey(tableName, fk));
|
|
132
|
+
}
|
|
133
|
+
this.pendingForeignKeys.length = 0;
|
|
134
|
+
this.enumTypeRegistry.clear();
|
|
135
|
+
}
|
|
136
|
+
async ensureEnumType(name, values) {
|
|
137
|
+
if (this.enumTypeRegistry.has(name))
|
|
138
|
+
return;
|
|
139
|
+
this.enumTypeRegistry.add(name);
|
|
140
|
+
for (const stmt of this.grammar.createEnumType(name, values)) {
|
|
141
|
+
await this.db.rawExecute(stmt);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.Schema = Schema;
|
|
146
|
+
Schema.__type = ['enumTypeRegistry', function () { return (Set.Ω = [['&']], new Set()); }, 'tableName', () => __ΩForeignKeySchema, 'fk', 'pendingForeignKeys', function () { return []; }, () => common_1.BaseDatabase, 'db', () => Grammar_1.Grammar, 'grammar', 'constructor', 'name', () => Blueprint_1.Blueprint, 't', '', 'fn', 'create', () => AlterBlueprint_1.AlterBlueprint, 'alter', 'drop', 'dropIfExists', 'from', 'to', 'rename', 'values', 'enumType', 'sql', 'raw', () => __ΩDialect, 'dialect', 'onlyOn', 'hasTable', 'table', 'column', 'hasColumn', 'indexName', 'hasIndex', 'flush', 'ensureEnumType', 'Schema', '!3!9;>"P&4#n$4%MF3&9;>\'PP7(2):9P7*2+:9"0,P&2-PP7.2/$/021$`02P&2-PP732/$/021$`04P&2-$`05P&2-$`06P&27&28$`09P&2-&F2:$`0;P&2<$`0=Pn>2?P$`/021$`0@P&2-)`0AP&2B&2C)`0DP&2B&2E)`0FP$`0GP&2-&F2:$`0H;5wI'];
|
|
147
|
+
function escapeLiteral(s) {
|
|
148
|
+
return s.replace(/'/g, "''");
|
|
149
|
+
}
|
|
150
|
+
escapeLiteral.__type = ['s', 'escapeLiteral', 'P&2!&/"'];
|
|
151
|
+
//# sourceMappingURL=Schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../../src/database/schema/Schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Dialect } from '../../dialect';
|
|
2
|
+
import { ColumnSchema, ForeignKeySchema, IndexSchema, TableSchema } from '../../migration/create/schema-model';
|
|
3
|
+
export declare abstract class Grammar {
|
|
4
|
+
readonly pgSchema: string;
|
|
5
|
+
abstract readonly dialect: Dialect;
|
|
6
|
+
constructor(pgSchema?: string);
|
|
7
|
+
abstract quote(name: string): string;
|
|
8
|
+
abstract qualifiedTable(name: string): string;
|
|
9
|
+
abstract createTable(table: TableSchema): string;
|
|
10
|
+
abstract createIndex(tableName: string, idx: IndexSchema): string;
|
|
11
|
+
abstract addForeignKey(tableName: string, fk: ForeignKeySchema): string;
|
|
12
|
+
/** Emits any per-enum-type DDL (PG: CREATE TYPE + CREATE CAST). MySQL returns []. */
|
|
13
|
+
abstract createEnumType(typeName: string, values: string[]): string[];
|
|
14
|
+
abstract dropTable(name: string): string;
|
|
15
|
+
abstract dropTableIfExists(name: string): string;
|
|
16
|
+
abstract renameTable(from: string, to: string): string;
|
|
17
|
+
/** Render one column line for use inside CREATE TABLE. */
|
|
18
|
+
abstract columnDef(col: ColumnSchema): string;
|
|
19
|
+
/** Render just the type portion (e.g. `VARCHAR(255)`, `BOOLEAN`, `BIGINT`) without modifiers. */
|
|
20
|
+
abstract columnType(col: ColumnSchema): string;
|
|
21
|
+
abstract addColumn(tableName: string, col: ColumnSchema): string;
|
|
22
|
+
abstract dropColumn(tableName: string, columnName: string): string;
|
|
23
|
+
/** Modify an existing column. PG may emit multiple statements (one per attribute change). */
|
|
24
|
+
abstract modifyColumn(tableName: string, col: ColumnSchema): string[];
|
|
25
|
+
abstract renameColumn(tableName: string, from: string, to: string): string;
|
|
26
|
+
abstract dropIndex(tableName: string, indexName: string): string;
|
|
27
|
+
abstract renameIndex(tableName: string, from: string, to: string): string;
|
|
28
|
+
abstract dropForeignKey(tableName: string, constraintName: string): string;
|
|
29
|
+
abstract addPrimaryKey(tableName: string, columns: string[]): string;
|
|
30
|
+
/** Drop the existing primary key. PG needs the constraint name; defaults to `${table}_pkey`. */
|
|
31
|
+
abstract dropPrimaryKey(tableName: string, constraintName?: string): string;
|
|
32
|
+
}
|
|
33
|
+
export declare function validateFkAction(action: string, dialect: Dialect): string;
|
|
34
|
+
export declare function escapeStr(s: string, dialect?: Dialect): string;
|
|
35
|
+
//# sourceMappingURL=Grammar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grammar.d.ts","sourceRoot":"","sources":["../../../../../src/database/schema/grammar/Grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAE/G,8BAAsB,OAAO;aAGG,QAAQ,EAAE,MAAM;IAF5C,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEP,QAAQ,GAAE,MAAiB;IAEvD,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IACpC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAE7C,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IAChD,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IACjE,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,GAAG,MAAM;IAEvE,qFAAqF;IACrF,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAErE,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IACxC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAEtD,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAE7C,iGAAiG;IACjG,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAI9C,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM;IAChE,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAClE,6FAA6F;IAC7F,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE;IACrE,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAC1E,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAChE,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IACzE,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAC1E,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IACpE,gGAAgG;IAChG,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;CAC9E;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CASzE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAK9D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Grammar = void 0;
|
|
4
|
+
exports.validateFkAction = validateFkAction;
|
|
5
|
+
exports.escapeStr = escapeStr;
|
|
6
|
+
/*@ts-ignore*/
|
|
7
|
+
var { __ΩDialect } = require('../../dialect');
|
|
8
|
+
/*@ts-ignore*/
|
|
9
|
+
var { __ΩTableSchema, __ΩIndexSchema, __ΩForeignKeySchema, __ΩColumnSchema } = require('../../migration/create/schema-model');
|
|
10
|
+
class Grammar {
|
|
11
|
+
constructor(pgSchema = 'public') {
|
|
12
|
+
this.pgSchema = pgSchema;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.Grammar = Grammar;
|
|
16
|
+
Grammar.__type = [() => __ΩDialect, 'dialect', 'pgSchema', () => "public", 'constructor', 'name', 'quote', 'qualifiedTable', () => __ΩTableSchema, 'table', 'createTable', 'tableName', () => __ΩIndexSchema, 'idx', 'createIndex', () => __ΩForeignKeySchema, 'fk', 'addForeignKey', 'typeName', 'values', 'createEnumType', 'dropTable', 'dropTableIfExists', 'from', 'to', 'renameTable', () => __ΩColumnSchema, 'col', 'columnDef', () => __ΩColumnSchema, 'columnType', () => __ΩColumnSchema, 'addColumn', 'columnName', 'dropColumn', () => __ΩColumnSchema, 'modifyColumn', 'renameColumn', 'indexName', 'dropIndex', 'renameIndex', 'constraintName', 'dropForeignKey', 'columns', 'addPrimaryKey', 'dropPrimaryKey', 'Grammar', 'n!3"9=P&2#:9>$"0%P&2&&0\'=P&2&&0(=Pn)2*&0+=P&2,n-2.&0/=P&2,n021&02=P&23&F24&F05=P&2&&06=P&2&&07=P&28&29&0:=Pn;2<&0==Pn>2<&0?=P&2,n@2<&0A=P&2,&2B&0C=P&2,nD2<&F0E=P&2,&28&29&0F=P&2,&2G&0H=P&2,&28&29&0I=P&2,&2J&0K=P&2,&F2L&0M=P&2,&2J8&0N=5wO'];
|
|
17
|
+
const VALID_FK_ACTIONS = new Set(['RESTRICT', 'CASCADE', 'SET NULL', 'SET DEFAULT', 'NO ACTION']);
|
|
18
|
+
function validateFkAction(action, dialect) {
|
|
19
|
+
const upper = action.toUpperCase();
|
|
20
|
+
if (!VALID_FK_ACTIONS.has(upper)) {
|
|
21
|
+
throw new Error(`Invalid foreign key action: '${action}'`);
|
|
22
|
+
}
|
|
23
|
+
if (upper === 'SET DEFAULT' && dialect === 'mysql') {
|
|
24
|
+
throw new Error(`Foreign key action 'SET DEFAULT' is not supported by MySQL/InnoDB`);
|
|
25
|
+
}
|
|
26
|
+
return upper;
|
|
27
|
+
}
|
|
28
|
+
validateFkAction.__type = ['action', () => __ΩDialect, 'dialect', 'validateFkAction', 'P&2!n"2#&/$'];
|
|
29
|
+
function escapeStr(s, dialect) {
|
|
30
|
+
if (dialect === 'mysql') {
|
|
31
|
+
s = s.replace(/\\/g, '\\\\');
|
|
32
|
+
}
|
|
33
|
+
return s.replace(/'/g, "''");
|
|
34
|
+
}
|
|
35
|
+
escapeStr.__type = ['s', () => __ΩDialect, 'dialect', 'escapeStr', 'P&2!n"2#8&/$'];
|
|
36
|
+
//# sourceMappingURL=Grammar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grammar.js","sourceRoot":"","sources":["../../../../../src/database/schema/grammar/Grammar.ts"],"names":[],"mappings":";;;AA6CA,4CASC;AAED,8BAKC;;6BA7DuB,eAAe;;uFACkC,qCAAqC;AAE9G,MAAsB,OAAO;IAGzB,YAA4B,WAAmB,QAAQ;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IAAG,CAAC;;AAH/D,0BAsCC;;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAElG,SAAgB,gBAAgB,CAAC,MAAc,EAAE,OAAgB;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,KAAK,KAAK,aAAa,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;;AAED,SAAgB,SAAS,CAAC,CAAS,EAAE,OAAiB;IAClD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACtB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Dialect } from '../../dialect';
|
|
2
|
+
import { ColumnSchema, ForeignKeySchema, IndexSchema, TableSchema } from '../../migration/create/schema-model';
|
|
3
|
+
import { Grammar } from './Grammar';
|
|
4
|
+
export declare class MySQLGrammar extends Grammar {
|
|
5
|
+
readonly dialect: Dialect;
|
|
6
|
+
quote(name: string): string;
|
|
7
|
+
qualifiedTable(name: string): string;
|
|
8
|
+
createTable(table: TableSchema): string;
|
|
9
|
+
createIndex(tableName: string, idx: IndexSchema): string;
|
|
10
|
+
addForeignKey(tableName: string, fk: ForeignKeySchema): string;
|
|
11
|
+
createEnumType(_typeName: string, _values: string[]): string[];
|
|
12
|
+
dropTable(name: string): string;
|
|
13
|
+
dropTableIfExists(name: string): string;
|
|
14
|
+
renameTable(from: string, to: string): string;
|
|
15
|
+
addColumn(tableName: string, col: ColumnSchema): string;
|
|
16
|
+
private positionClause;
|
|
17
|
+
dropColumn(tableName: string, columnName: string): string;
|
|
18
|
+
modifyColumn(tableName: string, col: ColumnSchema): string[];
|
|
19
|
+
renameColumn(tableName: string, from: string, to: string): string;
|
|
20
|
+
dropIndex(tableName: string, indexName: string): string;
|
|
21
|
+
renameIndex(tableName: string, from: string, to: string): string;
|
|
22
|
+
dropForeignKey(tableName: string, constraintName: string): string;
|
|
23
|
+
addPrimaryKey(tableName: string, columns: string[]): string;
|
|
24
|
+
dropPrimaryKey(tableName: string, _constraintName?: string): string;
|
|
25
|
+
columnDef(col: ColumnSchema): string;
|
|
26
|
+
columnType(col: ColumnSchema): string;
|
|
27
|
+
private typeDef;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=MySQLGrammar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MySQLGrammar.d.ts","sourceRoot":"","sources":["../../../../../src/database/schema/grammar/MySQLGrammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAAa,OAAO,EAAoB,MAAM,WAAW,CAAC;AAEjE,qBAAa,YAAa,SAAQ,OAAO;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAW;IAEpC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIpC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IAgBvC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAOxD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,GAAG,MAAM;IAa9D,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAI9D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIvC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAI7C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM;IAIvD,OAAO,CAAC,cAAc;IAMtB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIzD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE;IAI5D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAIjE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAIvD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAIhE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAIjE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAM3D,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM;IAInE,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAoBpC,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAIrC,OAAO,CAAC,OAAO;CAuDlB"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MySQLGrammar = void 0;
|
|
4
|
+
function __assignType(fn, args) {
|
|
5
|
+
fn.__type = args;
|
|
6
|
+
return fn;
|
|
7
|
+
}
|
|
8
|
+
/*@ts-ignore*/
|
|
9
|
+
var { __ΩDialect } = require('../../dialect');
|
|
10
|
+
const dialect_1 = require("../../dialect");
|
|
11
|
+
/*@ts-ignore*/
|
|
12
|
+
var { __ΩTableSchema, __ΩIndexSchema, __ΩForeignKeySchema, __ΩColumnSchema } = require('../../migration/create/schema-model');
|
|
13
|
+
const Grammar_1 = require("./Grammar");
|
|
14
|
+
class MySQLGrammar extends Grammar_1.Grammar {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.dialect = 'mysql';
|
|
18
|
+
}
|
|
19
|
+
quote(name) {
|
|
20
|
+
return (0, dialect_1.quoteId)('mysql', name);
|
|
21
|
+
}
|
|
22
|
+
qualifiedTable(name) {
|
|
23
|
+
return this.quote(name);
|
|
24
|
+
}
|
|
25
|
+
createTable(table) {
|
|
26
|
+
const lines = [];
|
|
27
|
+
const pkCols = table.columns.filter(__assignType(c => c.isPrimaryKey, ['c', '', 'P"2!"/"'])).map(__assignType(c => c.name, ['c', '', 'P"2!"/"']));
|
|
28
|
+
for (const col of table.columns) {
|
|
29
|
+
lines.push(` ${this.columnDef(col)}`);
|
|
30
|
+
}
|
|
31
|
+
if (pkCols.length > 0) {
|
|
32
|
+
const quoted = pkCols.map(__assignType(c => this.quote(c), ['c', '', 'P"2!"/"'])).join(', ');
|
|
33
|
+
lines.push(` PRIMARY KEY (${quoted})`);
|
|
34
|
+
}
|
|
35
|
+
return `CREATE TABLE ${this.qualifiedTable(table.name)} (\n${lines.join(',\n')}\n)`;
|
|
36
|
+
}
|
|
37
|
+
createIndex(tableName, idx) {
|
|
38
|
+
const unique = idx.unique ? 'UNIQUE ' : '';
|
|
39
|
+
const spatial = idx.spatial ? 'SPATIAL ' : '';
|
|
40
|
+
const cols = idx.columns.map(__assignType(c => this.quote(c), ['c', '', 'P"2!"/"'])).join(', ');
|
|
41
|
+
return `CREATE ${spatial}${unique}INDEX ${this.quote(idx.name)} ON ${this.qualifiedTable(tableName)} (${cols})`;
|
|
42
|
+
}
|
|
43
|
+
addForeignKey(tableName, fk) {
|
|
44
|
+
const cols = fk.columns.map(__assignType(c => this.quote(c), ['c', '', 'P"2!"/"'])).join(', ');
|
|
45
|
+
const refCols = fk.referencedColumns.map(__assignType(c => this.quote(c), ['c', '', 'P"2!"/"'])).join(', ');
|
|
46
|
+
const onDelete = (0, Grammar_1.validateFkAction)(fk.onDelete, this.dialect);
|
|
47
|
+
const onUpdate = (0, Grammar_1.validateFkAction)(fk.onUpdate, this.dialect);
|
|
48
|
+
return (`ALTER TABLE ${this.qualifiedTable(tableName)} ADD CONSTRAINT ${this.quote(fk.name)} ` +
|
|
49
|
+
`FOREIGN KEY (${cols}) REFERENCES ${this.qualifiedTable(fk.referencedTable)} (${refCols}) ` +
|
|
50
|
+
`ON DELETE ${onDelete} ON UPDATE ${onUpdate}`);
|
|
51
|
+
}
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
53
|
+
createEnumType(_typeName, _values) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
dropTable(name) {
|
|
57
|
+
return `DROP TABLE ${this.qualifiedTable(name)}`;
|
|
58
|
+
}
|
|
59
|
+
dropTableIfExists(name) {
|
|
60
|
+
return `DROP TABLE IF EXISTS ${this.qualifiedTable(name)}`;
|
|
61
|
+
}
|
|
62
|
+
renameTable(from, to) {
|
|
63
|
+
return `RENAME TABLE ${this.qualifiedTable(from)} TO ${this.qualifiedTable(to)}`;
|
|
64
|
+
}
|
|
65
|
+
addColumn(tableName, col) {
|
|
66
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} ADD COLUMN ${this.columnDef(col)}${this.positionClause(col)}`;
|
|
67
|
+
}
|
|
68
|
+
positionClause(col) {
|
|
69
|
+
if (col.afterColumn === null)
|
|
70
|
+
return ' FIRST';
|
|
71
|
+
if (typeof col.afterColumn === 'string')
|
|
72
|
+
return ` AFTER ${this.quote(col.afterColumn)}`;
|
|
73
|
+
return '';
|
|
74
|
+
}
|
|
75
|
+
dropColumn(tableName, columnName) {
|
|
76
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} DROP COLUMN ${this.quote(columnName)}`;
|
|
77
|
+
}
|
|
78
|
+
modifyColumn(tableName, col) {
|
|
79
|
+
return [`ALTER TABLE ${this.qualifiedTable(tableName)} MODIFY COLUMN ${this.columnDef(col)}`];
|
|
80
|
+
}
|
|
81
|
+
renameColumn(tableName, from, to) {
|
|
82
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} RENAME COLUMN ${this.quote(from)} TO ${this.quote(to)}`;
|
|
83
|
+
}
|
|
84
|
+
dropIndex(tableName, indexName) {
|
|
85
|
+
return `DROP INDEX ${this.quote(indexName)} ON ${this.qualifiedTable(tableName)}`;
|
|
86
|
+
}
|
|
87
|
+
renameIndex(tableName, from, to) {
|
|
88
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} RENAME INDEX ${this.quote(from)} TO ${this.quote(to)}`;
|
|
89
|
+
}
|
|
90
|
+
dropForeignKey(tableName, constraintName) {
|
|
91
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} DROP FOREIGN KEY ${this.quote(constraintName)}`;
|
|
92
|
+
}
|
|
93
|
+
addPrimaryKey(tableName, columns) {
|
|
94
|
+
const cols = columns.map(__assignType(c => this.quote(c), ['c', '', 'P"2!"/"'])).join(', ');
|
|
95
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} ADD PRIMARY KEY (${cols})`;
|
|
96
|
+
}
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
98
|
+
dropPrimaryKey(tableName, _constraintName) {
|
|
99
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} DROP PRIMARY KEY`;
|
|
100
|
+
}
|
|
101
|
+
columnDef(col) {
|
|
102
|
+
let def = `${this.quote(col.name)} ${this.typeDef(col)}`;
|
|
103
|
+
if (col.unsigned)
|
|
104
|
+
def += ' UNSIGNED';
|
|
105
|
+
if (!col.nullable)
|
|
106
|
+
def += ' NOT NULL';
|
|
107
|
+
if (col.autoIncrement)
|
|
108
|
+
def += ' AUTO_INCREMENT';
|
|
109
|
+
if (col.defaultExpression) {
|
|
110
|
+
def += ` DEFAULT ${col.defaultExpression}`;
|
|
111
|
+
}
|
|
112
|
+
else if (col.defaultValue !== undefined) {
|
|
113
|
+
def += ` DEFAULT ${renderMysqlDefault(col)}`;
|
|
114
|
+
}
|
|
115
|
+
if (col.onUpdateExpression) {
|
|
116
|
+
def += ` ON UPDATE ${col.onUpdateExpression}`;
|
|
117
|
+
}
|
|
118
|
+
return def;
|
|
119
|
+
}
|
|
120
|
+
columnType(col) {
|
|
121
|
+
return this.typeDef(col);
|
|
122
|
+
}
|
|
123
|
+
typeDef(col) {
|
|
124
|
+
switch (col.type) {
|
|
125
|
+
case 'varchar':
|
|
126
|
+
return `VARCHAR(${col.size || 255})`;
|
|
127
|
+
case 'char':
|
|
128
|
+
return `CHAR(${col.size || 1})`;
|
|
129
|
+
case 'tinyint':
|
|
130
|
+
return col.size === 1 ? 'TINYINT(1)' : 'TINYINT';
|
|
131
|
+
case 'smallint':
|
|
132
|
+
return 'SMALLINT';
|
|
133
|
+
case 'int':
|
|
134
|
+
return 'INT';
|
|
135
|
+
case 'bigint':
|
|
136
|
+
return 'BIGINT';
|
|
137
|
+
case 'float':
|
|
138
|
+
return 'FLOAT';
|
|
139
|
+
case 'double':
|
|
140
|
+
return 'DOUBLE';
|
|
141
|
+
case 'decimal':
|
|
142
|
+
if (col.size === undefined)
|
|
143
|
+
return 'DECIMAL';
|
|
144
|
+
return col.scale !== undefined ? `DECIMAL(${col.size},${col.scale})` : `DECIMAL(${col.size})`;
|
|
145
|
+
case 'boolean':
|
|
146
|
+
return 'TINYINT(1)';
|
|
147
|
+
case 'date':
|
|
148
|
+
return 'DATE';
|
|
149
|
+
case 'datetime':
|
|
150
|
+
return 'DATETIME';
|
|
151
|
+
case 'timestamp':
|
|
152
|
+
return 'TIMESTAMP';
|
|
153
|
+
case 'text':
|
|
154
|
+
return 'TEXT';
|
|
155
|
+
case 'tinytext':
|
|
156
|
+
return 'TINYTEXT';
|
|
157
|
+
case 'mediumtext':
|
|
158
|
+
return 'MEDIUMTEXT';
|
|
159
|
+
case 'longtext':
|
|
160
|
+
return 'LONGTEXT';
|
|
161
|
+
case 'binary':
|
|
162
|
+
return `BINARY(${col.size || 16})`;
|
|
163
|
+
case 'blob':
|
|
164
|
+
return 'BLOB';
|
|
165
|
+
case 'json':
|
|
166
|
+
return 'JSON';
|
|
167
|
+
case 'point':
|
|
168
|
+
return 'POINT';
|
|
169
|
+
case 'enum':
|
|
170
|
+
if (col.enumValues) {
|
|
171
|
+
const vals = col.enumValues.map(__assignType(v => `'${(0, Grammar_1.escapeStr)(v, 'mysql')}'`, ['v', '', 'P"2!"/"'])).join(',');
|
|
172
|
+
return `ENUM(${vals})`;
|
|
173
|
+
}
|
|
174
|
+
return 'VARCHAR(255)';
|
|
175
|
+
default:
|
|
176
|
+
return col.type.toUpperCase();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.MySQLGrammar = MySQLGrammar;
|
|
181
|
+
MySQLGrammar.__type = [() => Grammar_1.Grammar, () => __ΩDialect, 'dialect', function () { return 'mysql'; }, 'name', 'quote', 'qualifiedTable', () => __ΩTableSchema, 'table', 'createTable', 'tableName', () => __ΩIndexSchema, 'idx', 'createIndex', () => __ΩForeignKeySchema, 'fk', 'addForeignKey', '_typeName', '_values', 'createEnumType', 'dropTable', 'dropTableIfExists', 'from', 'to', 'renameTable', () => __ΩColumnSchema, 'col', 'addColumn', () => __ΩColumnSchema, 'positionClause', 'columnName', 'dropColumn', () => __ΩColumnSchema, 'modifyColumn', 'renameColumn', 'indexName', 'dropIndex', 'renameIndex', 'constraintName', 'dropForeignKey', 'columns', 'addPrimaryKey', '_constraintName', 'dropPrimaryKey', () => __ΩColumnSchema, 'columnDef', () => __ΩColumnSchema, 'columnType', () => __ΩColumnSchema, 'typeDef', 'MySQLGrammar', 'P7!n"3#9>$P&2%&0&P&2%&0\'Pn(2)&0*P&2+n,2-&0.P&2+n/20&01P&22&F23&F04P&2%&05P&2%&06P&27&28&09P&2+n:2;&0<Pn=2;&0>;P&2+&2?&0@P&2+nA2;&F0BP&2+&27&28&0CP&2+&2D&0EP&2+&27&28&0FP&2+&2G&0HP&2+&F2I&0JP&2+&2K8&0LPnM2;&0NPnO2;&0PPnQ2;&0R;5wS'];
|
|
182
|
+
const NUMERIC_TYPES = new Set(['tinyint', 'smallint', 'int', 'integer', 'bigint', 'float', 'double', 'decimal', 'numeric']);
|
|
183
|
+
function renderMysqlDefault(col) {
|
|
184
|
+
const v = col.defaultValue;
|
|
185
|
+
if (v === null)
|
|
186
|
+
return 'NULL';
|
|
187
|
+
if (typeof v === 'boolean')
|
|
188
|
+
return v ? '1' : '0';
|
|
189
|
+
// tinyint(1)/boolean — entity-reader may pre-format as '1'/'0'/'true'/'false'
|
|
190
|
+
if (col.type === 'boolean' || (col.type === 'tinyint' && col.size === 1)) {
|
|
191
|
+
const s = String(v).toLowerCase();
|
|
192
|
+
return s === 'true' || s === '1' ? '1' : '0';
|
|
193
|
+
}
|
|
194
|
+
if (typeof v === 'number' || NUMERIC_TYPES.has(col.type))
|
|
195
|
+
return String(v);
|
|
196
|
+
return `'${(0, Grammar_1.escapeStr)(String(v), 'mysql')}'`;
|
|
197
|
+
}
|
|
198
|
+
renderMysqlDefault.__type = [() => __ΩColumnSchema, 'col', 'renderMysqlDefault', 'Pn!2"&/#'];
|
|
199
|
+
//# sourceMappingURL=MySQLGrammar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MySQLGrammar.js","sourceRoot":"","sources":["../../../../../src/database/schema/grammar/MySQLGrammar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Dialect } from '../../dialect';
|
|
2
|
+
import { ColumnSchema, ForeignKeySchema, IndexSchema, TableSchema } from '../../migration/create/schema-model';
|
|
3
|
+
import { Grammar } from './Grammar';
|
|
4
|
+
export declare class PostgresGrammar extends Grammar {
|
|
5
|
+
readonly dialect: Dialect;
|
|
6
|
+
quote(name: string): string;
|
|
7
|
+
qualifiedTable(name: string): string;
|
|
8
|
+
qualifiedType(typeName: string): string;
|
|
9
|
+
createTable(table: TableSchema): string;
|
|
10
|
+
createIndex(tableName: string, idx: IndexSchema): string;
|
|
11
|
+
addForeignKey(tableName: string, fk: ForeignKeySchema): string;
|
|
12
|
+
createEnumType(typeName: string, values: string[]): string[];
|
|
13
|
+
dropTable(name: string): string;
|
|
14
|
+
dropTableIfExists(name: string): string;
|
|
15
|
+
renameTable(from: string, to: string): string;
|
|
16
|
+
addColumn(tableName: string, col: ColumnSchema): string;
|
|
17
|
+
dropColumn(tableName: string, columnName: string): string;
|
|
18
|
+
modifyColumn(tableName: string, col: ColumnSchema): string[];
|
|
19
|
+
renameColumn(tableName: string, from: string, to: string): string;
|
|
20
|
+
dropIndex(tableName: string, indexName: string): string;
|
|
21
|
+
renameIndex(_tableName: string, from: string, to: string): string;
|
|
22
|
+
dropForeignKey(tableName: string, constraintName: string): string;
|
|
23
|
+
addPrimaryKey(tableName: string, columns: string[]): string;
|
|
24
|
+
dropPrimaryKey(tableName: string, constraintName?: string): string;
|
|
25
|
+
columnType(col: ColumnSchema): string;
|
|
26
|
+
columnDef(col: ColumnSchema): string;
|
|
27
|
+
private typeDef;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=PostgresGrammar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresGrammar.d.ts","sourceRoot":"","sources":["../../../../../src/database/schema/grammar/PostgresGrammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAAa,OAAO,EAAoB,MAAM,WAAW,CAAC;AAEjE,qBAAa,eAAgB,SAAQ,OAAO;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAc;IAEvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOpC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOvC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IAgBvC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAOxD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,GAAG,MAAM;IAY9D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAmB5D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIvC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAI7C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM;IAIvD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIzD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE;IAkB5D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAIjE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IASvD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAMjE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAIjE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAK3D,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IAKlE,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAIrC,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAuBpC,OAAO,CAAC,OAAO;CAmDlB"}
|