@sqlml/ui 0.3.4
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/LICENSE +21 -0
- package/README.md +36 -0
- package/client/dist/assets/index-CpRgSqWF.js +672 -0
- package/client/dist/assets/index-DMcl7wPy.css +1 -0
- package/client/dist/favicon.svg +17 -0
- package/client/dist/index.html +14 -0
- package/package.json +66 -0
- package/server/dist/app.module.d.ts +2 -0
- package/server/dist/app.module.js +55 -0
- package/server/dist/app.module.js.map +1 -0
- package/server/dist/common/entities/workspace.entity.d.ts +42 -0
- package/server/dist/common/entities/workspace.entity.js +48 -0
- package/server/dist/common/entities/workspace.entity.js.map +1 -0
- package/server/dist/core/core.module.d.ts +2 -0
- package/server/dist/core/core.module.js +31 -0
- package/server/dist/core/core.module.js.map +1 -0
- package/server/dist/core/health.controller.d.ts +7 -0
- package/server/dist/core/health.controller.js +37 -0
- package/server/dist/core/health.controller.js.map +1 -0
- package/server/dist/core/root.controller.d.ts +4 -0
- package/server/dist/core/root.controller.js +95 -0
- package/server/dist/core/root.controller.js.map +1 -0
- package/server/dist/core/sqlml.service.d.ts +80 -0
- package/server/dist/core/sqlml.service.js +237 -0
- package/server/dist/core/sqlml.service.js.map +1 -0
- package/server/dist/main.d.ts +1 -0
- package/server/dist/main.js +45 -0
- package/server/dist/main.js.map +1 -0
- package/server/dist/modules/config/config.controller.d.ts +18 -0
- package/server/dist/modules/config/config.controller.js +76 -0
- package/server/dist/modules/config/config.controller.js.map +1 -0
- package/server/dist/modules/config/config.module.d.ts +2 -0
- package/server/dist/modules/config/config.module.js +27 -0
- package/server/dist/modules/config/config.module.js.map +1 -0
- package/server/dist/modules/config/config.service.d.ts +31 -0
- package/server/dist/modules/config/config.service.js +376 -0
- package/server/dist/modules/config/config.service.js.map +1 -0
- package/server/dist/modules/database/database-connection.entity.d.ts +17 -0
- package/server/dist/modules/database/database-connection.entity.js +78 -0
- package/server/dist/modules/database/database-connection.entity.js.map +1 -0
- package/server/dist/modules/database/database.controller.d.ts +103 -0
- package/server/dist/modules/database/database.controller.js +236 -0
- package/server/dist/modules/database/database.controller.js.map +1 -0
- package/server/dist/modules/database/database.module.d.ts +2 -0
- package/server/dist/modules/database/database.module.js +26 -0
- package/server/dist/modules/database/database.module.js.map +1 -0
- package/server/dist/modules/database/database.service.d.ts +102 -0
- package/server/dist/modules/database/database.service.js +415 -0
- package/server/dist/modules/database/database.service.js.map +1 -0
- package/server/dist/modules/migration/migration-history.entity.d.ts +14 -0
- package/server/dist/modules/migration/migration-history.entity.js +66 -0
- package/server/dist/modules/migration/migration-history.entity.js.map +1 -0
- package/server/dist/modules/migration/migration-template.entity.d.ts +10 -0
- package/server/dist/modules/migration/migration-template.entity.js +52 -0
- package/server/dist/modules/migration/migration-template.entity.js.map +1 -0
- package/server/dist/modules/migration/migration.controller.d.ts +60 -0
- package/server/dist/modules/migration/migration.controller.js +159 -0
- package/server/dist/modules/migration/migration.controller.js.map +1 -0
- package/server/dist/modules/migration/migration.module.d.ts +2 -0
- package/server/dist/modules/migration/migration.module.js +27 -0
- package/server/dist/modules/migration/migration.module.js.map +1 -0
- package/server/dist/modules/migration/migration.service.d.ts +65 -0
- package/server/dist/modules/migration/migration.service.js +195 -0
- package/server/dist/modules/migration/migration.service.js.map +1 -0
- package/server/dist/modules/schema/dbml-diff.util.d.ts +42 -0
- package/server/dist/modules/schema/dbml-diff.util.js +193 -0
- package/server/dist/modules/schema/dbml-diff.util.js.map +1 -0
- package/server/dist/modules/schema/schema-snapshot.entity.d.ts +13 -0
- package/server/dist/modules/schema/schema-snapshot.entity.js +62 -0
- package/server/dist/modules/schema/schema-snapshot.entity.js.map +1 -0
- package/server/dist/modules/schema/schema.controller.d.ts +62 -0
- package/server/dist/modules/schema/schema.controller.js +188 -0
- package/server/dist/modules/schema/schema.controller.js.map +1 -0
- package/server/dist/modules/schema/schema.module.d.ts +2 -0
- package/server/dist/modules/schema/schema.module.js +30 -0
- package/server/dist/modules/schema/schema.module.js.map +1 -0
- package/server/dist/modules/schema/schema.service.d.ts +53 -0
- package/server/dist/modules/schema/schema.service.js +276 -0
- package/server/dist/modules/schema/schema.service.js.map +1 -0
- package/server/dist/modules/system/process-info.entity.d.ts +8 -0
- package/server/dist/modules/system/process-info.entity.js +44 -0
- package/server/dist/modules/system/process-info.entity.js.map +1 -0
- package/server/dist/modules/system/system.controller.d.ts +25 -0
- package/server/dist/modules/system/system.controller.js +64 -0
- package/server/dist/modules/system/system.controller.js.map +1 -0
- package/server/dist/modules/system/system.module.d.ts +2 -0
- package/server/dist/modules/system/system.module.js +26 -0
- package/server/dist/modules/system/system.module.js.map +1 -0
- package/server/dist/modules/system/system.service.d.ts +25 -0
- package/server/dist/modules/system/system.service.js +100 -0
- package/server/dist/modules/system/system.service.js.map +1 -0
- package/server/dist/modules/workspace/workspace.controller.d.ts +35 -0
- package/server/dist/modules/workspace/workspace.controller.js +132 -0
- package/server/dist/modules/workspace/workspace.controller.js.map +1 -0
- package/server/dist/modules/workspace/workspace.dto.d.ts +9 -0
- package/server/dist/modules/workspace/workspace.dto.js +39 -0
- package/server/dist/modules/workspace/workspace.dto.js.map +1 -0
- package/server/dist/modules/workspace/workspace.module.d.ts +2 -0
- package/server/dist/modules/workspace/workspace.module.js +26 -0
- package/server/dist/modules/workspace/workspace.module.js.map +1 -0
- package/server/dist/modules/workspace/workspace.service.d.ts +44 -0
- package/server/dist/modules/workspace/workspace.service.js +93 -0
- package/server/dist/modules/workspace/workspace.service.js.map +1 -0
- package/server/dist/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseDbmlTables = parseDbmlTables;
|
|
4
|
+
exports.diffSchemas = diffSchemas;
|
|
5
|
+
function parseColumn(line) {
|
|
6
|
+
const trimmed = line.trim();
|
|
7
|
+
if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('Note')) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const match = trimmed.match(/^"?(\w+)"?\s+([\w]+(?:\([^)]*\))?)\s*(?:\[([^\]]*)\])?\s*$/);
|
|
11
|
+
if (!match) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const [, name, type, settingsStr] = match;
|
|
15
|
+
const column = {
|
|
16
|
+
name,
|
|
17
|
+
type,
|
|
18
|
+
notNull: false,
|
|
19
|
+
primaryKey: false,
|
|
20
|
+
unique: false,
|
|
21
|
+
};
|
|
22
|
+
if (settingsStr) {
|
|
23
|
+
const settings = settingsStr.toLowerCase();
|
|
24
|
+
column.primaryKey =
|
|
25
|
+
settings.includes('pk') || settings.includes('primary key');
|
|
26
|
+
column.notNull =
|
|
27
|
+
settings.includes('not null') || column.primaryKey;
|
|
28
|
+
column.unique = settings.includes('unique');
|
|
29
|
+
const defaultMatch = settingsStr.match(/default:\s*(?:`([^`]*)`|'([^']*)'|"([^"]*)"|(\S+))/i);
|
|
30
|
+
if (defaultMatch) {
|
|
31
|
+
column.default =
|
|
32
|
+
defaultMatch[1] ?? defaultMatch[2] ?? defaultMatch[3] ?? defaultMatch[4];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return column;
|
|
36
|
+
}
|
|
37
|
+
function parseDbmlTables(content) {
|
|
38
|
+
const tables = [];
|
|
39
|
+
const tableRegex = /Table\s+(?:"?(\w+)"?\s*\.\s*)?(?:"?(\w+)"?)\s*(?:as\s+\w+\s*)?\{([^}]*)\}/gi;
|
|
40
|
+
let match;
|
|
41
|
+
while ((match = tableRegex.exec(content)) !== null) {
|
|
42
|
+
const schema = match[1] || undefined;
|
|
43
|
+
const name = match[2];
|
|
44
|
+
const body = match[3];
|
|
45
|
+
const columns = [];
|
|
46
|
+
const lines = body.split('\n');
|
|
47
|
+
for (const line of lines) {
|
|
48
|
+
if (line.trim().toLowerCase().startsWith('indexes')) {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
const column = parseColumn(line);
|
|
52
|
+
if (column) {
|
|
53
|
+
columns.push(column);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
tables.push({ name, schema, columns });
|
|
57
|
+
}
|
|
58
|
+
return tables;
|
|
59
|
+
}
|
|
60
|
+
function tableKey(table) {
|
|
61
|
+
return table.schema ? `${table.schema}.${table.name}` : table.name;
|
|
62
|
+
}
|
|
63
|
+
function diffColumns(oldCol, newCol) {
|
|
64
|
+
const changes = [];
|
|
65
|
+
if (oldCol.type !== newCol.type) {
|
|
66
|
+
changes.push({ field: 'type', from: oldCol.type, to: newCol.type });
|
|
67
|
+
}
|
|
68
|
+
if (oldCol.notNull !== newCol.notNull) {
|
|
69
|
+
changes.push({
|
|
70
|
+
field: 'notNull',
|
|
71
|
+
from: String(oldCol.notNull),
|
|
72
|
+
to: String(newCol.notNull),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (oldCol.primaryKey !== newCol.primaryKey) {
|
|
76
|
+
changes.push({
|
|
77
|
+
field: 'primaryKey',
|
|
78
|
+
from: String(oldCol.primaryKey),
|
|
79
|
+
to: String(newCol.primaryKey),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (oldCol.unique !== newCol.unique) {
|
|
83
|
+
changes.push({
|
|
84
|
+
field: 'unique',
|
|
85
|
+
from: String(oldCol.unique),
|
|
86
|
+
to: String(newCol.unique),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if ((oldCol.default || '') !== (newCol.default || '')) {
|
|
90
|
+
changes.push({
|
|
91
|
+
field: 'default',
|
|
92
|
+
from: oldCol.default || '',
|
|
93
|
+
to: newCol.default || '',
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return changes;
|
|
97
|
+
}
|
|
98
|
+
function diffSchemas(oldContent, newContent) {
|
|
99
|
+
const oldTables = parseDbmlTables(oldContent);
|
|
100
|
+
const newTables = parseDbmlTables(newContent);
|
|
101
|
+
const oldMap = new Map();
|
|
102
|
+
const newMap = new Map();
|
|
103
|
+
for (const t of oldTables) {
|
|
104
|
+
oldMap.set(tableKey(t), t);
|
|
105
|
+
}
|
|
106
|
+
for (const t of newTables) {
|
|
107
|
+
newMap.set(tableKey(t), t);
|
|
108
|
+
}
|
|
109
|
+
const tableDiffs = [];
|
|
110
|
+
let tablesAdded = 0;
|
|
111
|
+
let tablesRemoved = 0;
|
|
112
|
+
let tablesModified = 0;
|
|
113
|
+
for (const [key, table] of newMap) {
|
|
114
|
+
if (!oldMap.has(key)) {
|
|
115
|
+
tableDiffs.push({
|
|
116
|
+
name: table.name,
|
|
117
|
+
schema: table.schema,
|
|
118
|
+
type: 'added',
|
|
119
|
+
columns: table.columns,
|
|
120
|
+
});
|
|
121
|
+
tablesAdded++;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
for (const [key, table] of oldMap) {
|
|
125
|
+
if (!newMap.has(key)) {
|
|
126
|
+
tableDiffs.push({
|
|
127
|
+
name: table.name,
|
|
128
|
+
schema: table.schema,
|
|
129
|
+
type: 'removed',
|
|
130
|
+
columns: table.columns,
|
|
131
|
+
});
|
|
132
|
+
tablesRemoved++;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
for (const [key, oldTable] of oldMap) {
|
|
136
|
+
const newTable = newMap.get(key);
|
|
137
|
+
if (!newTable)
|
|
138
|
+
continue;
|
|
139
|
+
const oldColMap = new Map();
|
|
140
|
+
const newColMap = new Map();
|
|
141
|
+
for (const col of oldTable.columns) {
|
|
142
|
+
oldColMap.set(col.name, col);
|
|
143
|
+
}
|
|
144
|
+
for (const col of newTable.columns) {
|
|
145
|
+
newColMap.set(col.name, col);
|
|
146
|
+
}
|
|
147
|
+
const columnDiffs = [];
|
|
148
|
+
for (const [colName, col] of newColMap) {
|
|
149
|
+
if (!oldColMap.has(colName)) {
|
|
150
|
+
columnDiffs.push({ name: colName, type: 'added', column: col });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
for (const [colName, col] of oldColMap) {
|
|
154
|
+
if (!newColMap.has(colName)) {
|
|
155
|
+
columnDiffs.push({ name: colName, type: 'removed', column: col });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
for (const [colName, oldCol] of oldColMap) {
|
|
159
|
+
const newCol = newColMap.get(colName);
|
|
160
|
+
if (!newCol)
|
|
161
|
+
continue;
|
|
162
|
+
const changes = diffColumns(oldCol, newCol);
|
|
163
|
+
if (changes.length > 0) {
|
|
164
|
+
columnDiffs.push({
|
|
165
|
+
name: colName,
|
|
166
|
+
type: 'modified',
|
|
167
|
+
column: newCol,
|
|
168
|
+
oldColumn: oldCol,
|
|
169
|
+
changes,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (columnDiffs.length > 0) {
|
|
174
|
+
tableDiffs.push({
|
|
175
|
+
name: oldTable.name,
|
|
176
|
+
schema: oldTable.schema,
|
|
177
|
+
type: 'modified',
|
|
178
|
+
columnDiffs,
|
|
179
|
+
});
|
|
180
|
+
tablesModified++;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
tables: tableDiffs,
|
|
185
|
+
hasChanges: tableDiffs.length > 0,
|
|
186
|
+
summary: {
|
|
187
|
+
tablesAdded,
|
|
188
|
+
tablesRemoved,
|
|
189
|
+
tablesModified,
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=dbml-diff.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dbml-diff.util.js","sourceRoot":"","sources":["../../../src/modules/schema/dbml-diff.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Workspace } from '../../common/entities/workspace.entity';
|
|
2
|
+
export declare class SchemaSnapshot {
|
|
3
|
+
id: string;
|
|
4
|
+
workspaceId: string;
|
|
5
|
+
workspace: Workspace;
|
|
6
|
+
version: string;
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
dbmlContent: string;
|
|
10
|
+
checksum: string;
|
|
11
|
+
tableCount: number;
|
|
12
|
+
createdAt: Date;
|
|
13
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SchemaSnapshot = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const workspace_entity_1 = require("../../common/entities/workspace.entity");
|
|
15
|
+
let SchemaSnapshot = class SchemaSnapshot {
|
|
16
|
+
};
|
|
17
|
+
exports.SchemaSnapshot = SchemaSnapshot;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], SchemaSnapshot.prototype, "id", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, typeorm_1.Column)({ name: 'workspace_id' }),
|
|
24
|
+
__metadata("design:type", String)
|
|
25
|
+
], SchemaSnapshot.prototype, "workspaceId", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, typeorm_1.ManyToOne)(() => workspace_entity_1.Workspace, { onDelete: 'CASCADE' }),
|
|
28
|
+
(0, typeorm_1.JoinColumn)({ name: 'workspace_id' }),
|
|
29
|
+
__metadata("design:type", workspace_entity_1.Workspace)
|
|
30
|
+
], SchemaSnapshot.prototype, "workspace", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, typeorm_1.Column)({ length: 50 }),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], SchemaSnapshot.prototype, "version", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, typeorm_1.Column)({ length: 255, nullable: true }),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], SchemaSnapshot.prototype, "name", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], SchemaSnapshot.prototype, "description", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, typeorm_1.Column)({ name: 'dbml_content', type: 'text' }),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], SchemaSnapshot.prototype, "dbmlContent", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, typeorm_1.Column)({ length: 64 }),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], SchemaSnapshot.prototype, "checksum", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, typeorm_1.Column)({ name: 'table_count', type: 'int', default: 0 }),
|
|
53
|
+
__metadata("design:type", Number)
|
|
54
|
+
], SchemaSnapshot.prototype, "tableCount", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, typeorm_1.CreateDateColumn)({ name: 'created_at' }),
|
|
57
|
+
__metadata("design:type", Date)
|
|
58
|
+
], SchemaSnapshot.prototype, "createdAt", void 0);
|
|
59
|
+
exports.SchemaSnapshot = SchemaSnapshot = __decorate([
|
|
60
|
+
(0, typeorm_1.Entity)('schema_snapshots')
|
|
61
|
+
], SchemaSnapshot);
|
|
62
|
+
//# sourceMappingURL=schema-snapshot.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-snapshot.entity.js","sourceRoot":"","sources":["../../../src/modules/schema/schema-snapshot.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOiB;AACjB,6EAAmE;AAG5D,IAAM,cAAc,GAApB,MAAM,cAAc;CA+B1B,CAAA;AA/BY,wCAAc;AAEzB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;0CACpB;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;mDACb;AAIpB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,4BAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACnD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;8BAC1B,4BAAS;iDAAC;AAGrB;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;+CACP;AAGhB;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAC3B;AAGb;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACrB;AAGpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;mDAC3B;AAGpB;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;gDACN;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;kDACtC;AAGnB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC9B,IAAI;iDAAC;yBA9BL,cAAc;IAD1B,IAAA,gBAAM,EAAC,kBAAkB,CAAC;GACd,cAAc,CA+B1B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { SchemaService } from './schema.service';
|
|
2
|
+
export declare class SchemaController {
|
|
3
|
+
private readonly schemaService;
|
|
4
|
+
constructor(schemaService: SchemaService);
|
|
5
|
+
listFiles(): Promise<string[]>;
|
|
6
|
+
getFileContent(filename: string): Promise<{
|
|
7
|
+
filename: string;
|
|
8
|
+
content: string | null;
|
|
9
|
+
}>;
|
|
10
|
+
saveFileContent(filename: string, data: {
|
|
11
|
+
content: string;
|
|
12
|
+
}): Promise<{
|
|
13
|
+
success: boolean;
|
|
14
|
+
filename: string;
|
|
15
|
+
}>;
|
|
16
|
+
createFile(data: {
|
|
17
|
+
filename: string;
|
|
18
|
+
content?: string;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
success: boolean;
|
|
21
|
+
filename: string;
|
|
22
|
+
}>;
|
|
23
|
+
listSnapshots(workspaceId?: string): Promise<import("./schema-snapshot.entity").SchemaSnapshot[]>;
|
|
24
|
+
compareSnapshots(snapshot1: string, snapshot2: string): Promise<{
|
|
25
|
+
hasChanges: boolean;
|
|
26
|
+
snapshot1: import("./schema-snapshot.entity").SchemaSnapshot;
|
|
27
|
+
snapshot2: import("./schema-snapshot.entity").SchemaSnapshot;
|
|
28
|
+
diff: import("./dbml-diff.util").SchemaDiffResult;
|
|
29
|
+
}>;
|
|
30
|
+
getSnapshotDeleteRisk(id: string): Promise<{
|
|
31
|
+
isLatest: boolean;
|
|
32
|
+
hasMigration: boolean;
|
|
33
|
+
migrationName?: string;
|
|
34
|
+
version: string;
|
|
35
|
+
warnings: string[];
|
|
36
|
+
}>;
|
|
37
|
+
getSnapshot(id: string): Promise<import("./schema-snapshot.entity").SchemaSnapshot | null>;
|
|
38
|
+
createSnapshot(data: {
|
|
39
|
+
workspaceId?: string;
|
|
40
|
+
version?: string;
|
|
41
|
+
name?: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
dbmlContent?: string;
|
|
44
|
+
}): Promise<import("./schema-snapshot.entity").SchemaSnapshot>;
|
|
45
|
+
deleteSnapshot(id: string, force?: string): Promise<void>;
|
|
46
|
+
diffSchemas(data: {
|
|
47
|
+
content1?: string;
|
|
48
|
+
content2?: string;
|
|
49
|
+
snapshotId1?: string;
|
|
50
|
+
snapshotId2?: string;
|
|
51
|
+
}): Promise<import("./dbml-diff.util").SchemaDiffResult & {
|
|
52
|
+
oldContent: string;
|
|
53
|
+
newContent: string;
|
|
54
|
+
}>;
|
|
55
|
+
generateEntities(data: {
|
|
56
|
+
schemaName?: string;
|
|
57
|
+
}): Promise<{
|
|
58
|
+
success: boolean;
|
|
59
|
+
output: string;
|
|
60
|
+
error?: string;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SchemaController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const schema_service_1 = require("./schema.service");
|
|
19
|
+
let SchemaController = class SchemaController {
|
|
20
|
+
constructor(schemaService) {
|
|
21
|
+
this.schemaService = schemaService;
|
|
22
|
+
}
|
|
23
|
+
listFiles() {
|
|
24
|
+
return this.schemaService.listSchemaFiles();
|
|
25
|
+
}
|
|
26
|
+
async getFileContent(filename) {
|
|
27
|
+
const content = await this.schemaService.getSchemaContent(filename);
|
|
28
|
+
return { filename, content };
|
|
29
|
+
}
|
|
30
|
+
async saveFileContent(filename, data) {
|
|
31
|
+
await this.schemaService.saveSchemaContent(filename, data.content);
|
|
32
|
+
return { success: true, filename };
|
|
33
|
+
}
|
|
34
|
+
async createFile(data) {
|
|
35
|
+
await this.schemaService.createSchemaFile(data.filename, data.content || '');
|
|
36
|
+
return { success: true, filename: data.filename };
|
|
37
|
+
}
|
|
38
|
+
listSnapshots(workspaceId) {
|
|
39
|
+
return this.schemaService.listSnapshots(workspaceId);
|
|
40
|
+
}
|
|
41
|
+
compareSnapshots(snapshot1, snapshot2) {
|
|
42
|
+
return this.schemaService.compareSnapshots(snapshot1, snapshot2);
|
|
43
|
+
}
|
|
44
|
+
getSnapshotDeleteRisk(id) {
|
|
45
|
+
return this.schemaService.getSnapshotDeleteRisk(id);
|
|
46
|
+
}
|
|
47
|
+
getSnapshot(id) {
|
|
48
|
+
return this.schemaService.getSnapshot(id);
|
|
49
|
+
}
|
|
50
|
+
createSnapshot(data) {
|
|
51
|
+
return this.schemaService.createSnapshot(data);
|
|
52
|
+
}
|
|
53
|
+
deleteSnapshot(id, force) {
|
|
54
|
+
return this.schemaService.deleteSnapshot(id, force === 'true');
|
|
55
|
+
}
|
|
56
|
+
async diffSchemas(data) {
|
|
57
|
+
return this.schemaService.diffSchemas(data);
|
|
58
|
+
}
|
|
59
|
+
async generateEntities(data) {
|
|
60
|
+
return this.schemaService.generateEntities(data.schemaName);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.SchemaController = SchemaController;
|
|
64
|
+
__decorate([
|
|
65
|
+
(0, common_1.Get)('files'),
|
|
66
|
+
(0, swagger_1.ApiOperation)({ summary: 'List schema files' }),
|
|
67
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'List of schema files' }),
|
|
68
|
+
__metadata("design:type", Function),
|
|
69
|
+
__metadata("design:paramtypes", []),
|
|
70
|
+
__metadata("design:returntype", void 0)
|
|
71
|
+
], SchemaController.prototype, "listFiles", null);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, common_1.Get)('files/:filename'),
|
|
74
|
+
(0, swagger_1.ApiOperation)({ summary: 'Get schema file content' }),
|
|
75
|
+
(0, swagger_1.ApiParam)({ name: 'filename', description: 'Schema filename' }),
|
|
76
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Schema content' }),
|
|
77
|
+
__param(0, (0, common_1.Param)('filename')),
|
|
78
|
+
__metadata("design:type", Function),
|
|
79
|
+
__metadata("design:paramtypes", [String]),
|
|
80
|
+
__metadata("design:returntype", Promise)
|
|
81
|
+
], SchemaController.prototype, "getFileContent", null);
|
|
82
|
+
__decorate([
|
|
83
|
+
(0, common_1.Post)('files/:filename'),
|
|
84
|
+
(0, swagger_1.ApiOperation)({ summary: 'Save schema file content' }),
|
|
85
|
+
(0, swagger_1.ApiParam)({ name: 'filename', description: 'Schema filename' }),
|
|
86
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Schema saved' }),
|
|
87
|
+
__param(0, (0, common_1.Param)('filename')),
|
|
88
|
+
__param(1, (0, common_1.Body)()),
|
|
89
|
+
__metadata("design:type", Function),
|
|
90
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
91
|
+
__metadata("design:returntype", Promise)
|
|
92
|
+
], SchemaController.prototype, "saveFileContent", null);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, common_1.Post)('files'),
|
|
95
|
+
(0, swagger_1.ApiOperation)({ summary: 'Create new schema file' }),
|
|
96
|
+
(0, swagger_1.ApiResponse)({ status: 201, description: 'Schema file created' }),
|
|
97
|
+
__param(0, (0, common_1.Body)()),
|
|
98
|
+
__metadata("design:type", Function),
|
|
99
|
+
__metadata("design:paramtypes", [Object]),
|
|
100
|
+
__metadata("design:returntype", Promise)
|
|
101
|
+
], SchemaController.prototype, "createFile", null);
|
|
102
|
+
__decorate([
|
|
103
|
+
(0, common_1.Get)('snapshots'),
|
|
104
|
+
(0, swagger_1.ApiOperation)({ summary: 'List snapshots' }),
|
|
105
|
+
(0, swagger_1.ApiQuery)({ name: 'workspaceId', description: 'Workspace UUID', required: false }),
|
|
106
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'List of snapshots' }),
|
|
107
|
+
__param(0, (0, common_1.Query)('workspaceId')),
|
|
108
|
+
__metadata("design:type", Function),
|
|
109
|
+
__metadata("design:paramtypes", [String]),
|
|
110
|
+
__metadata("design:returntype", void 0)
|
|
111
|
+
], SchemaController.prototype, "listSnapshots", null);
|
|
112
|
+
__decorate([
|
|
113
|
+
(0, common_1.Get)('snapshots/compare'),
|
|
114
|
+
(0, swagger_1.ApiOperation)({ summary: 'Compare two snapshots' }),
|
|
115
|
+
(0, swagger_1.ApiQuery)({ name: 'snapshot1', description: 'First snapshot UUID' }),
|
|
116
|
+
(0, swagger_1.ApiQuery)({ name: 'snapshot2', description: 'Second snapshot UUID' }),
|
|
117
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Comparison result' }),
|
|
118
|
+
__param(0, (0, common_1.Query)('snapshot1')),
|
|
119
|
+
__param(1, (0, common_1.Query)('snapshot2')),
|
|
120
|
+
__metadata("design:type", Function),
|
|
121
|
+
__metadata("design:paramtypes", [String, String]),
|
|
122
|
+
__metadata("design:returntype", void 0)
|
|
123
|
+
], SchemaController.prototype, "compareSnapshots", null);
|
|
124
|
+
__decorate([
|
|
125
|
+
(0, common_1.Get)('snapshots/:id/delete-risk'),
|
|
126
|
+
(0, swagger_1.ApiOperation)({ summary: 'Check risks of deleting a snapshot' }),
|
|
127
|
+
(0, swagger_1.ApiParam)({ name: 'id', description: 'Snapshot UUID' }),
|
|
128
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Delete risk assessment' }),
|
|
129
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
130
|
+
__metadata("design:type", Function),
|
|
131
|
+
__metadata("design:paramtypes", [String]),
|
|
132
|
+
__metadata("design:returntype", void 0)
|
|
133
|
+
], SchemaController.prototype, "getSnapshotDeleteRisk", null);
|
|
134
|
+
__decorate([
|
|
135
|
+
(0, common_1.Get)('snapshots/:id'),
|
|
136
|
+
(0, swagger_1.ApiOperation)({ summary: 'Get snapshot by ID' }),
|
|
137
|
+
(0, swagger_1.ApiParam)({ name: 'id', description: 'Snapshot UUID' }),
|
|
138
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Snapshot details' }),
|
|
139
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
140
|
+
__metadata("design:type", Function),
|
|
141
|
+
__metadata("design:paramtypes", [String]),
|
|
142
|
+
__metadata("design:returntype", void 0)
|
|
143
|
+
], SchemaController.prototype, "getSnapshot", null);
|
|
144
|
+
__decorate([
|
|
145
|
+
(0, common_1.Post)('snapshots'),
|
|
146
|
+
(0, swagger_1.ApiOperation)({ summary: 'Create a snapshot' }),
|
|
147
|
+
(0, swagger_1.ApiResponse)({ status: 201, description: 'Snapshot created' }),
|
|
148
|
+
__param(0, (0, common_1.Body)()),
|
|
149
|
+
__metadata("design:type", Function),
|
|
150
|
+
__metadata("design:paramtypes", [Object]),
|
|
151
|
+
__metadata("design:returntype", void 0)
|
|
152
|
+
], SchemaController.prototype, "createSnapshot", null);
|
|
153
|
+
__decorate([
|
|
154
|
+
(0, common_1.Delete)('snapshots/:id'),
|
|
155
|
+
(0, swagger_1.ApiOperation)({ summary: 'Delete a snapshot' }),
|
|
156
|
+
(0, swagger_1.ApiParam)({ name: 'id', description: 'Snapshot UUID' }),
|
|
157
|
+
(0, swagger_1.ApiQuery)({ name: 'force', description: 'Force delete even if risky', required: false }),
|
|
158
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Snapshot deleted' }),
|
|
159
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
160
|
+
__param(1, (0, common_1.Query)('force')),
|
|
161
|
+
__metadata("design:type", Function),
|
|
162
|
+
__metadata("design:paramtypes", [String, String]),
|
|
163
|
+
__metadata("design:returntype", void 0)
|
|
164
|
+
], SchemaController.prototype, "deleteSnapshot", null);
|
|
165
|
+
__decorate([
|
|
166
|
+
(0, common_1.Post)('diff'),
|
|
167
|
+
(0, swagger_1.ApiOperation)({ summary: 'Diff two DBML schemas' }),
|
|
168
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Schema diff result' }),
|
|
169
|
+
__param(0, (0, common_1.Body)()),
|
|
170
|
+
__metadata("design:type", Function),
|
|
171
|
+
__metadata("design:paramtypes", [Object]),
|
|
172
|
+
__metadata("design:returntype", Promise)
|
|
173
|
+
], SchemaController.prototype, "diffSchemas", null);
|
|
174
|
+
__decorate([
|
|
175
|
+
(0, common_1.Post)('generate'),
|
|
176
|
+
(0, swagger_1.ApiOperation)({ summary: 'Generate entities from schema' }),
|
|
177
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Generation result' }),
|
|
178
|
+
__param(0, (0, common_1.Body)()),
|
|
179
|
+
__metadata("design:type", Function),
|
|
180
|
+
__metadata("design:paramtypes", [Object]),
|
|
181
|
+
__metadata("design:returntype", Promise)
|
|
182
|
+
], SchemaController.prototype, "generateEntities", null);
|
|
183
|
+
exports.SchemaController = SchemaController = __decorate([
|
|
184
|
+
(0, swagger_1.ApiTags)('schema'),
|
|
185
|
+
(0, common_1.Controller)('schema'),
|
|
186
|
+
__metadata("design:paramtypes", [schema_service_1.SchemaService])
|
|
187
|
+
], SchemaController);
|
|
188
|
+
//# sourceMappingURL=schema.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.controller.js","sourceRoot":"","sources":["../../../src/modules/schema/schema.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.SchemaModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
12
|
+
const schema_controller_1 = require("./schema.controller");
|
|
13
|
+
const schema_service_1 = require("./schema.service");
|
|
14
|
+
const schema_snapshot_entity_1 = require("./schema-snapshot.entity");
|
|
15
|
+
const workspace_module_1 = require("../workspace/workspace.module");
|
|
16
|
+
let SchemaModule = class SchemaModule {
|
|
17
|
+
};
|
|
18
|
+
exports.SchemaModule = SchemaModule;
|
|
19
|
+
exports.SchemaModule = SchemaModule = __decorate([
|
|
20
|
+
(0, common_1.Module)({
|
|
21
|
+
imports: [
|
|
22
|
+
typeorm_1.TypeOrmModule.forFeature([schema_snapshot_entity_1.SchemaSnapshot]),
|
|
23
|
+
(0, common_1.forwardRef)(() => workspace_module_1.WorkspaceModule),
|
|
24
|
+
],
|
|
25
|
+
controllers: [schema_controller_1.SchemaController],
|
|
26
|
+
providers: [schema_service_1.SchemaService],
|
|
27
|
+
exports: [schema_service_1.SchemaService],
|
|
28
|
+
})
|
|
29
|
+
], SchemaModule);
|
|
30
|
+
//# sourceMappingURL=schema.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.module.js","sourceRoot":"","sources":["../../../src/modules/schema/schema.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,6CAAgD;AAChD,2DAAuD;AACvD,qDAAiD;AACjD,qEAA0D;AAC1D,oEAAgE;AAWzD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IATxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,uCAAc,CAAC,CAAC;YAC1C,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,kCAAe,CAAC;SAClC;QACD,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAAG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { SchemaSnapshot } from './schema-snapshot.entity';
|
|
3
|
+
import { SqlmlService } from '../../core/sqlml.service';
|
|
4
|
+
import { WorkspaceService } from '../workspace/workspace.service';
|
|
5
|
+
import { SchemaDiffResult } from './dbml-diff.util';
|
|
6
|
+
export declare class SchemaService {
|
|
7
|
+
private snapshotRepository;
|
|
8
|
+
private sqlmlService;
|
|
9
|
+
private workspaceService;
|
|
10
|
+
constructor(snapshotRepository: Repository<SchemaSnapshot>, sqlmlService: SqlmlService, workspaceService: WorkspaceService);
|
|
11
|
+
listSchemaFiles(): Promise<string[]>;
|
|
12
|
+
getSchemaContent(filename: string): Promise<string | null>;
|
|
13
|
+
saveSchemaContent(filename: string, content: string): Promise<void>;
|
|
14
|
+
createSchemaFile(filename: string, content: string): Promise<void>;
|
|
15
|
+
private syncCliSnapshots;
|
|
16
|
+
listSnapshots(workspaceId?: string): Promise<SchemaSnapshot[]>;
|
|
17
|
+
getSnapshot(id: string): Promise<SchemaSnapshot | null>;
|
|
18
|
+
createSnapshot(data: {
|
|
19
|
+
workspaceId?: string;
|
|
20
|
+
version?: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
dbmlContent?: string;
|
|
24
|
+
}): Promise<SchemaSnapshot>;
|
|
25
|
+
getSnapshotDeleteRisk(id: string): Promise<{
|
|
26
|
+
isLatest: boolean;
|
|
27
|
+
hasMigration: boolean;
|
|
28
|
+
migrationName?: string;
|
|
29
|
+
version: string;
|
|
30
|
+
warnings: string[];
|
|
31
|
+
}>;
|
|
32
|
+
deleteSnapshot(id: string, force?: boolean): Promise<void>;
|
|
33
|
+
compareSnapshots(snapshotId1: string, snapshotId2: string): Promise<{
|
|
34
|
+
hasChanges: boolean;
|
|
35
|
+
snapshot1: SchemaSnapshot;
|
|
36
|
+
snapshot2: SchemaSnapshot;
|
|
37
|
+
diff: SchemaDiffResult;
|
|
38
|
+
}>;
|
|
39
|
+
diffSchemas(params: {
|
|
40
|
+
content1?: string;
|
|
41
|
+
content2?: string;
|
|
42
|
+
snapshotId1?: string;
|
|
43
|
+
snapshotId2?: string;
|
|
44
|
+
}): Promise<SchemaDiffResult & {
|
|
45
|
+
oldContent: string;
|
|
46
|
+
newContent: string;
|
|
47
|
+
}>;
|
|
48
|
+
generateEntities(schemaName?: string): Promise<{
|
|
49
|
+
success: boolean;
|
|
50
|
+
output: string;
|
|
51
|
+
error?: string;
|
|
52
|
+
}>;
|
|
53
|
+
}
|