@ductape/sdk 0.0.4-v42 → 0.0.4-v43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apps/services/app.service.d.ts +10 -0
- package/dist/apps/services/app.service.js +22 -0
- package/dist/apps/services/app.service.js.map +1 -1
- package/dist/database/adapters/base.adapter.d.ts +176 -0
- package/dist/database/adapters/base.adapter.js +31 -0
- package/dist/database/adapters/base.adapter.js.map +1 -0
- package/dist/database/adapters/dynamodb.adapter.d.ts +83 -0
- package/dist/database/adapters/dynamodb.adapter.js +1237 -0
- package/dist/database/adapters/dynamodb.adapter.js.map +1 -0
- package/dist/database/adapters/mongodb.adapter.d.ts +70 -0
- package/dist/database/adapters/mongodb.adapter.js +717 -0
- package/dist/database/adapters/mongodb.adapter.js.map +1 -0
- package/dist/database/adapters/mysql.adapter.d.ts +141 -0
- package/dist/database/adapters/mysql.adapter.js +1221 -0
- package/dist/database/adapters/mysql.adapter.js.map +1 -0
- package/dist/database/adapters/postgresql.adapter.d.ts +142 -0
- package/dist/database/adapters/postgresql.adapter.js +1288 -0
- package/dist/database/adapters/postgresql.adapter.js.map +1 -0
- package/dist/database/database.service.d.ts +190 -0
- package/dist/database/database.service.js +552 -0
- package/dist/database/database.service.js.map +1 -0
- package/dist/database/index.d.ts +18 -0
- package/dist/database/index.js +98 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/types/aggregation.types.d.ts +202 -0
- package/dist/database/types/aggregation.types.js +21 -0
- package/dist/database/types/aggregation.types.js.map +1 -0
- package/dist/database/types/connection.types.d.ts +132 -0
- package/dist/database/types/connection.types.js +6 -0
- package/dist/database/types/connection.types.js.map +1 -0
- package/dist/database/types/database.types.d.ts +173 -0
- package/dist/database/types/database.types.js +73 -0
- package/dist/database/types/database.types.js.map +1 -0
- package/dist/database/types/index.d.ts +12 -0
- package/dist/database/types/index.js +37 -0
- package/dist/database/types/index.js.map +1 -0
- package/dist/database/types/index.types.d.ts +220 -0
- package/dist/database/types/index.types.js +27 -0
- package/dist/database/types/index.types.js.map +1 -0
- package/dist/database/types/migration.types.d.ts +205 -0
- package/dist/database/types/migration.types.js +44 -0
- package/dist/database/types/migration.types.js.map +1 -0
- package/dist/database/types/query.types.d.ts +274 -0
- package/dist/database/types/query.types.js +57 -0
- package/dist/database/types/query.types.js.map +1 -0
- package/dist/database/types/result.types.d.ts +218 -0
- package/dist/database/types/result.types.js +6 -0
- package/dist/database/types/result.types.js.map +1 -0
- package/dist/database/types/schema.types.d.ts +190 -0
- package/dist/database/types/schema.types.js +69 -0
- package/dist/database/types/schema.types.js.map +1 -0
- package/dist/database/utils/helpers.d.ts +66 -0
- package/dist/database/utils/helpers.js +501 -0
- package/dist/database/utils/helpers.js.map +1 -0
- package/dist/database/utils/migration.utils.d.ts +151 -0
- package/dist/database/utils/migration.utils.js +476 -0
- package/dist/database/utils/migration.utils.js.map +1 -0
- package/dist/database/utils/transaction.d.ts +64 -0
- package/dist/database/utils/transaction.js +130 -0
- package/dist/database/utils/transaction.js.map +1 -0
- package/dist/database/validators/connection.validator.d.ts +20 -0
- package/dist/database/validators/connection.validator.js +267 -0
- package/dist/database/validators/connection.validator.js.map +1 -0
- package/dist/database/validators/query.validator.d.ts +31 -0
- package/dist/database/validators/query.validator.js +305 -0
- package/dist/database/validators/query.validator.js.map +1 -0
- package/dist/database/validators/schema.validator.d.ts +31 -0
- package/dist/database/validators/schema.validator.js +334 -0
- package/dist/database/validators/schema.validator.js.map +1 -0
- package/dist/index.d.ts +25 -4
- package/dist/index.js +36 -4
- package/dist/index.js.map +1 -1
- package/dist/processor/services/processor.service.js +10 -8
- package/dist/processor/services/processor.service.js.map +1 -1
- package/dist/types/processor.types.d.ts +2 -2
- package/package.json +3 -1
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Main Database Service
|
|
4
|
+
* Entry point for all database operations
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.DatabaseService = void 0;
|
|
11
|
+
const database_types_1 = require("./types/database.types");
|
|
12
|
+
const postgresql_adapter_1 = require("./adapters/postgresql.adapter");
|
|
13
|
+
const mongodb_adapter_1 = require("./adapters/mongodb.adapter");
|
|
14
|
+
const mysql_adapter_1 = require("./adapters/mysql.adapter");
|
|
15
|
+
const dynamodb_adapter_1 = require("./adapters/dynamodb.adapter");
|
|
16
|
+
const products_service_1 = __importDefault(require("../products/services/products.service"));
|
|
17
|
+
const index_types_1 = require("../types/index.types");
|
|
18
|
+
/**
|
|
19
|
+
* Main Database Service Class
|
|
20
|
+
*/
|
|
21
|
+
class DatabaseService {
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.connections = new Map();
|
|
24
|
+
this.adapters = new Map();
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.environment = config.env_type || index_types_1.EnvType.PRODUCTION;
|
|
27
|
+
this.initializeAdapters();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Initialize database adapters
|
|
31
|
+
*/
|
|
32
|
+
initializeAdapters() {
|
|
33
|
+
// Register PostgreSQL adapter
|
|
34
|
+
this.adapters.set(database_types_1.DatabaseType.POSTGRESQL, new postgresql_adapter_1.PostgreSQLAdapter());
|
|
35
|
+
// Register MongoDB adapter
|
|
36
|
+
this.adapters.set(database_types_1.DatabaseType.MONGODB, new mongodb_adapter_1.MongoDBAdapter());
|
|
37
|
+
// Register MySQL adapter
|
|
38
|
+
this.adapters.set(database_types_1.DatabaseType.MYSQL, new mysql_adapter_1.MySQLAdapter());
|
|
39
|
+
// Register DynamoDB adapter
|
|
40
|
+
this.adapters.set(database_types_1.DatabaseType.DYNAMODB, new dynamodb_adapter_1.DynamoDBAdapter());
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get adapter for database type
|
|
44
|
+
*/
|
|
45
|
+
getAdapter(type) {
|
|
46
|
+
const adapter = this.adapters.get(type);
|
|
47
|
+
if (!adapter) {
|
|
48
|
+
throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.CONNECTION_ERROR, `No adapter registered for database type: ${type}`);
|
|
49
|
+
}
|
|
50
|
+
return adapter;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve connection configuration from product database
|
|
54
|
+
*/
|
|
55
|
+
async resolveProductConnection(config) {
|
|
56
|
+
var _a;
|
|
57
|
+
try {
|
|
58
|
+
// Create ProductBuilder instance
|
|
59
|
+
const productBuilder = new products_service_1.default({
|
|
60
|
+
workspace_id: this.config.workspace_id,
|
|
61
|
+
user_id: this.config.user_id,
|
|
62
|
+
public_key: this.config.public_key,
|
|
63
|
+
token: this.config.token,
|
|
64
|
+
env_type: this.environment,
|
|
65
|
+
});
|
|
66
|
+
// Initialize the product by tag
|
|
67
|
+
await productBuilder.initializeProductByTag(config.product);
|
|
68
|
+
// Fetch the database configuration
|
|
69
|
+
const database = await productBuilder.fetchDatabase(config.database);
|
|
70
|
+
if (!database) {
|
|
71
|
+
throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.CONNECTION_ERROR, `Database '${config.database}' not found in product '${config.product}'`);
|
|
72
|
+
}
|
|
73
|
+
// Find the environment configuration
|
|
74
|
+
const envConfig = (_a = database.envs) === null || _a === void 0 ? void 0 : _a.find((env) => env.slug === config.env);
|
|
75
|
+
if (!envConfig) {
|
|
76
|
+
throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.CONNECTION_ERROR, `Environment '${config.env}' not found for database '${config.database}'`);
|
|
77
|
+
}
|
|
78
|
+
if (!envConfig.connection_url) {
|
|
79
|
+
throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.CONNECTION_ERROR, `No connection URL configured for database '${config.database}' in environment '${config.env}'`);
|
|
80
|
+
}
|
|
81
|
+
// Parse the connection URL to create a database config
|
|
82
|
+
const dbConfig = this.parseConnectionUrl(envConfig.connection_url, database.type, config.env, config.database);
|
|
83
|
+
// Get the adapter for the database type
|
|
84
|
+
const adapter = this.getAdapter(dbConfig.type);
|
|
85
|
+
// Create connection using the parsed config
|
|
86
|
+
const connectionKey = `${config.product}-${config.database}-${config.env}`;
|
|
87
|
+
let connection = this.connections.get(connectionKey);
|
|
88
|
+
if (connection && connection.isConnected()) {
|
|
89
|
+
return { connection, adapter };
|
|
90
|
+
}
|
|
91
|
+
connection = await adapter.connect(dbConfig);
|
|
92
|
+
this.connections.set(connectionKey, connection);
|
|
93
|
+
return { connection, adapter };
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
if (error instanceof database_types_1.DatabaseError) {
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.CONNECTION_ERROR, `Failed to resolve product connection: ${error.message}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Parse connection URL into database config
|
|
104
|
+
*/
|
|
105
|
+
parseConnectionUrl(connectionUrl, dbType, env, databaseName) {
|
|
106
|
+
try {
|
|
107
|
+
// Map product database types to DatabaseType enum
|
|
108
|
+
const typeMapping = {
|
|
109
|
+
postgresql: database_types_1.DatabaseType.POSTGRESQL,
|
|
110
|
+
postgres: database_types_1.DatabaseType.POSTGRESQL,
|
|
111
|
+
mysql: database_types_1.DatabaseType.MYSQL,
|
|
112
|
+
mongodb: database_types_1.DatabaseType.MONGODB,
|
|
113
|
+
mongo: database_types_1.DatabaseType.MONGODB,
|
|
114
|
+
dynamodb: database_types_1.DatabaseType.DYNAMODB,
|
|
115
|
+
};
|
|
116
|
+
const mappedType = typeMapping[dbType.toLowerCase()];
|
|
117
|
+
if (!mappedType) {
|
|
118
|
+
throw new Error(`Unsupported database type: ${dbType}`);
|
|
119
|
+
}
|
|
120
|
+
// Parse the connection URL based on database type
|
|
121
|
+
if (mappedType === database_types_1.DatabaseType.MONGODB) {
|
|
122
|
+
// MongoDB connection string format: mongodb://[username:password@]host[:port][/database][?options]
|
|
123
|
+
return {
|
|
124
|
+
type: database_types_1.DatabaseType.MONGODB,
|
|
125
|
+
env,
|
|
126
|
+
database: databaseName,
|
|
127
|
+
options: {
|
|
128
|
+
connectionString: connectionUrl,
|
|
129
|
+
uri: connectionUrl,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
else if (mappedType === database_types_1.DatabaseType.DYNAMODB) {
|
|
134
|
+
// DynamoDB uses region/credentials rather than connection URL
|
|
135
|
+
// Connection URL format: dynamodb://region?accessKeyId=xxx&secretAccessKey=xxx
|
|
136
|
+
const url = new URL(connectionUrl);
|
|
137
|
+
const region = url.hostname;
|
|
138
|
+
const accessKeyId = url.searchParams.get('accessKeyId') || undefined;
|
|
139
|
+
const secretAccessKey = url.searchParams.get('secretAccessKey') || undefined;
|
|
140
|
+
const sessionToken = url.searchParams.get('sessionToken') || undefined;
|
|
141
|
+
return {
|
|
142
|
+
type: database_types_1.DatabaseType.DYNAMODB,
|
|
143
|
+
env,
|
|
144
|
+
database: databaseName,
|
|
145
|
+
options: {
|
|
146
|
+
region,
|
|
147
|
+
accessKeyId,
|
|
148
|
+
secretAccessKey,
|
|
149
|
+
sessionToken,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// PostgreSQL/MySQL connection string format: protocol://[user:password@]host[:port]/database[?options]
|
|
155
|
+
const url = new URL(connectionUrl);
|
|
156
|
+
const urlOptions = this.parseUrlOptions(url.searchParams);
|
|
157
|
+
return {
|
|
158
|
+
type: mappedType,
|
|
159
|
+
env,
|
|
160
|
+
database: url.pathname.slice(1) || databaseName,
|
|
161
|
+
options: Object.assign({ host: url.hostname, port: url.port ? parseInt(url.port) : mappedType === database_types_1.DatabaseType.POSTGRESQL ? 5432 : 3306, user: url.username || undefined, username: url.username || undefined, password: url.password || undefined }, urlOptions),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.CONNECTION_ERROR, `Failed to parse connection URL: ${error.message}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Parse URL search parameters into options object
|
|
171
|
+
*/
|
|
172
|
+
parseUrlOptions(params) {
|
|
173
|
+
const options = {};
|
|
174
|
+
params.forEach((value, key) => {
|
|
175
|
+
// Try to parse as number or boolean
|
|
176
|
+
if (value === 'true') {
|
|
177
|
+
options[key] = true;
|
|
178
|
+
}
|
|
179
|
+
else if (value === 'false') {
|
|
180
|
+
options[key] = false;
|
|
181
|
+
}
|
|
182
|
+
else if (!isNaN(Number(value))) {
|
|
183
|
+
options[key] = Number(value);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
options[key] = value;
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
return options;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get or create a connection
|
|
193
|
+
*/
|
|
194
|
+
async getConnection(config) {
|
|
195
|
+
// Check if it's a product-based connection
|
|
196
|
+
if ('product' in config) {
|
|
197
|
+
return this.resolveProductConnection(config);
|
|
198
|
+
}
|
|
199
|
+
// Direct connection configuration
|
|
200
|
+
const adapter = this.getAdapter(config.type);
|
|
201
|
+
const connectionKey = `${config.type}-${config.env}-${config.database}`;
|
|
202
|
+
// Check if connection already exists
|
|
203
|
+
let connection = this.connections.get(connectionKey);
|
|
204
|
+
if (connection && connection.isConnected()) {
|
|
205
|
+
return { connection, adapter };
|
|
206
|
+
}
|
|
207
|
+
// Create new connection
|
|
208
|
+
connection = await adapter.connect(config);
|
|
209
|
+
this.connections.set(connectionKey, connection);
|
|
210
|
+
return { connection, adapter };
|
|
211
|
+
}
|
|
212
|
+
// ==================== Connection Methods ====================
|
|
213
|
+
/**
|
|
214
|
+
* Connect to a database
|
|
215
|
+
*/
|
|
216
|
+
async connect(config) {
|
|
217
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
218
|
+
return adapter.testConnection(connection);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Disconnect from a database
|
|
222
|
+
*/
|
|
223
|
+
async disconnect(config) {
|
|
224
|
+
// TODO: Find and close the connection
|
|
225
|
+
throw new Error('Not implemented');
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Test database connection
|
|
229
|
+
*/
|
|
230
|
+
async testConnection(config) {
|
|
231
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
232
|
+
return adapter.testConnection(connection);
|
|
233
|
+
}
|
|
234
|
+
// ==================== Transaction Methods ====================
|
|
235
|
+
/**
|
|
236
|
+
* Begin a new transaction
|
|
237
|
+
*/
|
|
238
|
+
async beginTransaction(config, options) {
|
|
239
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
240
|
+
return adapter.beginTransaction(connection, options);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Execute operations within a transaction (callback-based)
|
|
244
|
+
*/
|
|
245
|
+
async transaction(config, callback) {
|
|
246
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
247
|
+
return adapter.executeTransaction(connection, callback, config);
|
|
248
|
+
}
|
|
249
|
+
// ==================== Query Methods ====================
|
|
250
|
+
/**
|
|
251
|
+
* Execute a SELECT query
|
|
252
|
+
*/
|
|
253
|
+
async query(options) {
|
|
254
|
+
const config = {
|
|
255
|
+
env: options.env,
|
|
256
|
+
product: options.product,
|
|
257
|
+
database: options.database,
|
|
258
|
+
};
|
|
259
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
260
|
+
return adapter.query(connection, options);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Insert records
|
|
264
|
+
*/
|
|
265
|
+
async insert(options) {
|
|
266
|
+
const config = {
|
|
267
|
+
env: options.env,
|
|
268
|
+
product: options.product,
|
|
269
|
+
database: options.database,
|
|
270
|
+
};
|
|
271
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
272
|
+
return adapter.insert(connection, options);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Update records
|
|
276
|
+
*/
|
|
277
|
+
async update(options) {
|
|
278
|
+
const config = {
|
|
279
|
+
env: options.env,
|
|
280
|
+
product: options.product,
|
|
281
|
+
database: options.database,
|
|
282
|
+
};
|
|
283
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
284
|
+
return adapter.update(connection, options);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Delete records
|
|
288
|
+
*/
|
|
289
|
+
async delete(options) {
|
|
290
|
+
const config = {
|
|
291
|
+
env: options.env,
|
|
292
|
+
product: options.product,
|
|
293
|
+
database: options.database,
|
|
294
|
+
};
|
|
295
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
296
|
+
return adapter.delete(connection, options);
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Upsert records
|
|
300
|
+
*/
|
|
301
|
+
async upsert(options) {
|
|
302
|
+
const config = {
|
|
303
|
+
env: options.env,
|
|
304
|
+
product: options.product,
|
|
305
|
+
database: options.database,
|
|
306
|
+
};
|
|
307
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
308
|
+
return adapter.upsert(connection, options);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Execute raw SQL/query
|
|
312
|
+
*/
|
|
313
|
+
async raw(options) {
|
|
314
|
+
const config = {
|
|
315
|
+
env: options.env,
|
|
316
|
+
product: options.product,
|
|
317
|
+
database: options.database,
|
|
318
|
+
};
|
|
319
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
320
|
+
return adapter.executeRaw(connection, options);
|
|
321
|
+
}
|
|
322
|
+
// ==================== Aggregation Methods ====================
|
|
323
|
+
/**
|
|
324
|
+
* Count records
|
|
325
|
+
*/
|
|
326
|
+
async count(options) {
|
|
327
|
+
const config = {
|
|
328
|
+
env: options.env,
|
|
329
|
+
product: options.product,
|
|
330
|
+
database: options.database,
|
|
331
|
+
};
|
|
332
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
333
|
+
return adapter.count(connection, options);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Sum column values
|
|
337
|
+
*/
|
|
338
|
+
async sum(options) {
|
|
339
|
+
const config = {
|
|
340
|
+
env: options.env,
|
|
341
|
+
product: options.product,
|
|
342
|
+
database: options.database,
|
|
343
|
+
};
|
|
344
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
345
|
+
return adapter.sum(connection, options);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Get average value
|
|
349
|
+
*/
|
|
350
|
+
async avg(options) {
|
|
351
|
+
const config = {
|
|
352
|
+
env: options.env,
|
|
353
|
+
product: options.product,
|
|
354
|
+
database: options.database,
|
|
355
|
+
};
|
|
356
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
357
|
+
return adapter.avg(connection, options);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Get minimum value
|
|
361
|
+
*/
|
|
362
|
+
async min(options) {
|
|
363
|
+
const config = {
|
|
364
|
+
env: options.env,
|
|
365
|
+
product: options.product,
|
|
366
|
+
database: options.database,
|
|
367
|
+
};
|
|
368
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
369
|
+
return adapter.min(connection, options);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Get maximum value
|
|
373
|
+
*/
|
|
374
|
+
async max(options) {
|
|
375
|
+
const config = {
|
|
376
|
+
env: options.env,
|
|
377
|
+
product: options.product,
|
|
378
|
+
database: options.database,
|
|
379
|
+
};
|
|
380
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
381
|
+
return adapter.max(connection, options);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Group by and aggregate
|
|
385
|
+
*/
|
|
386
|
+
async groupBy(options) {
|
|
387
|
+
const config = {
|
|
388
|
+
env: options.env,
|
|
389
|
+
product: options.product,
|
|
390
|
+
database: options.database,
|
|
391
|
+
};
|
|
392
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
393
|
+
return adapter.groupBy(connection, options);
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Multiple aggregations
|
|
397
|
+
*/
|
|
398
|
+
async aggregate(options) {
|
|
399
|
+
const config = {
|
|
400
|
+
env: options.env,
|
|
401
|
+
product: options.product,
|
|
402
|
+
database: options.database,
|
|
403
|
+
};
|
|
404
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
405
|
+
return adapter.aggregate(connection, options);
|
|
406
|
+
}
|
|
407
|
+
// ==================== Schema Methods ====================
|
|
408
|
+
/**
|
|
409
|
+
* Create a table
|
|
410
|
+
*/
|
|
411
|
+
async createTable(config, schema, options) {
|
|
412
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
413
|
+
return adapter.createTable(connection, schema, options);
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Drop a table
|
|
417
|
+
*/
|
|
418
|
+
async dropTable(config, tableName) {
|
|
419
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
420
|
+
return adapter.dropTable(connection, tableName);
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Alter a table
|
|
424
|
+
*/
|
|
425
|
+
async alterTable(config, tableName, alterations, options) {
|
|
426
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
427
|
+
return adapter.alterTable(connection, tableName, alterations, options);
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Get table schema
|
|
431
|
+
*/
|
|
432
|
+
async getTableSchema(config, tableName) {
|
|
433
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
434
|
+
return adapter.getTableSchema(connection, tableName);
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* List all tables
|
|
438
|
+
*/
|
|
439
|
+
async listTables(config) {
|
|
440
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
441
|
+
return adapter.listTables(connection);
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Check if table exists
|
|
445
|
+
*/
|
|
446
|
+
async tableExists(config, tableName) {
|
|
447
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
448
|
+
return adapter.tableExists(connection, tableName);
|
|
449
|
+
}
|
|
450
|
+
// ==================== Index Methods ====================
|
|
451
|
+
/**
|
|
452
|
+
* Create an index
|
|
453
|
+
*/
|
|
454
|
+
async createIndex(options) {
|
|
455
|
+
const config = {
|
|
456
|
+
env: options.env,
|
|
457
|
+
product: options.product,
|
|
458
|
+
database: options.database,
|
|
459
|
+
};
|
|
460
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
461
|
+
return adapter.createIndex(connection, options);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Drop an index
|
|
465
|
+
*/
|
|
466
|
+
async dropIndex(options) {
|
|
467
|
+
const config = {
|
|
468
|
+
env: options.env,
|
|
469
|
+
product: options.product,
|
|
470
|
+
database: options.database,
|
|
471
|
+
};
|
|
472
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
473
|
+
return adapter.dropIndex(connection, options);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* List indexes
|
|
477
|
+
*/
|
|
478
|
+
async listIndexes(options) {
|
|
479
|
+
const config = {
|
|
480
|
+
env: options.env,
|
|
481
|
+
product: options.product,
|
|
482
|
+
database: options.database,
|
|
483
|
+
};
|
|
484
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
485
|
+
return adapter.listIndexes(connection, options);
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Get index statistics
|
|
489
|
+
*/
|
|
490
|
+
async getIndexStatistics(config, tableName, indexName) {
|
|
491
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
492
|
+
return adapter.getIndexStatistics(connection, tableName, indexName);
|
|
493
|
+
}
|
|
494
|
+
// ==================== Migration Methods ====================
|
|
495
|
+
/**
|
|
496
|
+
* Run migrations
|
|
497
|
+
*/
|
|
498
|
+
async runMigration(migration, options) {
|
|
499
|
+
const config = {
|
|
500
|
+
env: options.env,
|
|
501
|
+
product: options.product,
|
|
502
|
+
database: options.database,
|
|
503
|
+
};
|
|
504
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
505
|
+
return adapter.runMigration(connection, migration, options);
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Rollback migration
|
|
509
|
+
*/
|
|
510
|
+
async rollbackMigration(migration, options) {
|
|
511
|
+
const config = {
|
|
512
|
+
env: options.env,
|
|
513
|
+
product: options.product,
|
|
514
|
+
database: options.database,
|
|
515
|
+
};
|
|
516
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
517
|
+
return adapter.rollbackMigration(connection, migration, options);
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Get migration history
|
|
521
|
+
*/
|
|
522
|
+
async getMigrationHistory(options) {
|
|
523
|
+
const config = {
|
|
524
|
+
env: options.env,
|
|
525
|
+
product: options.product,
|
|
526
|
+
database: options.database,
|
|
527
|
+
};
|
|
528
|
+
const { connection, adapter } = await this.getConnection(config);
|
|
529
|
+
return adapter.getMigrationHistory(connection, options);
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Get migration status
|
|
533
|
+
*/
|
|
534
|
+
async getMigrationStatus(options) {
|
|
535
|
+
// TODO: Implement migration status logic
|
|
536
|
+
// - Fetch all defined migrations
|
|
537
|
+
// - Fetch migration history
|
|
538
|
+
// - Compare and return status
|
|
539
|
+
throw new Error('Not implemented');
|
|
540
|
+
}
|
|
541
|
+
// ==================== Utility Methods ====================
|
|
542
|
+
/**
|
|
543
|
+
* Close all connections
|
|
544
|
+
*/
|
|
545
|
+
async closeAll() {
|
|
546
|
+
const closePromises = Array.from(this.connections.values()).map((connection) => connection.disconnect());
|
|
547
|
+
await Promise.all(closePromises);
|
|
548
|
+
this.connections.clear();
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
exports.DatabaseService = DatabaseService;
|
|
552
|
+
//# sourceMappingURL=database.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.service.js","sourceRoot":"","sources":["../../src/database/database.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database module index
|
|
3
|
+
* Exports the main database service and all types
|
|
4
|
+
*/
|
|
5
|
+
export { DatabaseService } from './database.service';
|
|
6
|
+
export * from './types';
|
|
7
|
+
export { BaseDatabaseAdapter } from './adapters/base.adapter';
|
|
8
|
+
export { PostgreSQLAdapter } from './adapters/postgresql.adapter';
|
|
9
|
+
export { MongoDBAdapter } from './adapters/mongodb.adapter';
|
|
10
|
+
export { MySQLAdapter } from './adapters/mysql.adapter';
|
|
11
|
+
export { DynamoDBAdapter } from './adapters/dynamodb.adapter';
|
|
12
|
+
export { Transaction, Savepoint, TransactionFactory } from './utils/transaction';
|
|
13
|
+
export { generateMigrationTag, generateMigrationTimestamp, createMigration, createTable, dropTable, addColumn, dropColumn, modifyColumn, renameColumn, addIndex, dropIndex, addConstraint, dropConstraint, rawSql, createTableMigration, addColumnMigration, addIndexMigration, SchemaHelpers, generateMigrationFileContent, generateMigrationTemplate, } from './utils/migration.utils';
|
|
14
|
+
export { mapColumnTypeToNative, buildWhereClause, buildMongoQuery, escapeIdentifier, escapeValue, formatDatabaseError, isConnectionError, isDuplicateKeyError, isForeignKeyError, retryOperation, sanitizeTableName, camelToSnake, snakeToCamel, deepClone, } from './utils/helpers';
|
|
15
|
+
export { validateConnection, assertValidConnection } from './validators/connection.validator';
|
|
16
|
+
export type { IValidationResult } from './validators/connection.validator';
|
|
17
|
+
export { validateTableSchema, validateColumnDefinition, validateIndexDefinition, assertValidTableSchema, assertValidColumn, assertValidIndex, } from './validators/schema.validator';
|
|
18
|
+
export { validateQueryOptions, validateInsertData, validateUpdateData, assertValidQueryOptions, assertValidInsertData, assertValidUpdateData, } from './validators/query.validator';
|