@xfilecom/core-sdk 1.3.23
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/README.md +664 -0
- package/dist/core.module.d.ts +39 -0
- package/dist/core.module.js +188 -0
- package/dist/core.module.js.map +1 -0
- package/dist/database/database.constants.d.ts +2 -0
- package/dist/database/database.constants.js +6 -0
- package/dist/database/database.constants.js.map +1 -0
- package/dist/database/database.module.d.ts +19 -0
- package/dist/database/database.module.js +56 -0
- package/dist/database/database.module.js.map +1 -0
- package/dist/database/database.query.d.ts +103 -0
- package/dist/database/database.query.example.d.ts +36 -0
- package/dist/database/database.query.example.js +148 -0
- package/dist/database/database.query.example.js.map +1 -0
- package/dist/database/database.query.js +369 -0
- package/dist/database/database.query.js.map +1 -0
- package/dist/database/database.service.d.ts +18 -0
- package/dist/database/database.service.js +110 -0
- package/dist/database/database.service.js.map +1 -0
- package/dist/database/example-usage.d.ts +0 -0
- package/dist/database/example-usage.js +1 -0
- package/dist/database/example-usage.js.map +1 -0
- package/dist/decorators/public.decorator.d.ts +2 -0
- package/dist/decorators/public.decorator.js +8 -0
- package/dist/decorators/public.decorator.js.map +1 -0
- package/dist/decorators/roles.decorator.d.ts +2 -0
- package/dist/decorators/roles.decorator.js +8 -0
- package/dist/decorators/roles.decorator.js.map +1 -0
- package/dist/decorators/user.decorator.d.ts +7 -0
- package/dist/decorators/user.decorator.js +10 -0
- package/dist/decorators/user.decorator.js.map +1 -0
- package/dist/filters/exception.filter.d.ts +36 -0
- package/dist/filters/exception.filter.js +201 -0
- package/dist/filters/exception.filter.js.map +1 -0
- package/dist/guards/jwt-auth.guard.d.ts +14 -0
- package/dist/guards/jwt-auth.guard.js +103 -0
- package/dist/guards/jwt-auth.guard.js.map +1 -0
- package/dist/guards/roles.guard.d.ts +7 -0
- package/dist/guards/roles.guard.js +47 -0
- package/dist/guards/roles.guard.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/database-check.interceptor.d.ts +12 -0
- package/dist/interceptors/database-check.interceptor.js +60 -0
- package/dist/interceptors/database-check.interceptor.js.map +1 -0
- package/dist/interceptors/error-handling.interceptor.d.ts +8 -0
- package/dist/interceptors/error-handling.interceptor.js +33 -0
- package/dist/interceptors/error-handling.interceptor.js.map +1 -0
- package/dist/interceptors/logging.interceptor.d.ts +21 -0
- package/dist/interceptors/logging.interceptor.js +167 -0
- package/dist/interceptors/logging.interceptor.js.map +1 -0
- package/dist/interceptors/response-transform.interceptor.d.ts +5 -0
- package/dist/interceptors/response-transform.interceptor.js +30 -0
- package/dist/interceptors/response-transform.interceptor.js.map +1 -0
- package/dist/utils/auth.helpers.d.ts +19 -0
- package/dist/utils/auth.helpers.js +77 -0
- package/dist/utils/auth.helpers.js.map +1 -0
- package/dist/utils/config-loader.utils.d.ts +22 -0
- package/dist/utils/config-loader.utils.js +77 -0
- package/dist/utils/config-loader.utils.js.map +1 -0
- package/dist/utils/config.validator.d.ts +13 -0
- package/dist/utils/config.validator.js +82 -0
- package/dist/utils/config.validator.js.map +1 -0
- package/dist/utils/controller.helpers.d.ts +58 -0
- package/dist/utils/controller.helpers.js +104 -0
- package/dist/utils/controller.helpers.js.map +1 -0
- package/dist/utils/crypto.utils.d.ts +12 -0
- package/dist/utils/crypto.utils.js +53 -0
- package/dist/utils/crypto.utils.js.map +1 -0
- package/dist/utils/email-hash.utils.d.ts +7 -0
- package/dist/utils/email-hash.utils.js +42 -0
- package/dist/utils/email-hash.utils.js.map +1 -0
- package/dist/utils/env.utils.d.ts +8 -0
- package/dist/utils/env.utils.js +27 -0
- package/dist/utils/env.utils.js.map +1 -0
- package/dist/utils/error.utils.d.ts +6 -0
- package/dist/utils/error.utils.js +65 -0
- package/dist/utils/error.utils.js.map +1 -0
- package/dist/utils/hash-verification.utils.d.ts +35 -0
- package/dist/utils/hash-verification.utils.js +133 -0
- package/dist/utils/hash-verification.utils.js.map +1 -0
- package/dist/utils/logger.helpers.d.ts +71 -0
- package/dist/utils/logger.helpers.js +293 -0
- package/dist/utils/logger.helpers.js.map +1 -0
- package/dist/utils/logging.config.d.ts +6 -0
- package/dist/utils/logging.config.js +42 -0
- package/dist/utils/logging.config.js.map +1 -0
- package/dist/utils/service.helpers.d.ts +22 -0
- package/dist/utils/service.helpers.js +73 -0
- package/dist/utils/service.helpers.js.map +1 -0
- package/dist/utils/yaml-config.loader.d.ts +15 -0
- package/dist/utils/yaml-config.loader.js +219 -0
- package/dist/utils/yaml-config.loader.js.map +1 -0
- package/package.json +47 -0
- package/scripts/publish-to-gitlab.mjs +209 -0
|
@@ -0,0 +1,369 @@
|
|
|
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.DatabaseQuery = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
18
|
+
const database_constants_1 = require("./database.constants");
|
|
19
|
+
const database_service_1 = require("./database.service");
|
|
20
|
+
let DatabaseQuery = class DatabaseQuery {
|
|
21
|
+
constructor(databaseService, schema) {
|
|
22
|
+
this.databaseService = databaseService;
|
|
23
|
+
this.schema = schema;
|
|
24
|
+
}
|
|
25
|
+
getDb() {
|
|
26
|
+
return this.databaseService.db;
|
|
27
|
+
}
|
|
28
|
+
getTable(tableName) {
|
|
29
|
+
const table = this.schema[tableName];
|
|
30
|
+
if (!table) {
|
|
31
|
+
throw new Error(`Table "${tableName}" not found in schema`);
|
|
32
|
+
}
|
|
33
|
+
return table;
|
|
34
|
+
}
|
|
35
|
+
selectFields(table, fields) {
|
|
36
|
+
if (fields.length === 0) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const selectedFields = {};
|
|
40
|
+
for (const field of fields) {
|
|
41
|
+
if (table[field]) {
|
|
42
|
+
selectedFields[field] = table[field];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return Object.keys(selectedFields).length > 0 ? selectedFields : undefined;
|
|
46
|
+
}
|
|
47
|
+
buildSearchCondition(table, search) {
|
|
48
|
+
if (!search || search.length === 0) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
const conditions = search
|
|
52
|
+
.filter((s) => s.keyword && s.keyword.trim() !== '' && s.fields.length > 0)
|
|
53
|
+
.map((s) => {
|
|
54
|
+
const fieldConditions = s.fields.map((field) => {
|
|
55
|
+
const tableField = table[field];
|
|
56
|
+
if (tableField) {
|
|
57
|
+
return (0, drizzle_orm_1.like)(tableField, `%${s.keyword}%`);
|
|
58
|
+
}
|
|
59
|
+
return (0, drizzle_orm_1.sql) `${drizzle_orm_1.sql.raw(field)} LIKE ${`%${s.keyword}%`}`;
|
|
60
|
+
});
|
|
61
|
+
return (0, drizzle_orm_1.or)(...fieldConditions);
|
|
62
|
+
});
|
|
63
|
+
return conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined;
|
|
64
|
+
}
|
|
65
|
+
isPlainObjectWhere(v) {
|
|
66
|
+
return typeof v === 'object' && v !== null && !('getSQL' in v);
|
|
67
|
+
}
|
|
68
|
+
buildWhereFromObject(tableSchema, whereObj) {
|
|
69
|
+
const conditions = Object.entries(whereObj)
|
|
70
|
+
.filter(([, v]) => v !== undefined && v !== null)
|
|
71
|
+
.map(([field, value]) => {
|
|
72
|
+
const col = tableSchema[field];
|
|
73
|
+
if (col)
|
|
74
|
+
return (0, drizzle_orm_1.eq)(col, value);
|
|
75
|
+
return (0, drizzle_orm_1.sql) `${drizzle_orm_1.sql.raw(field)} = ${value}`;
|
|
76
|
+
});
|
|
77
|
+
if (conditions.length === 0)
|
|
78
|
+
return undefined;
|
|
79
|
+
return conditions.length === 1 ? conditions[0] : (0, drizzle_orm_1.and)(...conditions);
|
|
80
|
+
}
|
|
81
|
+
normalizeWhere(tableSchema, w) {
|
|
82
|
+
if (w == null)
|
|
83
|
+
return undefined;
|
|
84
|
+
if (this.isPlainObjectWhere(w))
|
|
85
|
+
return this.buildWhereFromObject(tableSchema, w);
|
|
86
|
+
return w;
|
|
87
|
+
}
|
|
88
|
+
buildSortCondition(table, sort) {
|
|
89
|
+
if (!sort || sort.length === 0) {
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
return sort.map((s) => {
|
|
93
|
+
const tableField = table[s.field];
|
|
94
|
+
if (tableField) {
|
|
95
|
+
return s.order === 'desc' ? (0, drizzle_orm_1.desc)(tableField) : (0, drizzle_orm_1.asc)(tableField);
|
|
96
|
+
}
|
|
97
|
+
return s.order === 'desc'
|
|
98
|
+
? (0, drizzle_orm_1.sql) `${drizzle_orm_1.sql.raw(s.field)} DESC`
|
|
99
|
+
: (0, drizzle_orm_1.sql) `${drizzle_orm_1.sql.raw(s.field)} ASC`;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
getTableIdColumn(table) {
|
|
103
|
+
if (table.id)
|
|
104
|
+
return table.id;
|
|
105
|
+
const key = Object.keys(table).find((k) => k.toLowerCase().includes('id'));
|
|
106
|
+
return key ? table[key] : table.id;
|
|
107
|
+
}
|
|
108
|
+
async findOne(table, options = {}) {
|
|
109
|
+
const db = this.getDb();
|
|
110
|
+
const tableSchema = this.getTable(table);
|
|
111
|
+
const selectedFields = this.selectFields(tableSchema, options.fields ?? []);
|
|
112
|
+
const whereConditions = [];
|
|
113
|
+
const whereNorm = this.normalizeWhere(tableSchema, options.where);
|
|
114
|
+
if (whereNorm)
|
|
115
|
+
whereConditions.push(whereNorm);
|
|
116
|
+
const searchCondition = this.buildSearchCondition(tableSchema, options.search ?? []);
|
|
117
|
+
if (searchCondition)
|
|
118
|
+
whereConditions.push(searchCondition);
|
|
119
|
+
const whereClause = whereConditions.length > 0 ? (0, drizzle_orm_1.and)(...whereConditions) : undefined;
|
|
120
|
+
const orderBy = this.buildSortCondition(tableSchema, options.sort ?? []);
|
|
121
|
+
let queryBuilder = selectedFields
|
|
122
|
+
? db.select(selectedFields).from(tableSchema)
|
|
123
|
+
: db.select().from(tableSchema);
|
|
124
|
+
if (whereClause)
|
|
125
|
+
queryBuilder = queryBuilder.where(whereClause);
|
|
126
|
+
if (orderBy.length > 0)
|
|
127
|
+
queryBuilder = queryBuilder.orderBy(...orderBy);
|
|
128
|
+
queryBuilder = queryBuilder.limit(1);
|
|
129
|
+
const rows = await queryBuilder;
|
|
130
|
+
return rows[0] ?? undefined;
|
|
131
|
+
}
|
|
132
|
+
async findById(table, id, options = {}) {
|
|
133
|
+
const db = this.getDb();
|
|
134
|
+
const tableSchema = this.getTable(table);
|
|
135
|
+
const idCol = options.idField ? tableSchema[options.idField] : this.getTableIdColumn(tableSchema);
|
|
136
|
+
if (!idCol) {
|
|
137
|
+
throw new Error(`Table "${table}" has no id column. Provide idField in options.`);
|
|
138
|
+
}
|
|
139
|
+
const selectedFields = this.selectFields(tableSchema, options.fields || []);
|
|
140
|
+
let queryBuilder = selectedFields
|
|
141
|
+
? db.select(selectedFields).from(tableSchema)
|
|
142
|
+
: db.select().from(tableSchema);
|
|
143
|
+
queryBuilder = queryBuilder.where((0, drizzle_orm_1.eq)(idCol, id)).limit(1);
|
|
144
|
+
const rows = await queryBuilder;
|
|
145
|
+
return rows[0] ?? undefined;
|
|
146
|
+
}
|
|
147
|
+
async count(table, options = {}) {
|
|
148
|
+
const db = this.getDb();
|
|
149
|
+
const tableSchema = this.getTable(table);
|
|
150
|
+
let queryBuilder = db.select({ count: (0, drizzle_orm_1.sql) `count(*)` }).from(tableSchema);
|
|
151
|
+
const whereNorm = this.normalizeWhere(tableSchema, options.where);
|
|
152
|
+
if (whereNorm)
|
|
153
|
+
queryBuilder = queryBuilder.where(whereNorm);
|
|
154
|
+
const [row] = await queryBuilder;
|
|
155
|
+
return Number(row?.count ?? 0);
|
|
156
|
+
}
|
|
157
|
+
async exists(table, options = {}) {
|
|
158
|
+
const n = await this.count(table, options);
|
|
159
|
+
return n > 0;
|
|
160
|
+
}
|
|
161
|
+
async query(options) {
|
|
162
|
+
return this.select(options);
|
|
163
|
+
}
|
|
164
|
+
async select(tableOrOptions, fields, options) {
|
|
165
|
+
let table;
|
|
166
|
+
let resolvedFields;
|
|
167
|
+
let resolvedOptions;
|
|
168
|
+
if (typeof tableOrOptions === 'string') {
|
|
169
|
+
table = tableOrOptions;
|
|
170
|
+
resolvedFields = fields ?? [];
|
|
171
|
+
resolvedOptions = options ?? {};
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
const opts = tableOrOptions;
|
|
175
|
+
table = opts.table;
|
|
176
|
+
resolvedFields = opts.fields ?? [];
|
|
177
|
+
resolvedOptions = {
|
|
178
|
+
sort: opts.sort,
|
|
179
|
+
pagination: opts.pagination,
|
|
180
|
+
search: opts.search,
|
|
181
|
+
where: opts.where,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const db = this.getDb();
|
|
185
|
+
const tableSchema = this.getTable(table);
|
|
186
|
+
const selectedFields = this.selectFields(tableSchema, resolvedFields);
|
|
187
|
+
const whereConditions = [];
|
|
188
|
+
const whereNorm = this.normalizeWhere(tableSchema, resolvedOptions.where);
|
|
189
|
+
if (whereNorm)
|
|
190
|
+
whereConditions.push(whereNorm);
|
|
191
|
+
const searchCondition = this.buildSearchCondition(tableSchema, resolvedOptions.search ?? []);
|
|
192
|
+
if (searchCondition)
|
|
193
|
+
whereConditions.push(searchCondition);
|
|
194
|
+
const whereClause = whereConditions.length > 0 ? (0, drizzle_orm_1.and)(...whereConditions) : undefined;
|
|
195
|
+
const orderBy = this.buildSortCondition(tableSchema, resolvedOptions.sort ?? []);
|
|
196
|
+
const pagination = resolvedOptions.pagination;
|
|
197
|
+
let total = 0;
|
|
198
|
+
let limit = pagination?.limit;
|
|
199
|
+
let offset = pagination ? (pagination.page - 1) * pagination.limit : undefined;
|
|
200
|
+
if (pagination) {
|
|
201
|
+
const countQuery = db
|
|
202
|
+
.select({ count: (0, drizzle_orm_1.sql) `count(*)` })
|
|
203
|
+
.from(tableSchema);
|
|
204
|
+
if (whereClause) {
|
|
205
|
+
countQuery.where(whereClause);
|
|
206
|
+
}
|
|
207
|
+
const [countResult] = await countQuery;
|
|
208
|
+
total = countResult?.count || 0;
|
|
209
|
+
}
|
|
210
|
+
let queryBuilder = selectedFields
|
|
211
|
+
? db.select(selectedFields).from(tableSchema)
|
|
212
|
+
: db.select().from(tableSchema);
|
|
213
|
+
if (whereClause) {
|
|
214
|
+
queryBuilder = queryBuilder.where(whereClause);
|
|
215
|
+
}
|
|
216
|
+
if (orderBy.length > 0) {
|
|
217
|
+
queryBuilder = queryBuilder.orderBy(...orderBy);
|
|
218
|
+
}
|
|
219
|
+
if (limit !== undefined) {
|
|
220
|
+
queryBuilder = queryBuilder.limit(limit);
|
|
221
|
+
}
|
|
222
|
+
if (offset !== undefined) {
|
|
223
|
+
queryBuilder = queryBuilder.offset(offset);
|
|
224
|
+
}
|
|
225
|
+
const data = await queryBuilder;
|
|
226
|
+
const result = {
|
|
227
|
+
data: data,
|
|
228
|
+
};
|
|
229
|
+
if (pagination) {
|
|
230
|
+
result.pagination = {
|
|
231
|
+
total,
|
|
232
|
+
page: pagination.page,
|
|
233
|
+
limit: pagination.limit,
|
|
234
|
+
totalPages: Math.ceil(total / pagination.limit),
|
|
235
|
+
hasNext: pagination.page * pagination.limit < total,
|
|
236
|
+
hasPrev: pagination.page > 1,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
async insertOne(options) {
|
|
242
|
+
return this.insert(options.table, options.fields || [], {
|
|
243
|
+
values: options.values,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
async insert(table, fields, options = {}) {
|
|
247
|
+
const db = this.getDb();
|
|
248
|
+
const tableSchema = this.getTable(table);
|
|
249
|
+
if (!options.values || Object.keys(options.values).length === 0) {
|
|
250
|
+
throw new Error('values option is required for insert');
|
|
251
|
+
}
|
|
252
|
+
const fieldsToInsert = fields.length === 0
|
|
253
|
+
? Object.keys(options.values)
|
|
254
|
+
: fields;
|
|
255
|
+
const valuesToInsert = {};
|
|
256
|
+
for (const field of fieldsToInsert) {
|
|
257
|
+
if (options.values[field] !== undefined) {
|
|
258
|
+
valuesToInsert[field] = options.values[field];
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const insertResult = await db.insert(tableSchema).values(valuesToInsert);
|
|
262
|
+
let insertedData = [];
|
|
263
|
+
if (insertResult && insertResult.insertId) {
|
|
264
|
+
const insertId = insertResult.insertId;
|
|
265
|
+
const idField = tableSchema.id || tableSchema[Object.keys(tableSchema).find(k => k.toLowerCase().includes('id')) || 'id'];
|
|
266
|
+
if (idField) {
|
|
267
|
+
insertedData = await db
|
|
268
|
+
.select()
|
|
269
|
+
.from(tableSchema)
|
|
270
|
+
.where((0, drizzle_orm_1.eq)(idField, insertId))
|
|
271
|
+
.limit(1);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
const whereConditions = Object.keys(valuesToInsert).map((key) => {
|
|
276
|
+
const field = tableSchema[key];
|
|
277
|
+
return field ? (0, drizzle_orm_1.eq)(field, valuesToInsert[key]) : null;
|
|
278
|
+
}).filter(Boolean);
|
|
279
|
+
if (whereConditions.length > 0) {
|
|
280
|
+
insertedData = await db
|
|
281
|
+
.select()
|
|
282
|
+
.from(tableSchema)
|
|
283
|
+
.where((0, drizzle_orm_1.and)(...whereConditions))
|
|
284
|
+
.limit(1);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return insertedData;
|
|
288
|
+
}
|
|
289
|
+
async updateOne(options) {
|
|
290
|
+
return this.update(options.table, options.fields || [], {
|
|
291
|
+
values: options.values,
|
|
292
|
+
where: options.where,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
async update(table, fields, options = {}) {
|
|
296
|
+
const db = this.getDb();
|
|
297
|
+
const tableSchema = this.getTable(table);
|
|
298
|
+
if (!options.values || Object.keys(options.values).length === 0) {
|
|
299
|
+
throw new Error('values option is required for update');
|
|
300
|
+
}
|
|
301
|
+
if (!options.where) {
|
|
302
|
+
throw new Error('where option is required for update');
|
|
303
|
+
}
|
|
304
|
+
const whereNorm = this.normalizeWhere(tableSchema, options.where);
|
|
305
|
+
if (!whereNorm) {
|
|
306
|
+
throw new Error('where has no valid keys (or plain object only had undefined/null)');
|
|
307
|
+
}
|
|
308
|
+
const fieldsToUpdate = fields.length === 0
|
|
309
|
+
? Object.keys(options.values)
|
|
310
|
+
: fields;
|
|
311
|
+
const valuesToUpdate = {};
|
|
312
|
+
for (const field of fieldsToUpdate) {
|
|
313
|
+
if (options.values[field] !== undefined) {
|
|
314
|
+
valuesToUpdate[field] = options.values[field];
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
const recordsToUpdate = await db
|
|
318
|
+
.select()
|
|
319
|
+
.from(tableSchema)
|
|
320
|
+
.where(whereNorm)
|
|
321
|
+
.limit(1000);
|
|
322
|
+
if (recordsToUpdate.length === 0) {
|
|
323
|
+
return [];
|
|
324
|
+
}
|
|
325
|
+
await db
|
|
326
|
+
.update(tableSchema)
|
|
327
|
+
.set(valuesToUpdate)
|
|
328
|
+
.where(whereNorm);
|
|
329
|
+
const updatedData = await db
|
|
330
|
+
.select()
|
|
331
|
+
.from(tableSchema)
|
|
332
|
+
.where(whereNorm)
|
|
333
|
+
.limit(recordsToUpdate.length);
|
|
334
|
+
return updatedData;
|
|
335
|
+
}
|
|
336
|
+
async deleteOne(options) {
|
|
337
|
+
return this.delete(options.table, [], {
|
|
338
|
+
where: options.where,
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
async delete(table, fields, options = {}) {
|
|
342
|
+
const db = this.getDb();
|
|
343
|
+
const tableSchema = this.getTable(table);
|
|
344
|
+
if (!options.where) {
|
|
345
|
+
throw new Error('where option is required for delete');
|
|
346
|
+
}
|
|
347
|
+
const whereNorm = this.normalizeWhere(tableSchema, options.where);
|
|
348
|
+
if (!whereNorm) {
|
|
349
|
+
throw new Error('where has no valid keys (or plain object only had undefined/null)');
|
|
350
|
+
}
|
|
351
|
+
const recordsToDelete = await db
|
|
352
|
+
.select()
|
|
353
|
+
.from(tableSchema)
|
|
354
|
+
.where(whereNorm)
|
|
355
|
+
.limit(1000);
|
|
356
|
+
if (recordsToDelete.length === 0) {
|
|
357
|
+
return [];
|
|
358
|
+
}
|
|
359
|
+
await db.delete(tableSchema).where(whereNorm);
|
|
360
|
+
return recordsToDelete;
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
exports.DatabaseQuery = DatabaseQuery;
|
|
364
|
+
exports.DatabaseQuery = DatabaseQuery = __decorate([
|
|
365
|
+
(0, common_1.Injectable)(),
|
|
366
|
+
__param(1, (0, common_1.Inject)(database_constants_1.DATABASE_SCHEMA)),
|
|
367
|
+
__metadata("design:paramtypes", [database_service_1.DatabaseService, Object])
|
|
368
|
+
], DatabaseQuery);
|
|
369
|
+
//# sourceMappingURL=database.query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.query.js","sourceRoot":"","sources":["../../src/database/database.query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
2
|
+
import { DatabaseConfig } from './database.module';
|
|
3
|
+
import * as mysql from 'mysql2/promise';
|
|
4
|
+
import { MySql2Database } from 'drizzle-orm/mysql2';
|
|
5
|
+
export declare class DatabaseService implements OnModuleInit, OnModuleDestroy {
|
|
6
|
+
private readonly config;
|
|
7
|
+
private readonly schema;
|
|
8
|
+
private readonly logger;
|
|
9
|
+
private mysqlPool;
|
|
10
|
+
private _db;
|
|
11
|
+
constructor(config: DatabaseConfig, schema: any);
|
|
12
|
+
onModuleInit(): Promise<void>;
|
|
13
|
+
onModuleDestroy(): Promise<void>;
|
|
14
|
+
private initMySQL;
|
|
15
|
+
get db(): MySql2Database<any>;
|
|
16
|
+
isConnected(): boolean;
|
|
17
|
+
get mysql(): mysql.Pool | null;
|
|
18
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
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
|
+
var DatabaseService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.DatabaseService = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const database_constants_1 = require("./database.constants");
|
|
19
|
+
const mysql = require("mysql2/promise");
|
|
20
|
+
const mysql2_1 = require("drizzle-orm/mysql2");
|
|
21
|
+
let DatabaseService = DatabaseService_1 = class DatabaseService {
|
|
22
|
+
constructor(config, schema) {
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.schema = schema;
|
|
25
|
+
this.logger = new common_1.Logger(DatabaseService_1.name);
|
|
26
|
+
this.mysqlPool = null;
|
|
27
|
+
this._db = null;
|
|
28
|
+
}
|
|
29
|
+
async onModuleInit() {
|
|
30
|
+
try {
|
|
31
|
+
await this.initMySQL();
|
|
32
|
+
this.logger.log('Database (MySQL) connected successfully');
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
let msg;
|
|
36
|
+
try {
|
|
37
|
+
msg =
|
|
38
|
+
error != null && typeof error === 'object' && 'message' in error
|
|
39
|
+
? String(error.message)
|
|
40
|
+
: String(error ?? 'Unknown error');
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
msg = 'Unknown error';
|
|
44
|
+
}
|
|
45
|
+
if (/Cannot read properties of undefined \(reading 'domain'\)|reading 'domain'/.test(msg)) {
|
|
46
|
+
msg = 'Connection failed (check host, port, credentials, and that MySQL is running)';
|
|
47
|
+
}
|
|
48
|
+
this.logger.warn(`Failed to connect to database: ${msg}`);
|
|
49
|
+
this.logger.warn(`Connection attempt: ${this.config.user}@${this.config.host}:${this.config.port}/${this.config.database}`);
|
|
50
|
+
this.logger.warn('Server will continue without database connection. Database features will be unavailable.');
|
|
51
|
+
this.logger.warn('To fix: Set DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME environment variables');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async onModuleDestroy() {
|
|
55
|
+
if (this.mysqlPool) {
|
|
56
|
+
await this.mysqlPool.end();
|
|
57
|
+
this.logger.log('MySQL connection pool closed');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async initMySQL() {
|
|
61
|
+
const poolConfig = {
|
|
62
|
+
host: this.config.host,
|
|
63
|
+
port: this.config.port,
|
|
64
|
+
user: this.config.user,
|
|
65
|
+
password: this.config.password,
|
|
66
|
+
database: this.config.database,
|
|
67
|
+
connectionLimit: this.config.connectionLimit || 10,
|
|
68
|
+
waitForConnections: true,
|
|
69
|
+
queueLimit: 0,
|
|
70
|
+
};
|
|
71
|
+
if (this.config.ssl) {
|
|
72
|
+
poolConfig.ssl = {};
|
|
73
|
+
}
|
|
74
|
+
this.mysqlPool = mysql.createPool(poolConfig);
|
|
75
|
+
let connection;
|
|
76
|
+
try {
|
|
77
|
+
connection = await this.mysqlPool.getConnection();
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
throw e instanceof Error ? e : new Error(String(e ?? 'Connection failed'));
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
await connection.ping();
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
connection.release();
|
|
87
|
+
}
|
|
88
|
+
this._db = (0, mysql2_1.drizzle)(this.mysqlPool, { schema: this.schema, mode: 'default' });
|
|
89
|
+
}
|
|
90
|
+
get db() {
|
|
91
|
+
if (!this._db) {
|
|
92
|
+
throw new Error('Database is not connected. Please check your database configuration.');
|
|
93
|
+
}
|
|
94
|
+
return this._db;
|
|
95
|
+
}
|
|
96
|
+
isConnected() {
|
|
97
|
+
return this._db !== null;
|
|
98
|
+
}
|
|
99
|
+
get mysql() {
|
|
100
|
+
return this.mysqlPool;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
exports.DatabaseService = DatabaseService;
|
|
104
|
+
exports.DatabaseService = DatabaseService = DatabaseService_1 = __decorate([
|
|
105
|
+
(0, common_1.Injectable)(),
|
|
106
|
+
__param(0, (0, common_1.Inject)(database_constants_1.DATABASE_CONFIG)),
|
|
107
|
+
__param(1, (0, common_1.Inject)(database_constants_1.DATABASE_SCHEMA)),
|
|
108
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
109
|
+
], DatabaseService);
|
|
110
|
+
//# 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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"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=example-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-usage.js","sourceRoot":"","sources":["../../src/database/example-usage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Public = exports.IS_PUBLIC_KEY = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
exports.IS_PUBLIC_KEY = 'isPublic';
|
|
6
|
+
const Public = () => (0, common_1.SetMetadata)(exports.IS_PUBLIC_KEY, true);
|
|
7
|
+
exports.Public = Public;
|
|
8
|
+
//# sourceMappingURL=public.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.decorator.js","sourceRoot":"","sources":["../../src/decorators/public.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAEhC,QAAA,aAAa,GAAG,UAAU,CAAC;AACjC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,qBAAa,EAAE,IAAI,CAAC,CAAC;AAAhD,QAAA,MAAM,UAA0C"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Roles = exports.ROLES_KEY = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
exports.ROLES_KEY = 'roles';
|
|
6
|
+
const Roles = (...roles) => (0, common_1.SetMetadata)(exports.ROLES_KEY, roles);
|
|
7
|
+
exports.Roles = Roles;
|
|
8
|
+
//# sourceMappingURL=roles.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.decorator.js","sourceRoot":"","sources":["../../src/decorators/roles.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAEhC,QAAA,SAAS,GAAG,OAAO,CAAC;AAoB1B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,IAAA,oBAAW,EAAC,iBAAS,EAAE,KAAK,CAAC,CAAC;AAA9D,QAAA,KAAK,SAAyD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface JwtUser {
|
|
2
|
+
sub: string | number;
|
|
3
|
+
email?: string;
|
|
4
|
+
role?: string;
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
export declare const User: (...dataOrPipes: (string | import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>>)[]) => ParameterDecorator;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.User = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
exports.User = (0, common_1.createParamDecorator)((data, ctx) => {
|
|
6
|
+
const request = ctx.switchToHttp().getRequest();
|
|
7
|
+
const user = request?.user;
|
|
8
|
+
return data && user ? user[data] : user;
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=user.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.decorator.js","sourceRoot":"","sources":["../../src/decorators/user.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwE;AAkC3D,QAAA,IAAI,GAAG,IAAA,6BAAoB,EACtC,CAAC,IAAwB,EAAE,GAAqB,EAAE,EAAE;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC3B,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ExceptionFilter, ArgumentsHost } from '@nestjs/common';
|
|
2
|
+
export interface ExceptionFilterOptions {
|
|
3
|
+
cors?: {
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
allowedOrigins?: string[];
|
|
6
|
+
allowAllOriginsInDev?: boolean;
|
|
7
|
+
};
|
|
8
|
+
meta?: {
|
|
9
|
+
enabled?: boolean;
|
|
10
|
+
includeTimestamp?: boolean;
|
|
11
|
+
includePath?: boolean;
|
|
12
|
+
includeMethod?: boolean;
|
|
13
|
+
};
|
|
14
|
+
logging?: {
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
level?: 'debug' | 'info' | 'warn' | 'error';
|
|
17
|
+
includeStack?: boolean;
|
|
18
|
+
debug?: boolean;
|
|
19
|
+
};
|
|
20
|
+
responseFormat?: {
|
|
21
|
+
includeDetails?: boolean;
|
|
22
|
+
};
|
|
23
|
+
filterStaticFiles?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare class AllExceptionsFilter implements ExceptionFilter {
|
|
26
|
+
private readonly logger;
|
|
27
|
+
private readonly errorUtils;
|
|
28
|
+
private readonly options;
|
|
29
|
+
constructor(options?: ExceptionFilterOptions);
|
|
30
|
+
catch(exception: unknown, host: ArgumentsHost): void;
|
|
31
|
+
private handleOptionsRequest;
|
|
32
|
+
private isStaticFile404;
|
|
33
|
+
private buildMeta;
|
|
34
|
+
private extractMessage;
|
|
35
|
+
private logError;
|
|
36
|
+
}
|