@ciscode/database-kit 1.0.0 → 1.0.1
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/CHANGELOG.md +50 -4
- package/README.md +487 -148
- package/dist/adapters/mongo.adapter.d.ts +53 -3
- package/dist/adapters/mongo.adapter.d.ts.map +1 -1
- package/dist/adapters/mongo.adapter.js +410 -27
- package/dist/adapters/mongo.adapter.js.map +1 -1
- package/dist/adapters/postgres.adapter.d.ts +50 -3
- package/dist/adapters/postgres.adapter.d.ts.map +1 -1
- package/dist/adapters/postgres.adapter.js +439 -45
- package/dist/adapters/postgres.adapter.js.map +1 -1
- package/dist/config/database.config.d.ts +1 -1
- package/dist/config/database.config.d.ts.map +1 -1
- package/dist/config/database.config.js +13 -13
- package/dist/config/database.config.js.map +1 -1
- package/dist/config/database.constants.js +7 -7
- package/dist/contracts/database.contracts.d.ts +283 -6
- package/dist/contracts/database.contracts.d.ts.map +1 -1
- package/dist/contracts/database.contracts.js +6 -1
- package/dist/contracts/database.contracts.js.map +1 -1
- package/dist/database-kit.module.d.ts +2 -2
- package/dist/database-kit.module.d.ts.map +1 -1
- package/dist/database-kit.module.js +1 -2
- package/dist/database-kit.module.js.map +1 -1
- package/dist/filters/database-exception.filter.d.ts +1 -1
- package/dist/filters/database-exception.filter.d.ts.map +1 -1
- package/dist/filters/database-exception.filter.js +43 -43
- package/dist/filters/database-exception.filter.js.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/database.decorators.d.ts.map +1 -1
- package/dist/middleware/database.decorators.js.map +1 -1
- package/dist/services/database.service.d.ts +83 -5
- package/dist/services/database.service.d.ts.map +1 -1
- package/dist/services/database.service.js +136 -16
- package/dist/services/database.service.js.map +1 -1
- package/dist/services/logger.service.d.ts +1 -1
- package/dist/services/logger.service.d.ts.map +1 -1
- package/dist/services/logger.service.js +1 -1
- package/dist/services/logger.service.js.map +1 -1
- package/dist/utils/pagination.utils.d.ts +2 -2
- package/dist/utils/pagination.utils.d.ts.map +1 -1
- package/dist/utils/pagination.utils.js +9 -6
- package/dist/utils/pagination.utils.js.map +1 -1
- package/dist/utils/validation.utils.d.ts.map +1 -1
- package/dist/utils/validation.utils.js +5 -5
- package/dist/utils/validation.utils.js.map +1 -1
- package/package.json +28 -8
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// src/services/database.service.ts
|
|
3
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
4
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
5
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -46,7 +45,7 @@ let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
|
46
45
|
* Gracefully closes all database connections.
|
|
47
46
|
*/
|
|
48
47
|
async onModuleDestroy() {
|
|
49
|
-
this.logger.log(
|
|
48
|
+
this.logger.log("Cleaning up database connections...");
|
|
50
49
|
await this.disconnect();
|
|
51
50
|
}
|
|
52
51
|
/**
|
|
@@ -61,9 +60,9 @@ let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
|
61
60
|
isConnected() {
|
|
62
61
|
var _a, _b, _c, _d;
|
|
63
62
|
switch (this.config.type) {
|
|
64
|
-
case
|
|
63
|
+
case "mongo":
|
|
65
64
|
return (_b = (_a = this.mongoAdapter) === null || _a === void 0 ? void 0 : _a.isConnected()) !== null && _b !== void 0 ? _b : false;
|
|
66
|
-
case
|
|
65
|
+
case "postgres":
|
|
67
66
|
return (_d = (_c = this.postgresAdapter) === null || _c === void 0 ? void 0 : _c.isConnected()) !== null && _d !== void 0 ? _d : false;
|
|
68
67
|
default:
|
|
69
68
|
return false;
|
|
@@ -75,20 +74,20 @@ let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
|
75
74
|
*/
|
|
76
75
|
async connect() {
|
|
77
76
|
switch (this.config.type) {
|
|
78
|
-
case
|
|
77
|
+
case "mongo": {
|
|
79
78
|
if (!this.mongoAdapter) {
|
|
80
79
|
this.mongoAdapter = new mongo_adapter_1.MongoAdapter(this.config);
|
|
81
80
|
}
|
|
82
81
|
await this.mongoAdapter.connect();
|
|
83
|
-
this.logger.log(
|
|
82
|
+
this.logger.log("MongoDB connection established");
|
|
84
83
|
break;
|
|
85
84
|
}
|
|
86
|
-
case
|
|
85
|
+
case "postgres": {
|
|
87
86
|
if (!this.postgresAdapter) {
|
|
88
87
|
this.postgresAdapter = new postgres_adapter_1.PostgresAdapter(this.config);
|
|
89
88
|
}
|
|
90
89
|
this.postgresAdapter.connect();
|
|
91
|
-
this.logger.log(
|
|
90
|
+
this.logger.log("PostgreSQL connection pool established");
|
|
92
91
|
break;
|
|
93
92
|
}
|
|
94
93
|
default: {
|
|
@@ -111,10 +110,10 @@ let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
|
111
110
|
await this.postgresAdapter.disconnect();
|
|
112
111
|
this.postgresAdapter = undefined;
|
|
113
112
|
}
|
|
114
|
-
this.logger.log(
|
|
113
|
+
this.logger.log("All database connections closed");
|
|
115
114
|
}
|
|
116
115
|
catch (error) {
|
|
117
|
-
this.logger.error(
|
|
116
|
+
this.logger.error("Error during database disconnect", error);
|
|
118
117
|
throw error;
|
|
119
118
|
}
|
|
120
119
|
}
|
|
@@ -132,7 +131,7 @@ let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
|
132
131
|
* ```
|
|
133
132
|
*/
|
|
134
133
|
createMongoRepository(options) {
|
|
135
|
-
if (this.config.type !==
|
|
134
|
+
if (this.config.type !== "mongo") {
|
|
136
135
|
throw new Error(`Database type is "${this.config.type}". createMongoRepository can only be used when type === "mongo".`);
|
|
137
136
|
}
|
|
138
137
|
if (!this.mongoAdapter) {
|
|
@@ -157,7 +156,7 @@ let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
|
157
156
|
* ```
|
|
158
157
|
*/
|
|
159
158
|
createPostgresRepository(cfg) {
|
|
160
|
-
if (this.config.type !==
|
|
159
|
+
if (this.config.type !== "postgres") {
|
|
161
160
|
throw new Error(`Database type is "${this.config.type}". createPostgresRepository can only be used when type === "postgres".`);
|
|
162
161
|
}
|
|
163
162
|
if (!this.postgresAdapter) {
|
|
@@ -173,8 +172,8 @@ let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
|
173
172
|
* @throws Error if database type is not 'mongo'
|
|
174
173
|
*/
|
|
175
174
|
getMongoAdapter() {
|
|
176
|
-
if (this.config.type !==
|
|
177
|
-
throw new Error(
|
|
175
|
+
if (this.config.type !== "mongo") {
|
|
176
|
+
throw new Error("getMongoAdapter() is only available for MongoDB connections");
|
|
178
177
|
}
|
|
179
178
|
if (!this.mongoAdapter) {
|
|
180
179
|
this.mongoAdapter = new mongo_adapter_1.MongoAdapter(this.config);
|
|
@@ -188,14 +187,135 @@ let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
|
188
187
|
* @throws Error if database type is not 'postgres'
|
|
189
188
|
*/
|
|
190
189
|
getPostgresAdapter() {
|
|
191
|
-
if (this.config.type !==
|
|
192
|
-
throw new Error(
|
|
190
|
+
if (this.config.type !== "postgres") {
|
|
191
|
+
throw new Error("getPostgresAdapter() is only available for PostgreSQL connections");
|
|
193
192
|
}
|
|
194
193
|
if (!this.postgresAdapter) {
|
|
195
194
|
this.postgresAdapter = new postgres_adapter_1.PostgresAdapter(this.config);
|
|
196
195
|
}
|
|
197
196
|
return this.postgresAdapter;
|
|
198
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Executes a callback within a MongoDB transaction.
|
|
200
|
+
* All database operations within the callback are atomic.
|
|
201
|
+
*
|
|
202
|
+
* **Note:** MongoDB transactions require a replica set.
|
|
203
|
+
*
|
|
204
|
+
* @param callback - Function to execute within the transaction
|
|
205
|
+
* @param options - Transaction options
|
|
206
|
+
* @returns Result of the callback function
|
|
207
|
+
* @throws Error if database type is not 'mongo' or transaction fails
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* ```typescript
|
|
211
|
+
* const result = await db.withMongoTransaction(async (ctx) => {
|
|
212
|
+
* const usersRepo = ctx.createRepository<User>({ model: UserModel });
|
|
213
|
+
* const user = await usersRepo.create({ name: 'John' });
|
|
214
|
+
* return user;
|
|
215
|
+
* });
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
async withMongoTransaction(callback, options) {
|
|
219
|
+
if (this.config.type !== "mongo") {
|
|
220
|
+
throw new Error(`Database type is "${this.config.type}". withMongoTransaction can only be used when type === "mongo".`);
|
|
221
|
+
}
|
|
222
|
+
const adapter = this.getMongoAdapter();
|
|
223
|
+
return adapter.withTransaction(callback, options);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Executes a callback within a PostgreSQL transaction.
|
|
227
|
+
* All database operations within the callback are atomic.
|
|
228
|
+
*
|
|
229
|
+
* @param callback - Function to execute within the transaction
|
|
230
|
+
* @param options - Transaction options including isolation level
|
|
231
|
+
* @returns Result of the callback function
|
|
232
|
+
* @throws Error if database type is not 'postgres' or transaction fails
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* const result = await db.withPostgresTransaction(async (ctx) => {
|
|
237
|
+
* const usersRepo = ctx.createRepository<User>({ table: 'users' });
|
|
238
|
+
* const user = await usersRepo.create({ name: 'John' });
|
|
239
|
+
* return user;
|
|
240
|
+
* }, { isolationLevel: 'serializable' });
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
async withPostgresTransaction(callback, options) {
|
|
244
|
+
if (this.config.type !== "postgres") {
|
|
245
|
+
throw new Error(`Database type is "${this.config.type}". withPostgresTransaction can only be used when type === "postgres".`);
|
|
246
|
+
}
|
|
247
|
+
const adapter = this.getPostgresAdapter();
|
|
248
|
+
return adapter.withTransaction(callback, options);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Generic transaction method that works with the configured database type.
|
|
252
|
+
* Automatically routes to the appropriate transaction handler.
|
|
253
|
+
*
|
|
254
|
+
* @param callback - Function to execute within the transaction
|
|
255
|
+
* @param options - Transaction options
|
|
256
|
+
* @returns Result of the callback function
|
|
257
|
+
*
|
|
258
|
+
* @example
|
|
259
|
+
* ```typescript
|
|
260
|
+
* // Works with whatever database type is configured
|
|
261
|
+
* const result = await db.withTransaction(async (ctx) => {
|
|
262
|
+
* const repo = ctx.createRepository({ ... });
|
|
263
|
+
* return repo.create({ name: 'John' });
|
|
264
|
+
* });
|
|
265
|
+
* ```
|
|
266
|
+
*/
|
|
267
|
+
async withTransaction(callback, options) {
|
|
268
|
+
switch (this.config.type) {
|
|
269
|
+
case "mongo":
|
|
270
|
+
return this.withMongoTransaction(callback, options);
|
|
271
|
+
case "postgres":
|
|
272
|
+
return this.withPostgresTransaction(callback, options);
|
|
273
|
+
default: {
|
|
274
|
+
const exhaustiveCheck = this.config;
|
|
275
|
+
throw new Error(`Unsupported database type: ${exhaustiveCheck.type}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Performs a health check on the database connection.
|
|
281
|
+
* Useful for load balancer health endpoints and monitoring.
|
|
282
|
+
*
|
|
283
|
+
* @returns Health check result with status, response time, and details
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* ```typescript
|
|
287
|
+
* // In a health check endpoint
|
|
288
|
+
* @Get('/health')
|
|
289
|
+
* async healthCheck() {
|
|
290
|
+
* const result = await this.db.healthCheck();
|
|
291
|
+
* if (!result.healthy) {
|
|
292
|
+
* throw new ServiceUnavailableException(result.error);
|
|
293
|
+
* }
|
|
294
|
+
* return result;
|
|
295
|
+
* }
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
298
|
+
async healthCheck() {
|
|
299
|
+
switch (this.config.type) {
|
|
300
|
+
case "mongo": {
|
|
301
|
+
const adapter = this.getMongoAdapter();
|
|
302
|
+
return adapter.healthCheck();
|
|
303
|
+
}
|
|
304
|
+
case "postgres": {
|
|
305
|
+
const adapter = this.getPostgresAdapter();
|
|
306
|
+
return adapter.healthCheck();
|
|
307
|
+
}
|
|
308
|
+
default: {
|
|
309
|
+
const exhaustiveCheck = this.config;
|
|
310
|
+
return {
|
|
311
|
+
healthy: false,
|
|
312
|
+
responseTimeMs: 0,
|
|
313
|
+
type: exhaustiveCheck.type,
|
|
314
|
+
error: `Unsupported database type: ${exhaustiveCheck.type}`,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
199
319
|
};
|
|
200
320
|
exports.DatabaseService = DatabaseService;
|
|
201
321
|
exports.DatabaseService = DatabaseService = DatabaseService_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.service.js","sourceRoot":"","sources":["../../src/services/database.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database.service.js","sourceRoot":"","sources":["../../src/services/database.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE9D;;;;;;;;;;;;;;;GAeG;AACH,qBACa,aAAa;
|
|
1
|
+
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE9D;;;;;;;;;;;;;;;GAeG;AACH,qBACa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5C;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9D;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7C;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9C;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;CAGvC"}
|
|
@@ -27,7 +27,7 @@ const common_1 = require("@nestjs/common");
|
|
|
27
27
|
*/
|
|
28
28
|
let LoggerService = class LoggerService {
|
|
29
29
|
constructor() {
|
|
30
|
-
this.logger = new common_1.Logger(
|
|
30
|
+
this.logger = new common_1.Logger("DatabaseKit");
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Logs a message at the 'log' level.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":";AAAA,iCAAiC;;;;;;;;;AAEjC,2CAA8D;AAE9D;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,aAAa,GAAnB,MAAM,aAAa;IAAnB;
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":";AAAA,iCAAiC;;;;;;;;;AAEjC,2CAA8D;AAE9D;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,aAAa,GAAnB,MAAM,aAAa;IAAnB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,aAAa,CAAC,CAAC;IA6DtD,CAAC;IA3DC;;;;;OAKG;IACH,GAAG,CAAC,OAAe,EAAE,OAAgB;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAe,EAAE,KAAc,EAAE,OAAgB;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,OAAe,EAAE,OAAgB;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAe,EAAE,OAAgB;;QACrC,MAAA,MAAA,IAAI,CAAC,MAAM,EAAC,KAAK,mDAAG,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,OAAe,EAAE,OAAgB;;QACvC,MAAA,MAAA,IAAI,CAAC,MAAM,EAAC,OAAO,mDAAG,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,MAAkB;QAC7B,eAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF,CAAA;AA9DY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;GACA,aAAa,CA8DzB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PageOptions, PageResult } from
|
|
1
|
+
import type { PageOptions, PageResult } from "../contracts/database.contracts";
|
|
2
2
|
/**
|
|
3
3
|
* Utility functions for pagination operations.
|
|
4
4
|
*/
|
|
@@ -45,7 +45,7 @@ export declare function createPageResult<T>(data: T[], page: number, limit: numb
|
|
|
45
45
|
* // Returns: { createdAt: 'desc', name: 'asc' }
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
|
-
export declare function parseSortString(sortString: string): Record<string,
|
|
48
|
+
export declare function parseSortString(sortString: string): Record<string, "asc" | "desc">;
|
|
49
49
|
/**
|
|
50
50
|
* Calculates the offset for a given page and limit.
|
|
51
51
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.utils.d.ts","sourceRoot":"","sources":["../../src/utils/pagination.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"pagination.utils.d.ts","sourceRoot":"","sources":["../../src/utils/pagination.utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG/E;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,OAAO,GAAE,WAAW,CAAC,CAAC,CAAM,GAC3B,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAmB1B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAMvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,UAAU,CAAC,CAAC,CAAC,CAUf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAqBhC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE"}
|
|
@@ -86,16 +86,19 @@ function parseSortString(sortString) {
|
|
|
86
86
|
const result = {};
|
|
87
87
|
if (!sortString)
|
|
88
88
|
return result;
|
|
89
|
-
const fields = sortString
|
|
89
|
+
const fields = sortString
|
|
90
|
+
.split(",")
|
|
91
|
+
.map((f) => f.trim())
|
|
92
|
+
.filter(Boolean);
|
|
90
93
|
for (const field of fields) {
|
|
91
|
-
if (field.startsWith(
|
|
92
|
-
result[field.slice(1)] =
|
|
94
|
+
if (field.startsWith("-")) {
|
|
95
|
+
result[field.slice(1)] = "desc";
|
|
93
96
|
}
|
|
94
|
-
else if (field.startsWith(
|
|
95
|
-
result[field.slice(1)] =
|
|
97
|
+
else if (field.startsWith("+")) {
|
|
98
|
+
result[field.slice(1)] = "asc";
|
|
96
99
|
}
|
|
97
100
|
else {
|
|
98
|
-
result[field] =
|
|
101
|
+
result[field] = "asc";
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
104
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.utils.js","sourceRoot":"","sources":["../../src/utils/pagination.utils.ts"],"names":[],"mappings":";AAAA,gCAAgC;;
|
|
1
|
+
{"version":3,"file":"pagination.utils.js","sourceRoot":"","sources":["../../src/utils/pagination.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.utils.d.ts","sourceRoot":"","sources":["../../src/utils/validation.utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"validation.utils.d.ts","sourceRoot":"","sources":["../../src/utils/validation.utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAK/C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,cAAc,EAAE,MAAM,EAAE,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAazC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,GAAG,EAAE,CAAC,EACN,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,GAAG,EAAE,CAAC,EACN,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,CAAC,CAAC,CAQZ"}
|
|
@@ -18,7 +18,7 @@ exports.omitFields = omitFields;
|
|
|
18
18
|
* @returns True if valid ObjectId format
|
|
19
19
|
*/
|
|
20
20
|
function isValidMongoId(id) {
|
|
21
|
-
if (!id || typeof id !==
|
|
21
|
+
if (!id || typeof id !== "string")
|
|
22
22
|
return false;
|
|
23
23
|
return /^[a-f\d]{24}$/i.test(id);
|
|
24
24
|
}
|
|
@@ -29,7 +29,7 @@ function isValidMongoId(id) {
|
|
|
29
29
|
* @returns True if valid UUID format
|
|
30
30
|
*/
|
|
31
31
|
function isValidUuid(id) {
|
|
32
|
-
if (!id || typeof id !==
|
|
32
|
+
if (!id || typeof id !== "string")
|
|
33
33
|
return false;
|
|
34
34
|
return /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(id);
|
|
35
35
|
}
|
|
@@ -40,10 +40,10 @@ function isValidUuid(id) {
|
|
|
40
40
|
* @returns True if positive integer
|
|
41
41
|
*/
|
|
42
42
|
function isPositiveInteger(value) {
|
|
43
|
-
if (typeof value ===
|
|
43
|
+
if (typeof value === "number") {
|
|
44
44
|
return Number.isInteger(value) && value > 0;
|
|
45
45
|
}
|
|
46
|
-
if (typeof value ===
|
|
46
|
+
if (typeof value === "string") {
|
|
47
47
|
const parsed = parseInt(value, 10);
|
|
48
48
|
return !isNaN(parsed) && parsed > 0 && String(parsed) === value;
|
|
49
49
|
}
|
|
@@ -74,7 +74,7 @@ function sanitizeFilter(filter) {
|
|
|
74
74
|
function validateRequiredFields(obj, requiredFields) {
|
|
75
75
|
const missing = [];
|
|
76
76
|
for (const field of requiredFields) {
|
|
77
|
-
if (obj[field] === undefined || obj[field] === null || obj[field] ===
|
|
77
|
+
if (obj[field] === undefined || obj[field] === null || obj[field] === "") {
|
|
78
78
|
missing.push(field);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.utils.js","sourceRoot":"","sources":["../../src/utils/validation.utils.ts"],"names":[],"mappings":";AAAA,gCAAgC;;AAYhC,wCAGC;AAQD,
|
|
1
|
+
{"version":3,"file":"validation.utils.js","sourceRoot":"","sources":["../../src/utils/validation.utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ciscode/database-kit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "A NestJS-friendly, OOP-style database library providing a unified repository API for MongoDB and PostgreSQL.",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
7
8
|
"license": "MIT",
|
|
8
|
-
"author": "C International Service <info@
|
|
9
|
+
"author": "C International Service <info@ciscod.com>",
|
|
9
10
|
"repository": {
|
|
10
11
|
"type": "git",
|
|
11
12
|
"url": "https://github.com/CISCODE-MA/DatabaseKit.git"
|
|
@@ -17,13 +18,18 @@
|
|
|
17
18
|
"scripts": {
|
|
18
19
|
"build": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json",
|
|
19
20
|
"build:watch": "tsc -w -p tsconfig.json",
|
|
20
|
-
"clean": "rm -rf dist",
|
|
21
|
-
"lint": "eslint
|
|
22
|
-
"lint:fix": "eslint
|
|
21
|
+
"clean": "rm -rf dist coverage",
|
|
22
|
+
"lint": "eslint src/",
|
|
23
|
+
"lint:fix": "eslint src/ --fix",
|
|
24
|
+
"format": "prettier --check .",
|
|
25
|
+
"format:write": "prettier --write .",
|
|
26
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
23
27
|
"test": "jest",
|
|
24
28
|
"test:watch": "jest --watch",
|
|
25
29
|
"test:cov": "jest --coverage",
|
|
26
|
-
"
|
|
30
|
+
"verify": "npm run lint && npm run typecheck && npm run test:cov",
|
|
31
|
+
"prepublishOnly": "npm run verify && npm run build",
|
|
32
|
+
"prepare": "husky install"
|
|
27
33
|
},
|
|
28
34
|
"engines": {
|
|
29
35
|
"node": ">=18"
|
|
@@ -54,23 +60,30 @@
|
|
|
54
60
|
"reflect-metadata": "^0.2.0"
|
|
55
61
|
},
|
|
56
62
|
"devDependencies": {
|
|
63
|
+
"@changesets/cli": "^2.27.7",
|
|
57
64
|
"@eslint/js": "^9.28.0",
|
|
58
65
|
"@nestjs/common": "^11.1.12",
|
|
59
66
|
"@nestjs/core": "^11.1.12",
|
|
60
67
|
"@nestjs/testing": "^11.1.12",
|
|
61
68
|
"@types/jest": "^29.5.14",
|
|
62
69
|
"@types/node": "^22.15.29",
|
|
70
|
+
"@typescript-eslint/eslint-plugin": "^8.50.1",
|
|
71
|
+
"@typescript-eslint/parser": "^8.50.1",
|
|
63
72
|
"eslint": "^9.28.0",
|
|
73
|
+
"eslint-plugin-import": "^2.32.0",
|
|
64
74
|
"globals": "^16.2.0",
|
|
75
|
+
"husky": "^9.1.7",
|
|
65
76
|
"jest": "^29.7.0",
|
|
77
|
+
"lint-staged": "^16.2.7",
|
|
78
|
+
"prettier": "^3.4.2",
|
|
66
79
|
"reflect-metadata": "^0.2.2",
|
|
80
|
+
"semantic-release": "^25.0.3",
|
|
67
81
|
"ts-jest": "^29.4.0",
|
|
68
82
|
"ts-node": "^10.9.2",
|
|
69
83
|
"tsc-alias": "^1.8.15",
|
|
70
84
|
"typescript": "^5.8.3",
|
|
71
85
|
"typescript-eslint": "^8.33.1"
|
|
72
86
|
},
|
|
73
|
-
"type": "commonjs",
|
|
74
87
|
"files": [
|
|
75
88
|
"dist",
|
|
76
89
|
"README.md",
|
|
@@ -79,5 +92,12 @@
|
|
|
79
92
|
],
|
|
80
93
|
"publishConfig": {
|
|
81
94
|
"access": "public"
|
|
95
|
+
},
|
|
96
|
+
"lint-staged": {
|
|
97
|
+
"*.{ts,tsx,js,jsx}": [
|
|
98
|
+
"eslint --fix",
|
|
99
|
+
"prettier --write"
|
|
100
|
+
],
|
|
101
|
+
"*.{json,md,yaml,yml}": "prettier --write"
|
|
82
102
|
}
|
|
83
|
-
}
|
|
103
|
+
}
|