@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.
Files changed (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -0
  3. package/client/dist/assets/index-CpRgSqWF.js +672 -0
  4. package/client/dist/assets/index-DMcl7wPy.css +1 -0
  5. package/client/dist/favicon.svg +17 -0
  6. package/client/dist/index.html +14 -0
  7. package/package.json +66 -0
  8. package/server/dist/app.module.d.ts +2 -0
  9. package/server/dist/app.module.js +55 -0
  10. package/server/dist/app.module.js.map +1 -0
  11. package/server/dist/common/entities/workspace.entity.d.ts +42 -0
  12. package/server/dist/common/entities/workspace.entity.js +48 -0
  13. package/server/dist/common/entities/workspace.entity.js.map +1 -0
  14. package/server/dist/core/core.module.d.ts +2 -0
  15. package/server/dist/core/core.module.js +31 -0
  16. package/server/dist/core/core.module.js.map +1 -0
  17. package/server/dist/core/health.controller.d.ts +7 -0
  18. package/server/dist/core/health.controller.js +37 -0
  19. package/server/dist/core/health.controller.js.map +1 -0
  20. package/server/dist/core/root.controller.d.ts +4 -0
  21. package/server/dist/core/root.controller.js +95 -0
  22. package/server/dist/core/root.controller.js.map +1 -0
  23. package/server/dist/core/sqlml.service.d.ts +80 -0
  24. package/server/dist/core/sqlml.service.js +237 -0
  25. package/server/dist/core/sqlml.service.js.map +1 -0
  26. package/server/dist/main.d.ts +1 -0
  27. package/server/dist/main.js +45 -0
  28. package/server/dist/main.js.map +1 -0
  29. package/server/dist/modules/config/config.controller.d.ts +18 -0
  30. package/server/dist/modules/config/config.controller.js +76 -0
  31. package/server/dist/modules/config/config.controller.js.map +1 -0
  32. package/server/dist/modules/config/config.module.d.ts +2 -0
  33. package/server/dist/modules/config/config.module.js +27 -0
  34. package/server/dist/modules/config/config.module.js.map +1 -0
  35. package/server/dist/modules/config/config.service.d.ts +31 -0
  36. package/server/dist/modules/config/config.service.js +376 -0
  37. package/server/dist/modules/config/config.service.js.map +1 -0
  38. package/server/dist/modules/database/database-connection.entity.d.ts +17 -0
  39. package/server/dist/modules/database/database-connection.entity.js +78 -0
  40. package/server/dist/modules/database/database-connection.entity.js.map +1 -0
  41. package/server/dist/modules/database/database.controller.d.ts +103 -0
  42. package/server/dist/modules/database/database.controller.js +236 -0
  43. package/server/dist/modules/database/database.controller.js.map +1 -0
  44. package/server/dist/modules/database/database.module.d.ts +2 -0
  45. package/server/dist/modules/database/database.module.js +26 -0
  46. package/server/dist/modules/database/database.module.js.map +1 -0
  47. package/server/dist/modules/database/database.service.d.ts +102 -0
  48. package/server/dist/modules/database/database.service.js +415 -0
  49. package/server/dist/modules/database/database.service.js.map +1 -0
  50. package/server/dist/modules/migration/migration-history.entity.d.ts +14 -0
  51. package/server/dist/modules/migration/migration-history.entity.js +66 -0
  52. package/server/dist/modules/migration/migration-history.entity.js.map +1 -0
  53. package/server/dist/modules/migration/migration-template.entity.d.ts +10 -0
  54. package/server/dist/modules/migration/migration-template.entity.js +52 -0
  55. package/server/dist/modules/migration/migration-template.entity.js.map +1 -0
  56. package/server/dist/modules/migration/migration.controller.d.ts +60 -0
  57. package/server/dist/modules/migration/migration.controller.js +159 -0
  58. package/server/dist/modules/migration/migration.controller.js.map +1 -0
  59. package/server/dist/modules/migration/migration.module.d.ts +2 -0
  60. package/server/dist/modules/migration/migration.module.js +27 -0
  61. package/server/dist/modules/migration/migration.module.js.map +1 -0
  62. package/server/dist/modules/migration/migration.service.d.ts +65 -0
  63. package/server/dist/modules/migration/migration.service.js +195 -0
  64. package/server/dist/modules/migration/migration.service.js.map +1 -0
  65. package/server/dist/modules/schema/dbml-diff.util.d.ts +42 -0
  66. package/server/dist/modules/schema/dbml-diff.util.js +193 -0
  67. package/server/dist/modules/schema/dbml-diff.util.js.map +1 -0
  68. package/server/dist/modules/schema/schema-snapshot.entity.d.ts +13 -0
  69. package/server/dist/modules/schema/schema-snapshot.entity.js +62 -0
  70. package/server/dist/modules/schema/schema-snapshot.entity.js.map +1 -0
  71. package/server/dist/modules/schema/schema.controller.d.ts +62 -0
  72. package/server/dist/modules/schema/schema.controller.js +188 -0
  73. package/server/dist/modules/schema/schema.controller.js.map +1 -0
  74. package/server/dist/modules/schema/schema.module.d.ts +2 -0
  75. package/server/dist/modules/schema/schema.module.js +30 -0
  76. package/server/dist/modules/schema/schema.module.js.map +1 -0
  77. package/server/dist/modules/schema/schema.service.d.ts +53 -0
  78. package/server/dist/modules/schema/schema.service.js +276 -0
  79. package/server/dist/modules/schema/schema.service.js.map +1 -0
  80. package/server/dist/modules/system/process-info.entity.d.ts +8 -0
  81. package/server/dist/modules/system/process-info.entity.js +44 -0
  82. package/server/dist/modules/system/process-info.entity.js.map +1 -0
  83. package/server/dist/modules/system/system.controller.d.ts +25 -0
  84. package/server/dist/modules/system/system.controller.js +64 -0
  85. package/server/dist/modules/system/system.controller.js.map +1 -0
  86. package/server/dist/modules/system/system.module.d.ts +2 -0
  87. package/server/dist/modules/system/system.module.js +26 -0
  88. package/server/dist/modules/system/system.module.js.map +1 -0
  89. package/server/dist/modules/system/system.service.d.ts +25 -0
  90. package/server/dist/modules/system/system.service.js +100 -0
  91. package/server/dist/modules/system/system.service.js.map +1 -0
  92. package/server/dist/modules/workspace/workspace.controller.d.ts +35 -0
  93. package/server/dist/modules/workspace/workspace.controller.js +132 -0
  94. package/server/dist/modules/workspace/workspace.controller.js.map +1 -0
  95. package/server/dist/modules/workspace/workspace.dto.d.ts +9 -0
  96. package/server/dist/modules/workspace/workspace.dto.js +39 -0
  97. package/server/dist/modules/workspace/workspace.dto.js.map +1 -0
  98. package/server/dist/modules/workspace/workspace.module.d.ts +2 -0
  99. package/server/dist/modules/workspace/workspace.module.js +26 -0
  100. package/server/dist/modules/workspace/workspace.module.js.map +1 -0
  101. package/server/dist/modules/workspace/workspace.service.d.ts +44 -0
  102. package/server/dist/modules/workspace/workspace.service.js +93 -0
  103. package/server/dist/modules/workspace/workspace.service.js.map +1 -0
  104. 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":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,6CAAyF;AACzF,qDAAiD;AAI1C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAK7D,SAAS;QACP,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;IAC9C,CAAC;IAMK,AAAN,KAAK,CAAC,cAAc,CAAoB,QAAgB;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAMK,AAAN,KAAK,CAAC,eAAe,CACA,QAAgB,EAC3B,IAAyB;QAEjC,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACrC,CAAC;IAKK,AAAN,KAAK,CAAC,UAAU,CAAS,IAA4C;QACnE,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC;IAMD,aAAa,CAAuB,WAAoB;QACtD,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAOD,gBAAgB,CACM,SAAiB,EACjB,SAAiB;QAErC,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;IAMD,qBAAqB,CAA6B,EAAU;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAMD,WAAW,CAA6B,EAAU;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAKD,cAAc,CAEZ,IAMC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAOD,cAAc,CACgB,EAAU,EACtB,KAAc;QAE9B,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;IACjE,CAAC;IAKK,AAAN,KAAK,CAAC,WAAW,CAEf,IAKC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAKK,AAAN,KAAK,CAAC,gBAAgB,CAAS,IAA6B;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AA5HY,4CAAgB;AAM3B;IAHC,IAAA,YAAG,EAAC,OAAO,CAAC;IACZ,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC9C,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;;;;iDAGjE;AAMK;IAJL,IAAA,YAAG,EAAC,iBAAiB,CAAC;IACtB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACpD,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IAC9D,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;IACtC,WAAA,IAAA,cAAK,EAAC,UAAU,CAAC,CAAA;;;;sDAGtC;AAMK;IAJL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACrD,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IAC9D,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IAEvD,WAAA,IAAA,cAAK,EAAC,UAAU,CAAC,CAAA;IACjB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;uDAIR;AAKK;IAHL,IAAA,aAAI,EAAC,OAAO,CAAC;IACb,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACnD,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;IAC/C,WAAA,IAAA,aAAI,GAAE,CAAA;;;;kDAGvB;AAMD;IAJC,IAAA,YAAG,EAAC,WAAW,CAAC;IAChB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC3C,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACjF,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAChD,WAAA,IAAA,cAAK,EAAC,aAAa,CAAC,CAAA;;;;qDAElC;AAOD;IALC,IAAA,YAAG,EAAC,mBAAmB,CAAC;IACxB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IAClD,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACnE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACpE,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAE5D,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAClB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;wDAGpB;AAMD;IAJC,IAAA,YAAG,EAAC,2BAA2B,CAAC;IAChC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC;IAC/D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IACtD,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;IAC7C,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;;;;6DAEhD;AAMD;IAJC,IAAA,YAAG,EAAC,eAAe,CAAC;IACpB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC/C,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IACtD,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IACjD,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;;;;mDAEtC;AAKD;IAHC,IAAA,aAAI,EAAC,WAAW,CAAC;IACjB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC9C,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAE3D,WAAA,IAAA,aAAI,GAAE,CAAA;;;;sDAUR;AAOD;IALC,IAAA,eAAM,EAAC,eAAe,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC9C,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IACtD,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACvF,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAE3D,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAC1B,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;;;;sDAGhB;AAKK;IAHL,IAAA,aAAI,EAAC,MAAM,CAAC;IACZ,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IAClD,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAE7D,WAAA,IAAA,aAAI,GAAE,CAAA;;;;mDASR;AAKK;IAHL,IAAA,aAAI,EAAC,UAAU,CAAC;IAChB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;IAC1D,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACvC,WAAA,IAAA,aAAI,GAAE,CAAA;;;;wDAE7B;2BA3HU,gBAAgB;IAF5B,IAAA,iBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,mBAAU,EAAC,QAAQ,CAAC;qCAEyB,8BAAa;GAD9C,gBAAgB,CA4H5B"}
@@ -0,0 +1,2 @@
1
+ export declare class SchemaModule {
2
+ }
@@ -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
+ }