@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,80 @@
1
+ import { ConfigService } from '../modules/config/config.service';
2
+ import { WorkspaceConfig } from '../common/entities/workspace.entity';
3
+ export declare class SqlmlService {
4
+ private configService;
5
+ private workspacePath;
6
+ constructor(configService: ConfigService);
7
+ getWorkspacePath(): string;
8
+ setWorkspacePath(workspacePath: string): void;
9
+ getConfig(): Promise<WorkspaceConfig>;
10
+ listMigrations(): Promise<string[]>;
11
+ readMigration(filename: string): Promise<string | null>;
12
+ listSchemaFiles(): Promise<string[]>;
13
+ readSchemaFile(filename: string): Promise<string | null>;
14
+ writeSchemaFile(filename: string, content: string): Promise<void>;
15
+ execCli(command: string): Promise<{
16
+ stdout: string;
17
+ stderr: string;
18
+ }>;
19
+ execCliSync(command: string): string;
20
+ listCliSnapshots(): Array<{
21
+ version: string;
22
+ dbmlContent: string;
23
+ meta: {
24
+ version: string;
25
+ createdAt: string;
26
+ description?: string;
27
+ sourceFile?: string;
28
+ checksum?: string;
29
+ migrationGenerated?: string;
30
+ };
31
+ }>;
32
+ readCurrentSchema(): Promise<string>;
33
+ writeSnapshotToDisk(snapshot: {
34
+ version: string;
35
+ dbmlContent: string;
36
+ name?: string;
37
+ description?: string;
38
+ checksum: string;
39
+ sourceFile?: string;
40
+ }): void;
41
+ deleteSnapshotFromDisk(version: string): void;
42
+ readHistory(): {
43
+ entries: Array<{
44
+ timestamp: string;
45
+ action: string;
46
+ version: string;
47
+ description?: string;
48
+ migration?: string;
49
+ changes?: {
50
+ tablesAdded?: string[];
51
+ tablesModified?: string[];
52
+ tablesRemoved?: string[];
53
+ };
54
+ }>;
55
+ };
56
+ addHistoryEntry(entry: {
57
+ action: 'snapshot:create' | 'snapshot:delete' | 'migration:generate' | 'diff';
58
+ version: string;
59
+ description?: string;
60
+ migration?: string;
61
+ changes?: {
62
+ tablesAdded?: string[];
63
+ tablesModified?: string[];
64
+ tablesRemoved?: string[];
65
+ };
66
+ }): void;
67
+ getWorkspaceInfo(): Promise<{
68
+ path: string;
69
+ hasConfig: boolean;
70
+ config: WorkspaceConfig;
71
+ migrations: {
72
+ count: number;
73
+ files: string[];
74
+ };
75
+ schemas: {
76
+ count: number;
77
+ files: string[];
78
+ };
79
+ }>;
80
+ }
@@ -0,0 +1,237 @@
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.SqlmlService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const path = require("path");
18
+ const fs = require("fs");
19
+ const child_process_1 = require("child_process");
20
+ const util_1 = require("util");
21
+ const config_service_1 = require("../modules/config/config.service");
22
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
23
+ let SqlmlService = class SqlmlService {
24
+ constructor(configService) {
25
+ this.configService = configService;
26
+ this.workspacePath = process.env.SQLML_WORKSPACE || process.cwd();
27
+ }
28
+ getWorkspacePath() {
29
+ return this.workspacePath;
30
+ }
31
+ setWorkspacePath(workspacePath) {
32
+ this.workspacePath = workspacePath;
33
+ }
34
+ async getConfig() {
35
+ return this.configService.getConfig();
36
+ }
37
+ async listMigrations() {
38
+ const config = await this.getConfig();
39
+ const migrationsDir = config?.paths?.migrations || './migrations';
40
+ const fullPath = path.join(this.workspacePath, migrationsDir);
41
+ if (!fs.existsSync(fullPath)) {
42
+ return [];
43
+ }
44
+ return fs.readdirSync(fullPath)
45
+ .filter(f => f.endsWith('.sql'))
46
+ .sort();
47
+ }
48
+ async readMigration(filename) {
49
+ const config = await this.getConfig();
50
+ const migrationsDir = config?.paths?.migrations || './migrations';
51
+ const filePath = path.join(this.workspacePath, migrationsDir, filename);
52
+ if (!fs.existsSync(filePath)) {
53
+ return null;
54
+ }
55
+ return fs.readFileSync(filePath, 'utf-8');
56
+ }
57
+ async listSchemaFiles() {
58
+ const config = await this.getConfig();
59
+ const schemaDir = config?.paths?.schema || './schema';
60
+ const fullPath = path.join(this.workspacePath, schemaDir);
61
+ if (!fs.existsSync(fullPath)) {
62
+ return [];
63
+ }
64
+ return fs.readdirSync(fullPath)
65
+ .filter(f => f.endsWith('.dbml'))
66
+ .sort();
67
+ }
68
+ async readSchemaFile(filename) {
69
+ const config = await this.getConfig();
70
+ const schemaDir = config?.paths?.schema || './schema';
71
+ const filePath = path.join(this.workspacePath, schemaDir, filename);
72
+ if (!fs.existsSync(filePath)) {
73
+ return null;
74
+ }
75
+ return fs.readFileSync(filePath, 'utf-8');
76
+ }
77
+ async writeSchemaFile(filename, content) {
78
+ const config = await this.getConfig();
79
+ const schemaDir = config?.paths?.schema || './schema';
80
+ const dirPath = path.join(this.workspacePath, schemaDir);
81
+ const filePath = path.join(dirPath, filename);
82
+ if (!fs.existsSync(dirPath)) {
83
+ fs.mkdirSync(dirPath, { recursive: true });
84
+ }
85
+ fs.writeFileSync(filePath, content, 'utf-8');
86
+ }
87
+ async execCli(command) {
88
+ try {
89
+ const { stdout, stderr } = await execAsync(`npx sqlml ${command}`, {
90
+ cwd: this.workspacePath,
91
+ env: { ...process.env, FORCE_COLOR: '0' },
92
+ timeout: 60000,
93
+ });
94
+ return { stdout: stdout.trim(), stderr: stderr.trim() };
95
+ }
96
+ catch (error) {
97
+ return {
98
+ stdout: (error.stdout || '').trim(),
99
+ stderr: (error.stderr || error.message || 'Unknown CLI error').trim(),
100
+ };
101
+ }
102
+ }
103
+ execCliSync(command) {
104
+ try {
105
+ const result = (0, child_process_1.execSync)(`npx sqlml ${command}`, {
106
+ cwd: this.workspacePath,
107
+ env: { ...process.env, FORCE_COLOR: '0' },
108
+ timeout: 60000,
109
+ encoding: 'utf-8',
110
+ });
111
+ return result.trim();
112
+ }
113
+ catch (error) {
114
+ throw new Error(`CLI command failed: ${error.stderr || error.message || 'Unknown error'}`);
115
+ }
116
+ }
117
+ listCliSnapshots() {
118
+ const snapshotsDir = path.join(this.workspacePath, '.sqlml', 'snapshots');
119
+ if (!fs.existsSync(snapshotsDir)) {
120
+ return [];
121
+ }
122
+ const metaFiles = fs.readdirSync(snapshotsDir)
123
+ .filter(f => f.endsWith('.meta.json'))
124
+ .sort();
125
+ return metaFiles.map(metaFile => {
126
+ const version = metaFile.replace('.meta.json', '');
127
+ const metaPath = path.join(snapshotsDir, metaFile);
128
+ const dbmlPath = path.join(snapshotsDir, `${version}.dbml`);
129
+ const meta = JSON.parse(fs.readFileSync(metaPath, 'utf-8'));
130
+ const dbmlContent = fs.existsSync(dbmlPath)
131
+ ? fs.readFileSync(dbmlPath, 'utf-8')
132
+ : '';
133
+ return { version, dbmlContent, meta };
134
+ });
135
+ }
136
+ async readCurrentSchema() {
137
+ const files = await this.listSchemaFiles();
138
+ if (files.length === 0)
139
+ return '';
140
+ const contents = await Promise.all(files.map(f => this.readSchemaFile(f)));
141
+ return contents.filter(Boolean).join('\n\n');
142
+ }
143
+ writeSnapshotToDisk(snapshot) {
144
+ const snapshotsDir = path.join(this.workspacePath, '.sqlml', 'snapshots');
145
+ if (!fs.existsSync(snapshotsDir)) {
146
+ fs.mkdirSync(snapshotsDir, { recursive: true });
147
+ }
148
+ const dbmlPath = path.join(snapshotsDir, `${snapshot.version}.dbml`);
149
+ const metaPath = path.join(snapshotsDir, `${snapshot.version}.meta.json`);
150
+ fs.writeFileSync(dbmlPath, snapshot.dbmlContent, 'utf-8');
151
+ const meta = {
152
+ version: snapshot.version,
153
+ createdAt: new Date().toISOString(),
154
+ description: snapshot.name || snapshot.description || undefined,
155
+ sourceFile: snapshot.sourceFile || undefined,
156
+ checksum: snapshot.checksum,
157
+ };
158
+ fs.writeFileSync(metaPath, JSON.stringify(meta, null, 2), 'utf-8');
159
+ const latestLink = path.join(snapshotsDir, 'latest');
160
+ try {
161
+ if (fs.existsSync(latestLink) || fs.lstatSync(latestLink).isSymbolicLink()) {
162
+ fs.unlinkSync(latestLink);
163
+ }
164
+ }
165
+ catch {
166
+ }
167
+ fs.symlinkSync(`${snapshot.version}.dbml`, latestLink);
168
+ }
169
+ deleteSnapshotFromDisk(version) {
170
+ const snapshotsDir = path.join(this.workspacePath, '.sqlml', 'snapshots');
171
+ const dbmlPath = path.join(snapshotsDir, `${version}.dbml`);
172
+ const metaPath = path.join(snapshotsDir, `${version}.meta.json`);
173
+ if (fs.existsSync(dbmlPath))
174
+ fs.unlinkSync(dbmlPath);
175
+ if (fs.existsSync(metaPath))
176
+ fs.unlinkSync(metaPath);
177
+ const latestLink = path.join(snapshotsDir, 'latest');
178
+ try {
179
+ const target = fs.readlinkSync(latestLink);
180
+ if (target === `${version}.dbml`) {
181
+ fs.unlinkSync(latestLink);
182
+ }
183
+ }
184
+ catch {
185
+ }
186
+ }
187
+ readHistory() {
188
+ const historyPath = path.join(this.workspacePath, '.sqlml', 'history.json');
189
+ if (!fs.existsSync(historyPath)) {
190
+ return { entries: [] };
191
+ }
192
+ try {
193
+ return JSON.parse(fs.readFileSync(historyPath, 'utf-8'));
194
+ }
195
+ catch {
196
+ return { entries: [] };
197
+ }
198
+ }
199
+ addHistoryEntry(entry) {
200
+ const sqlmlDir = path.join(this.workspacePath, '.sqlml');
201
+ const historyPath = path.join(sqlmlDir, 'history.json');
202
+ if (!fs.existsSync(sqlmlDir)) {
203
+ fs.mkdirSync(sqlmlDir, { recursive: true });
204
+ }
205
+ const history = this.readHistory();
206
+ history.entries.push({
207
+ timestamp: new Date().toISOString(),
208
+ ...entry,
209
+ });
210
+ fs.writeFileSync(historyPath, JSON.stringify(history, null, 2), 'utf-8');
211
+ }
212
+ async getWorkspaceInfo() {
213
+ const config = await this.getConfig();
214
+ const migrations = await this.listMigrations();
215
+ const schemas = await this.listSchemaFiles();
216
+ return {
217
+ path: this.workspacePath,
218
+ hasConfig: !!config,
219
+ config,
220
+ migrations: {
221
+ count: migrations.length,
222
+ files: migrations.slice(-5),
223
+ },
224
+ schemas: {
225
+ count: schemas.length,
226
+ files: schemas,
227
+ },
228
+ };
229
+ }
230
+ };
231
+ exports.SqlmlService = SqlmlService;
232
+ exports.SqlmlService = SqlmlService = __decorate([
233
+ (0, common_1.Injectable)(),
234
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => config_service_1.ConfigService))),
235
+ __metadata("design:paramtypes", [config_service_1.ConfigService])
236
+ ], SqlmlService);
237
+ //# sourceMappingURL=sqlml.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlml.service.js","sourceRoot":"","sources":["../../src/core/sqlml.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,6BAA6B;AAC7B,yBAAyB;AACzB,iDAA+C;AAC/C,+BAAiC;AACjC,qEAAiE;AAGjE,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAO3B,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGvB,YAEU,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAEpC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpE,CAAC;IAKD,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAKD,gBAAgB,CAAC,aAAqB;QACpC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAKD,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC;IAKD,KAAK,CAAC,cAAc;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,cAAc,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAE9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC/B,IAAI,EAAE,CAAC;IACZ,CAAC;IAKD,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,cAAc,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAExE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAKD,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,UAAU,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAE1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAChC,IAAI,EAAE,CAAC;IACZ,CAAC;IAKD,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,UAAU,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAKD,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,OAAe;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,UAAU,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAG9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAMD,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,aAAa,OAAO,EAAE,EAAE;gBACjE,GAAG,EAAE,IAAI,CAAC,aAAa;gBACvB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;gBACzC,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAEpB,OAAO;gBACL,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBACnC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC,IAAI,EAAE;aACtE,CAAC;QACJ,CAAC;IACH,CAAC;IAMD,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,aAAa,OAAO,EAAE,EAAE;gBAC9C,GAAG,EAAE,IAAI,CAAC,aAAa;gBACvB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;gBACzC,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAC1E,CAAC;QACJ,CAAC;IACH,CAAC;IAKD,gBAAgB;QAYd,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;aACrC,IAAI,EAAE,CAAC;QAEV,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC;YAE5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACzC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACpC,CAAC,CAAC,EAAE,CAAC;YAEP,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAKD,KAAK,CAAC,iBAAiB;QACrB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACvC,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAMD,mBAAmB,CAAC,QAOnB;QACC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;QAG1E,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAG1D,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,IAAI,SAAS;YAC/D,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,SAAS;YAC5C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAGnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3E,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QACD,EAAE,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,OAAO,OAAO,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAKD,sBAAsB,CAAC,OAAe;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,YAAY,CAAC,CAAC;QAEjE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAGrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,GAAG,OAAO,OAAO,EAAE,CAAC;gBACjC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAKD,WAAW;QAcT,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAKD,eAAe,CAAC,KAUf;QACC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG,KAAK;SACT,CAAC,CAAC;QAEH,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAKD,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,aAAa;YACxB,SAAS,EAAE,CAAC,CAAC,MAAM;YACnB,MAAM;YACN,UAAU,EAAE;gBACV,KAAK,EAAE,UAAU,CAAC,MAAM;gBACxB,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC5B;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,KAAK,EAAE,OAAO;aACf;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAhWY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC,CAAC,CAAA;qCACjB,8BAAa;GAL3B,YAAY,CAgWxB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@nestjs/core");
4
+ const common_1 = require("@nestjs/common");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ const app_module_1 = require("./app.module");
7
+ async function bootstrap() {
8
+ const app = await core_1.NestFactory.create(app_module_1.AppModule);
9
+ app.useGlobalPipes(new common_1.ValidationPipe({
10
+ whitelist: true,
11
+ transform: true,
12
+ forbidNonWhitelisted: true,
13
+ }));
14
+ const corsOrigin = process.env.CORS_ORIGIN;
15
+ app.enableCors({
16
+ origin: corsOrigin
17
+ ? corsOrigin.split(',').map(o => o.trim())
18
+ : [
19
+ `http://localhost:${process.env.PORT || 4200}`,
20
+ `http://localhost:${process.env.CLIENT_PORT || 5173}`,
21
+ ],
22
+ credentials: true,
23
+ });
24
+ app.setGlobalPrefix('api', {
25
+ exclude: ['/'],
26
+ });
27
+ const config = new swagger_1.DocumentBuilder()
28
+ .setTitle('SQLML UI API')
29
+ .setDescription('SQLML UI Backend API Documentation')
30
+ .setVersion('1.0')
31
+ .addTag('workspace', 'Workspace management')
32
+ .addTag('migration', 'Migration operations')
33
+ .addTag('schema', 'Schema operations')
34
+ .addTag('database', 'Database operations')
35
+ .addTag('config', 'Configuration management')
36
+ .build();
37
+ const document = swagger_1.SwaggerModule.createDocument(app, config);
38
+ swagger_1.SwaggerModule.setup('api/docs', app, document);
39
+ const port = process.env.PORT || 4200;
40
+ await app.listen(port);
41
+ console.log(`SQLML UI Server running on http://localhost:${port}`);
42
+ console.log(`API Documentation: http://localhost:${port}/api/docs`);
43
+ }
44
+ bootstrap();
45
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,2CAAgD;AAChD,6CAAiE;AACjE,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAGhD,GAAG,CAAC,cAAc,CAChB,IAAI,uBAAc,CAAC;QACjB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,oBAAoB,EAAE,IAAI;KAC3B,CAAC,CACH,CAAC;IAGF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC3C,GAAG,CAAC,UAAU,CAAC;QACb,MAAM,EAAE,UAAU;YAChB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,CAAC,CAAC;gBACE,oBAAoB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE;gBAC9C,oBAAoB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE;aACtD;QACL,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAGH,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE;QACzB,OAAO,EAAE,CAAC,GAAG,CAAC;KACf,CAAC,CAAC;IAGH,MAAM,MAAM,GAAG,IAAI,yBAAe,EAAE;SACjC,QAAQ,CAAC,cAAc,CAAC;SACxB,cAAc,CAAC,oCAAoC,CAAC;SACpD,UAAU,CAAC,KAAK,CAAC;SACjB,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC3C,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC3C,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;SACrC,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC5C,KAAK,EAAE,CAAC;IAEX,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,uBAAa,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;IACtC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvB,OAAO,CAAC,GAAG,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,WAAW,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { ConfigService } from './config.service';
2
+ import { WorkspaceConfig, WorkspaceDatabase } from '../../common/entities/workspace.entity';
3
+ export declare class ConfigController {
4
+ private readonly configService;
5
+ constructor(configService: ConfigService);
6
+ getConfig(): Promise<WorkspaceConfig>;
7
+ updateConfig(data: Partial<WorkspaceConfig>): Promise<WorkspaceConfig>;
8
+ validateConfig(): Promise<{
9
+ valid: boolean;
10
+ errors: string[];
11
+ warnings: string[];
12
+ }>;
13
+ testConnection(dbConfig?: WorkspaceDatabase): Promise<{
14
+ success: boolean;
15
+ message: string;
16
+ error?: string;
17
+ }>;
18
+ }
@@ -0,0 +1,76 @@
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.ConfigController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const config_service_1 = require("./config.service");
19
+ let ConfigController = class ConfigController {
20
+ constructor(configService) {
21
+ this.configService = configService;
22
+ }
23
+ getConfig() {
24
+ return this.configService.getConfig();
25
+ }
26
+ updateConfig(data) {
27
+ return this.configService.updateConfig(data);
28
+ }
29
+ validateConfig() {
30
+ return this.configService.validateConfig();
31
+ }
32
+ testConnection(dbConfig) {
33
+ return this.configService.testConnection(dbConfig);
34
+ }
35
+ };
36
+ exports.ConfigController = ConfigController;
37
+ __decorate([
38
+ (0, common_1.Get)(),
39
+ (0, swagger_1.ApiOperation)({ summary: 'Get current configuration' }),
40
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Current configuration' }),
41
+ __metadata("design:type", Function),
42
+ __metadata("design:paramtypes", []),
43
+ __metadata("design:returntype", Promise)
44
+ ], ConfigController.prototype, "getConfig", null);
45
+ __decorate([
46
+ (0, common_1.Put)(),
47
+ (0, swagger_1.ApiOperation)({ summary: 'Update configuration' }),
48
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Configuration updated' }),
49
+ __param(0, (0, common_1.Body)()),
50
+ __metadata("design:type", Function),
51
+ __metadata("design:paramtypes", [Object]),
52
+ __metadata("design:returntype", Promise)
53
+ ], ConfigController.prototype, "updateConfig", null);
54
+ __decorate([
55
+ (0, common_1.Get)('validate'),
56
+ (0, swagger_1.ApiOperation)({ summary: 'Validate current configuration' }),
57
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Validation result' }),
58
+ __metadata("design:type", Function),
59
+ __metadata("design:paramtypes", []),
60
+ __metadata("design:returntype", Promise)
61
+ ], ConfigController.prototype, "validateConfig", null);
62
+ __decorate([
63
+ (0, common_1.Post)('test-connection'),
64
+ (0, swagger_1.ApiOperation)({ summary: 'Test database connection with current or provided config' }),
65
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Connection test result' }),
66
+ __param(0, (0, common_1.Body)()),
67
+ __metadata("design:type", Function),
68
+ __metadata("design:paramtypes", [Object]),
69
+ __metadata("design:returntype", Promise)
70
+ ], ConfigController.prototype, "testConnection", null);
71
+ exports.ConfigController = ConfigController = __decorate([
72
+ (0, swagger_1.ApiTags)('config'),
73
+ (0, common_1.Controller)('config'),
74
+ __metadata("design:paramtypes", [config_service_1.ConfigService])
75
+ ], ConfigController);
76
+ //# sourceMappingURL=config.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.controller.js","sourceRoot":"","sources":["../../../src/modules/config/config.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AACxB,6CAAqE;AACrE,qDAAiD;AAK1C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAK7D,SAAS;QACP,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC;IAKD,YAAY,CAEV,IAA8B;QAE9B,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAKD,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAC7C,CAAC;IAKD,cAAc,CACJ,QAA4B;QAEpC,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AAnCY,4CAAgB;AAM3B;IAHC,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACtD,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;;;iDAGlE;AAKD;IAHC,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IACjD,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;IAEhE,WAAA,IAAA,aAAI,GAAE,CAAA;;;;oDAIR;AAKD;IAHC,IAAA,YAAG,EAAC,UAAU,CAAC;IACf,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IAC3D,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;;;;sDAG9D;AAKD;IAHC,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,0DAA0D,EAAE,CAAC;IACrF,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;IAEjE,WAAA,IAAA,aAAI,GAAE,CAAA;;;;sDAGR;2BAlCU,gBAAgB;IAF5B,IAAA,iBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,mBAAU,EAAC,QAAQ,CAAC;qCAEyB,8BAAa;GAD9C,gBAAgB,CAmC5B"}
@@ -0,0 +1,2 @@
1
+ export declare class SqlmlConfigModule {
2
+ }
@@ -0,0 +1,27 @@
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.SqlmlConfigModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const typeorm_1 = require("@nestjs/typeorm");
12
+ const config_controller_1 = require("./config.controller");
13
+ const config_service_1 = require("./config.service");
14
+ const workspace_entity_1 = require("../../common/entities/workspace.entity");
15
+ let SqlmlConfigModule = class SqlmlConfigModule {
16
+ };
17
+ exports.SqlmlConfigModule = SqlmlConfigModule;
18
+ exports.SqlmlConfigModule = SqlmlConfigModule = __decorate([
19
+ (0, common_1.Global)(),
20
+ (0, common_1.Module)({
21
+ imports: [typeorm_1.TypeOrmModule.forFeature([workspace_entity_1.Workspace])],
22
+ controllers: [config_controller_1.ConfigController],
23
+ providers: [config_service_1.ConfigService],
24
+ exports: [config_service_1.ConfigService],
25
+ })
26
+ ], SqlmlConfigModule);
27
+ //# sourceMappingURL=config.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.module.js","sourceRoot":"","sources":["../../../src/modules/config/config.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,6CAAgD;AAChD,2DAAuD;AACvD,qDAAiD;AACjD,6EAAmE;AAS5D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,8CAAiB;4BAAjB,iBAAiB;IAP7B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC,UAAU,CAAC,CAAC,4BAAS,CAAC,CAAC,CAAC;QAChD,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,iBAAiB,CAAG"}
@@ -0,0 +1,31 @@
1
+ import { Repository } from 'typeorm';
2
+ import { Workspace, WorkspaceConfig, WorkspaceDatabase } from '../../common/entities/workspace.entity';
3
+ export declare class ConfigService {
4
+ private workspaceRepository;
5
+ private workspacePath;
6
+ private configFilePath;
7
+ constructor(workspaceRepository: Repository<Workspace>);
8
+ private ensureConfigDir;
9
+ private parseDotenv;
10
+ private dotenvToConfig;
11
+ private configToDotenv;
12
+ private readConfigFile;
13
+ private writeConfigFile;
14
+ private generateUUID;
15
+ getCurrentWorkspace(): Promise<Workspace>;
16
+ getConfig(): Promise<WorkspaceConfig>;
17
+ updateConfig(data: Partial<WorkspaceConfig>): Promise<WorkspaceConfig>;
18
+ validateConfig(): Promise<{
19
+ valid: boolean;
20
+ errors: string[];
21
+ warnings: string[];
22
+ }>;
23
+ getDefaultConfig(): WorkspaceConfig;
24
+ private deepMerge;
25
+ testConnection(dbConfig?: WorkspaceDatabase): Promise<{
26
+ success: boolean;
27
+ message: string;
28
+ error?: string;
29
+ }>;
30
+ private getDefaultPort;
31
+ }