@culturefy/shared 1.0.57 → 1.0.59

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 (49) hide show
  1. package/build/cjs/index.js +6 -0
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/middlewares/verify-middleware.js +3 -0
  4. package/build/cjs/middlewares/verify-middleware.js.map +1 -1
  5. package/build/cjs/models/config-mapping.model.js +41 -0
  6. package/build/cjs/models/config-mapping.model.js.map +1 -0
  7. package/build/cjs/repositories/index.js +16 -0
  8. package/build/cjs/repositories/index.js.map +1 -0
  9. package/build/cjs/repositories/multi-tenant.repository.js +266 -0
  10. package/build/cjs/repositories/multi-tenant.repository.js.map +1 -0
  11. package/build/cjs/repositories/tenant-base.repository.js +52 -0
  12. package/build/cjs/repositories/tenant-base.repository.js.map +1 -0
  13. package/build/cjs/utils/cache.js +8 -0
  14. package/build/cjs/utils/cache.js.map +1 -1
  15. package/build/esm/index.js +1 -0
  16. package/build/esm/index.js.map +1 -1
  17. package/build/esm/middlewares/verify-middleware.js +3 -0
  18. package/build/esm/middlewares/verify-middleware.js.map +1 -1
  19. package/build/esm/models/config-mapping.model.js +36 -0
  20. package/build/esm/models/config-mapping.model.js.map +1 -0
  21. package/build/esm/repositories/index.js +3 -0
  22. package/build/esm/repositories/index.js.map +1 -0
  23. package/build/esm/repositories/multi-tenant.repository.js +259 -0
  24. package/build/esm/repositories/multi-tenant.repository.js.map +1 -0
  25. package/build/esm/repositories/tenant-base.repository.js +48 -0
  26. package/build/esm/repositories/tenant-base.repository.js.map +1 -0
  27. package/build/esm/utils/cache.js +8 -0
  28. package/build/esm/utils/cache.js.map +1 -1
  29. package/build/src/index.d.ts +1 -0
  30. package/build/src/index.js +1 -0
  31. package/build/src/index.js.map +1 -1
  32. package/build/src/middlewares/verify-middleware.js +2 -0
  33. package/build/src/middlewares/verify-middleware.js.map +1 -1
  34. package/build/src/models/config-mapping.model.d.ts +20 -0
  35. package/build/src/models/config-mapping.model.js +41 -0
  36. package/build/src/models/config-mapping.model.js.map +1 -0
  37. package/build/src/repositories/index.d.ts +2 -0
  38. package/build/src/repositories/index.js +6 -0
  39. package/build/src/repositories/index.js.map +1 -0
  40. package/build/src/repositories/multi-tenant.repository.d.ts +44 -0
  41. package/build/src/repositories/multi-tenant.repository.js +295 -0
  42. package/build/src/repositories/multi-tenant.repository.js.map +1 -0
  43. package/build/src/repositories/tenant-base.repository.d.ts +17 -0
  44. package/build/src/repositories/tenant-base.repository.js +141 -0
  45. package/build/src/repositories/tenant-base.repository.js.map +1 -0
  46. package/build/src/utils/cache.d.ts +1 -0
  47. package/build/src/utils/cache.js +10 -0
  48. package/build/src/utils/cache.js.map +1 -1
  49. package/package.json +1 -1
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantModelRepository = exports.MultiTenantRepository = void 0;
4
+ exports.WithTenantDb = WithTenantDb;
5
+ const tslib_1 = require("tslib");
6
+ const mongoose_1 = tslib_1.__importStar(require("mongoose"));
7
+ const crypto = tslib_1.__importStar(require("crypto"));
8
+ const identity_1 = require("@azure/identity");
9
+ const keyvault_secrets_1 = require("@azure/keyvault-secrets");
10
+ const enums_1 = require("../enums");
11
+ const cache_1 = require("../utils/cache");
12
+ const secrets_1 = require("../utils/secrets");
13
+ const config_mapping_model_1 = require("../models/config-mapping.model");
14
+ const tenantDbCache = (0, cache_1.createCache)("tenant-db", 600);
15
+ const tenantBridgeCache = (0, cache_1.createCache)("tenant-bridge-db-connection-string", 1800);
16
+ const encryptionKeyCache = (0, cache_1.createCache)("db-enc-key", 1800);
17
+ /**
18
+ * Decorator that ensures tenant DB is connected before the method runs.
19
+ */
20
+ function WithTenantDb(_target, _propertyKey, descriptor) {
21
+ if (!descriptor.value)
22
+ return;
23
+ const originalMethod = descriptor.value;
24
+ descriptor.value = function (...args) {
25
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
26
+ yield this.ensureClientConnection();
27
+ return originalMethod.apply(this, args);
28
+ });
29
+ };
30
+ }
31
+ class MultiTenantRepository {
32
+ constructor(context, businessId, appId, config, serviceDBType) {
33
+ this.context = context;
34
+ this.businessId = businessId;
35
+ this.appId = appId;
36
+ this.serviceDBType = serviceDBType !== null && serviceDBType !== void 0 ? serviceDBType : "main";
37
+ this.tenantBridgeConfig = Object.assign({ tenantBridgeEnvKey: "TENANT_BRIDGE_DB_URI", tenantBridgeSecretKey: enums_1.AzureSecretKeysEnum.DB_CONNECTING_STRING_TENANT_BRIDGE }, config);
38
+ this.connectionPromise = this.ensureClientConnection();
39
+ }
40
+ getEncryptionIv() {
41
+ const iv = process.env.DB_CONNECTION_STRING_ENCRYPTION_IV;
42
+ if (!iv) {
43
+ return Buffer.alloc(16, 0);
44
+ }
45
+ return this.normalizeFixedSize(iv, "IV");
46
+ }
47
+ normalizeFixedSize(value, label) {
48
+ const utf8Value = Buffer.from(value, "utf8");
49
+ if (utf8Value.length === 16) {
50
+ return utf8Value;
51
+ }
52
+ const base64Value = Buffer.from(value, "base64");
53
+ if (base64Value.length === 16) {
54
+ return base64Value;
55
+ }
56
+ const hexValue = Buffer.from(value, "hex");
57
+ if (hexValue.length === 16) {
58
+ return hexValue;
59
+ }
60
+ throw new Error(`${label} must be 16 bytes for aes-128-cbc (got ${utf8Value.length})`);
61
+ }
62
+ getOrCreateCachedConnection(connectionString) {
63
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
64
+ const existing = MultiTenantRepository.connections.get(connectionString);
65
+ if (existing && existing.connection.readyState === 1) {
66
+ return existing;
67
+ }
68
+ this.context.info(`Initializing database connection... ${connectionString}`);
69
+ const instance = new mongoose_1.default.Mongoose();
70
+ try {
71
+ yield instance.connect(connectionString, {
72
+ serverSelectionTimeoutMS: 10000,
73
+ connectTimeoutMS: 10000,
74
+ socketTimeoutMS: 45000,
75
+ });
76
+ this.context.info(`✅ MongoDB connected successfully ${connectionString}`);
77
+ MultiTenantRepository.connections.set(connectionString, instance);
78
+ return instance;
79
+ }
80
+ catch (err) {
81
+ this.context.error(`❌ MongoDB connection error for ${connectionString}`, {
82
+ message: err.message,
83
+ name: err.name,
84
+ code: err.code,
85
+ stack: err.stack,
86
+ });
87
+ throw new Error(`Failed to connect to MongoDB: ${err.message}`);
88
+ }
89
+ });
90
+ }
91
+ toObjectId(id, fieldName) {
92
+ if (!mongoose_1.Types.ObjectId.isValid(id)) {
93
+ throw new Error(`Invalid ${fieldName}`);
94
+ }
95
+ return new mongoose_1.Types.ObjectId(id);
96
+ }
97
+ getTenantBridgeSrvDbConnectionString() {
98
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
99
+ const envKey = this.tenantBridgeConfig.tenantBridgeEnvKey;
100
+ const localUri = (envKey ? process.env[envKey] : undefined);
101
+ if (localUri) {
102
+ return localUri;
103
+ }
104
+ const vault = process.env.AZURE_KEY_VAULT_NAME || "";
105
+ const secretKey = this.tenantBridgeConfig.tenantBridgeSecretKey ||
106
+ enums_1.AzureSecretKeysEnum.DB_CONNECTING_STRING_TENANT_BRIDGE;
107
+ const dbUrl = yield (0, secrets_1.getAzureVaultSecretByKey)(this.context, vault, secretKey);
108
+ if (!dbUrl) {
109
+ throw new Error("TenantBridge database connection string not found");
110
+ }
111
+ return dbUrl;
112
+ });
113
+ }
114
+ getDbConnectionEncryptionKey() {
115
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
116
+ var _a;
117
+ if (this.dbConnectionEncryptionKey) {
118
+ return this.dbConnectionEncryptionKey;
119
+ }
120
+ const envKey = process.env.DB_CONNECTION_STRING_ENCRYPTION_KEY;
121
+ if (envKey) {
122
+ this.dbConnectionEncryptionKey = envKey;
123
+ return envKey;
124
+ }
125
+ const vault = process.env.AZURE_KEY_VAULT_NAME || "";
126
+ if (!vault) {
127
+ throw new Error("AZURE_KEY_VAULT_NAME is required to fetch encryption key");
128
+ }
129
+ const vaultUrl = `https://${vault}.vault.azure.net`;
130
+ const credential = new identity_1.DefaultAzureCredential();
131
+ const client = new keyvault_secrets_1.SecretClient(vaultUrl, credential);
132
+ const secret = yield client.getSecret("DB-CONNECTION-STRING-ENCRYPTION-KEY");
133
+ const key = (_a = secret.value) !== null && _a !== void 0 ? _a : "";
134
+ if (!key) {
135
+ throw new Error("DB connection string encryption key not found");
136
+ }
137
+ this.dbConnectionEncryptionKey = key;
138
+ return key;
139
+ });
140
+ }
141
+ decryptConnectionString(encryptedValue) {
142
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
143
+ const key = yield this.getDbConnectionEncryptionKey();
144
+ const keyBuffer = this.normalizeEncryptionKey(key);
145
+ const ivBuffer = this.getEncryptionIv();
146
+ const decipher = crypto.createDecipheriv("aes-128-cbc", keyBuffer, ivBuffer);
147
+ let decrypted = decipher.update(encryptedValue, "base64", "utf8");
148
+ decrypted += decipher.final("utf8");
149
+ return decrypted;
150
+ });
151
+ }
152
+ normalizeEncryptionKey(key) {
153
+ const utf8Key = Buffer.from(key, "utf8");
154
+ if (utf8Key.length === 16) {
155
+ return utf8Key;
156
+ }
157
+ const base64Key = Buffer.from(key, "base64");
158
+ if (base64Key.length === 16) {
159
+ return base64Key;
160
+ }
161
+ const hexKey = Buffer.from(key, "hex");
162
+ if (hexKey.length === 16) {
163
+ return hexKey;
164
+ }
165
+ throw new Error(`DB connection string encryption key must be 16 bytes for aes-128-cbc (got ${utf8Key.length})`);
166
+ }
167
+ getClientDbConnectionString(businessId, appId, serviceDBType) {
168
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
169
+ const resolvedServiceDbType = serviceDBType !== null && serviceDBType !== void 0 ? serviceDBType : "main";
170
+ const tenantBridgeUrl = yield this.getTenantBridgeSrvDbConnectionString();
171
+ const connection = yield this.getOrCreateCachedConnection(tenantBridgeUrl);
172
+ const ConfigMapping = this.getModel(connection, config_mapping_model_1.CONFIG_MAPPING_DOCUMENT_NAME, config_mapping_model_1.ConfigMappingModel.schema, config_mapping_model_1.CONFIG_MAPPING_COLLECTION_NAME);
173
+ const filter = {
174
+ businessId: this.toObjectId(businessId, "businessId"),
175
+ };
176
+ if (appId) {
177
+ filter.appId = appId;
178
+ }
179
+ filter.serviceDBType = resolvedServiceDbType;
180
+ const configMapping = (yield ConfigMapping.findOne(filter).lean().exec());
181
+ if (!(configMapping === null || configMapping === void 0 ? void 0 : configMapping.connectionString)) {
182
+ throw new Error("Config mapping not found for this business");
183
+ }
184
+ const decryptedConnectionString = yield this.decryptConnectionString(configMapping.connectionString);
185
+ this.context.info(`Resolved tenant DB connection string from bridge: ${decryptedConnectionString}`);
186
+ return decryptedConnectionString;
187
+ });
188
+ }
189
+ getConnection() {
190
+ if (!this.clientConnectionString)
191
+ return undefined;
192
+ return MultiTenantRepository.connections.get(this.clientConnectionString);
193
+ }
194
+ ensureClientConnection() {
195
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
196
+ if (this.connectionPromise) {
197
+ return this.connectionPromise;
198
+ }
199
+ if (this.clientConnectionString) {
200
+ const existing = this.getConnection();
201
+ if (existing && existing.connection.readyState === 1) {
202
+ return existing;
203
+ }
204
+ }
205
+ const clientDbUrl = yield this.getClientDbConnectionString(this.businessId, this.appId, this.serviceDBType);
206
+ this.clientConnectionString = clientDbUrl;
207
+ this.connectionPromise = this.getOrCreateCachedConnection(clientDbUrl);
208
+ return this.connectionPromise;
209
+ });
210
+ }
211
+ disconnectByConnectionString(connectionString) {
212
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
213
+ const existing = MultiTenantRepository.connections.get(connectionString);
214
+ if (!existing)
215
+ return;
216
+ try {
217
+ yield existing.disconnect();
218
+ this.context.info(`✅ Disconnected from database: ${connectionString}`);
219
+ }
220
+ catch (error) {
221
+ this.context.error(`❌ Error disconnecting from database: ${connectionString}`, error);
222
+ }
223
+ finally {
224
+ MultiTenantRepository.connections.delete(connectionString);
225
+ }
226
+ });
227
+ }
228
+ disconnectClient() {
229
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
230
+ const clientDbUrl = yield this.getClientDbConnectionString(this.businessId, this.appId);
231
+ yield this.disconnectByConnectionString(clientDbUrl);
232
+ this.clientConnectionString = undefined;
233
+ this.connectionPromise = undefined;
234
+ });
235
+ }
236
+ getTenantModel(modelName, schema, collectionName) {
237
+ const connection = this.getConnection();
238
+ if (!connection) {
239
+ throw new Error("database connection not established");
240
+ }
241
+ return this.getModel(connection, modelName, schema, collectionName);
242
+ }
243
+ model(model, collectionName) {
244
+ return this.getTenantModel(model.modelName, model.schema, collectionName);
245
+ }
246
+ getModel(connection, modelName, schema, collectionName) {
247
+ if (connection.models[modelName]) {
248
+ return connection.models[modelName];
249
+ }
250
+ return connection.model(modelName, schema, collectionName);
251
+ }
252
+ }
253
+ exports.MultiTenantRepository = MultiTenantRepository;
254
+ MultiTenantRepository.connections = new Map();
255
+ tslib_1.__decorate([
256
+ (0, cache_1.Cacheable)({
257
+ cache: tenantBridgeCache,
258
+ key: () => ["tenant-bridge"],
259
+ getContext: (instance) => instance.context,
260
+ }),
261
+ tslib_1.__metadata("design:type", Function),
262
+ tslib_1.__metadata("design:paramtypes", []),
263
+ tslib_1.__metadata("design:returntype", Promise)
264
+ ], MultiTenantRepository.prototype, "getTenantBridgeSrvDbConnectionString", null);
265
+ tslib_1.__decorate([
266
+ (0, cache_1.Cacheable)({
267
+ cache: encryptionKeyCache,
268
+ key: () => ["key"],
269
+ getContext: (instance) => instance.context,
270
+ }),
271
+ tslib_1.__metadata("design:type", Function),
272
+ tslib_1.__metadata("design:paramtypes", []),
273
+ tslib_1.__metadata("design:returntype", Promise)
274
+ ], MultiTenantRepository.prototype, "getDbConnectionEncryptionKey", null);
275
+ tslib_1.__decorate([
276
+ (0, cache_1.Cacheable)({
277
+ cache: tenantDbCache,
278
+ key: (businessId, appId, serviceDbType) => [
279
+ businessId,
280
+ appId,
281
+ serviceDbType,
282
+ ],
283
+ getContext: (instance) => instance.context,
284
+ }),
285
+ tslib_1.__metadata("design:type", Function),
286
+ tslib_1.__metadata("design:paramtypes", [String, String, String]),
287
+ tslib_1.__metadata("design:returntype", Promise)
288
+ ], MultiTenantRepository.prototype, "getClientDbConnectionString", null);
289
+ class TenantModelRepository extends MultiTenantRepository {
290
+ get dbModel() {
291
+ return this.model(this.modelDef);
292
+ }
293
+ }
294
+ exports.TenantModelRepository = TenantModelRepository;
295
+ //# sourceMappingURL=multi-tenant.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-tenant.repository.js","sourceRoot":"","sources":["../../../src/repositories/multi-tenant.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { FilterQuery, Model, PipelineStage, ProjectionType, QueryOptions, UpdateQuery } from "mongoose";
2
+ import { TenantModelRepository } from "./multi-tenant.repository";
3
+ export declare abstract class TenantBaseRepository<T> extends TenantModelRepository<T> {
4
+ protected abstract readonly modelDef: Model<T>;
5
+ aggregate(pipeline: PipelineStage[]): Promise<any[]>;
6
+ create(body: T): Promise<T>;
7
+ createMany(body: T[]): Promise<T[]>;
8
+ count(query?: FilterQuery<T>): Promise<number>;
9
+ findById(id: string, projection?: ProjectionType<T>, options?: QueryOptions<T>): Promise<T | null>;
10
+ findOne(query: FilterQuery<T>, projection?: ProjectionType<T>, options?: QueryOptions<T>): Promise<T | null>;
11
+ find(query?: FilterQuery<T>, projection?: ProjectionType<T>, options?: QueryOptions<T>): Promise<T[]>;
12
+ updateById(id: string, body: UpdateQuery<T>, options?: any): Promise<T | null>;
13
+ updateOne(query: FilterQuery<T>, body: UpdateQuery<T>, options?: any): Promise<any>;
14
+ updateMany(query: FilterQuery<T>, body: UpdateQuery<T>, options?: any): Promise<any>;
15
+ deleteById(id: string): Promise<T | null>;
16
+ deleteMany(query?: FilterQuery<T>): Promise<any>;
17
+ }
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantBaseRepository = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const multi_tenant_repository_1 = require("./multi-tenant.repository");
6
+ class TenantBaseRepository extends multi_tenant_repository_1.TenantModelRepository {
7
+ aggregate(pipeline) {
8
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
+ return this.dbModel.aggregate(pipeline).exec();
10
+ });
11
+ }
12
+ create(body) {
13
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
14
+ return this.dbModel.create(body);
15
+ });
16
+ }
17
+ createMany(body) {
18
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
19
+ return this.dbModel.insertMany(body);
20
+ });
21
+ }
22
+ count() {
23
+ return tslib_1.__awaiter(this, arguments, void 0, function* (query = {}) {
24
+ return this.dbModel.countDocuments(query).exec();
25
+ });
26
+ }
27
+ findById(id_1) {
28
+ return tslib_1.__awaiter(this, arguments, void 0, function* (id, projection = {}, options = {}) {
29
+ return this.dbModel.findById(id, projection, options).exec();
30
+ });
31
+ }
32
+ findOne(query_1) {
33
+ return tslib_1.__awaiter(this, arguments, void 0, function* (query, projection = {}, options = {}) {
34
+ return this.dbModel.findOne(query, projection, options).exec();
35
+ });
36
+ }
37
+ find() {
38
+ return tslib_1.__awaiter(this, arguments, void 0, function* (query = {}, projection = {}, options = {}) {
39
+ return this.dbModel.find(query, projection, options).exec();
40
+ });
41
+ }
42
+ updateById(id_1, body_1) {
43
+ return tslib_1.__awaiter(this, arguments, void 0, function* (id, body, options = { new: true }) {
44
+ return this.dbModel.findByIdAndUpdate(id, body, options).exec();
45
+ });
46
+ }
47
+ updateOne(query_1, body_1) {
48
+ return tslib_1.__awaiter(this, arguments, void 0, function* (query, body, options = {}) {
49
+ return this.dbModel.updateOne(query, body, options).exec();
50
+ });
51
+ }
52
+ updateMany(query_1, body_1) {
53
+ return tslib_1.__awaiter(this, arguments, void 0, function* (query, body, options = {}) {
54
+ return this.dbModel.updateMany(query, body, options).exec();
55
+ });
56
+ }
57
+ deleteById(id) {
58
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
59
+ return this.dbModel.findByIdAndDelete(id).exec();
60
+ });
61
+ }
62
+ deleteMany() {
63
+ return tslib_1.__awaiter(this, arguments, void 0, function* (query = {}) {
64
+ return this.dbModel.deleteMany(query).exec();
65
+ });
66
+ }
67
+ }
68
+ exports.TenantBaseRepository = TenantBaseRepository;
69
+ tslib_1.__decorate([
70
+ multi_tenant_repository_1.WithTenantDb,
71
+ tslib_1.__metadata("design:type", Function),
72
+ tslib_1.__metadata("design:paramtypes", [Array]),
73
+ tslib_1.__metadata("design:returntype", Promise)
74
+ ], TenantBaseRepository.prototype, "aggregate", null);
75
+ tslib_1.__decorate([
76
+ multi_tenant_repository_1.WithTenantDb,
77
+ tslib_1.__metadata("design:type", Function),
78
+ tslib_1.__metadata("design:paramtypes", [Object]),
79
+ tslib_1.__metadata("design:returntype", Promise)
80
+ ], TenantBaseRepository.prototype, "create", null);
81
+ tslib_1.__decorate([
82
+ multi_tenant_repository_1.WithTenantDb,
83
+ tslib_1.__metadata("design:type", Function),
84
+ tslib_1.__metadata("design:paramtypes", [Array]),
85
+ tslib_1.__metadata("design:returntype", Promise)
86
+ ], TenantBaseRepository.prototype, "createMany", null);
87
+ tslib_1.__decorate([
88
+ multi_tenant_repository_1.WithTenantDb,
89
+ tslib_1.__metadata("design:type", Function),
90
+ tslib_1.__metadata("design:paramtypes", [Object]),
91
+ tslib_1.__metadata("design:returntype", Promise)
92
+ ], TenantBaseRepository.prototype, "count", null);
93
+ tslib_1.__decorate([
94
+ multi_tenant_repository_1.WithTenantDb,
95
+ tslib_1.__metadata("design:type", Function),
96
+ tslib_1.__metadata("design:paramtypes", [String, Object, Object]),
97
+ tslib_1.__metadata("design:returntype", Promise)
98
+ ], TenantBaseRepository.prototype, "findById", null);
99
+ tslib_1.__decorate([
100
+ multi_tenant_repository_1.WithTenantDb,
101
+ tslib_1.__metadata("design:type", Function),
102
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Object]),
103
+ tslib_1.__metadata("design:returntype", Promise)
104
+ ], TenantBaseRepository.prototype, "findOne", null);
105
+ tslib_1.__decorate([
106
+ multi_tenant_repository_1.WithTenantDb,
107
+ tslib_1.__metadata("design:type", Function),
108
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Object]),
109
+ tslib_1.__metadata("design:returntype", Promise)
110
+ ], TenantBaseRepository.prototype, "find", null);
111
+ tslib_1.__decorate([
112
+ multi_tenant_repository_1.WithTenantDb,
113
+ tslib_1.__metadata("design:type", Function),
114
+ tslib_1.__metadata("design:paramtypes", [String, Object, Object]),
115
+ tslib_1.__metadata("design:returntype", Promise)
116
+ ], TenantBaseRepository.prototype, "updateById", null);
117
+ tslib_1.__decorate([
118
+ multi_tenant_repository_1.WithTenantDb,
119
+ tslib_1.__metadata("design:type", Function),
120
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Object]),
121
+ tslib_1.__metadata("design:returntype", Promise)
122
+ ], TenantBaseRepository.prototype, "updateOne", null);
123
+ tslib_1.__decorate([
124
+ multi_tenant_repository_1.WithTenantDb,
125
+ tslib_1.__metadata("design:type", Function),
126
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Object]),
127
+ tslib_1.__metadata("design:returntype", Promise)
128
+ ], TenantBaseRepository.prototype, "updateMany", null);
129
+ tslib_1.__decorate([
130
+ multi_tenant_repository_1.WithTenantDb,
131
+ tslib_1.__metadata("design:type", Function),
132
+ tslib_1.__metadata("design:paramtypes", [String]),
133
+ tslib_1.__metadata("design:returntype", Promise)
134
+ ], TenantBaseRepository.prototype, "deleteById", null);
135
+ tslib_1.__decorate([
136
+ multi_tenant_repository_1.WithTenantDb,
137
+ tslib_1.__metadata("design:type", Function),
138
+ tslib_1.__metadata("design:paramtypes", [Object]),
139
+ tslib_1.__metadata("design:returntype", Promise)
140
+ ], TenantBaseRepository.prototype, "deleteMany", null);
141
+ //# sourceMappingURL=tenant-base.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-base.repository.js","sourceRoot":"","sources":["../../../src/repositories/tenant-base.repository.ts"],"names":[],"mappings":";;;;AAQA,uEAAgF;AAEhF,MAAsB,oBAAwB,SAAQ,+CAAwB;IAItE,SAAS,CACb,QAAyB;;YAEzB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,CAAC;KAAA;IAGK,MAAM,CAAC,IAAO;;YAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;KAAA;IAGK,UAAU,CAAC,IAAS;;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;KAAA;IAGK,KAAK;qEAAC,QAAwB,EAAE;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,CAAC;KAAA;IAGK,QAAQ;qEACZ,EAAU,EACV,aAAgC,EAAE,EAClC,UAA2B,EAAE;YAE7B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/D,CAAC;KAAA;IAGK,OAAO;qEACX,KAAqB,EACrB,aAAgC,EAAE,EAClC,UAA2B,EAAE;YAE7B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC;KAAA;IAGK,IAAI;qEACR,QAAwB,EAAE,EAC1B,aAAgC,EAAE,EAClC,UAA2B,EAAE;YAE7B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,CAAC;KAAA;IAGK,UAAU;qEACd,EAAU,EACV,IAAoB,EACpB,UAAe,EAAE,GAAG,EAAE,IAAI,EAAE;YAE5B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAE5D,CAAC;QACJ,CAAC;KAAA;IAGK,SAAS;qEACb,KAAqB,EACrB,IAAoB,EACpB,UAAe,EAAE;YAEjB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;KAAA;IAGK,UAAU;qEACd,KAAqB,EACrB,IAAoB,EACpB,UAAe,EAAE;YAEjB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,CAAC;KAAA;IAGK,UAAU,CAAC,EAAU;;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,CAAC;KAAA;IAGK,UAAU;qEAAC,QAAwB,EAAE;YACzC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;KAAA;CACF;AA1FD,oDA0FC;AAtFO;IADL,sCAAY;;;;qDAKZ;AAGK;IADL,sCAAY;;;;kDAGZ;AAGK;IADL,sCAAY;;;;sDAGZ;AAGK;IADL,sCAAY;;;;iDAGZ;AAGK;IADL,sCAAY;;;;oDAOZ;AAGK;IADL,sCAAY;;;;mDAOZ;AAGK;IADL,sCAAY;;;;gDAOZ;AAGK;IADL,sCAAY;;;;sDASZ;AAGK;IADL,sCAAY;;;;qDAOZ;AAGK;IADL,sCAAY;;;;sDAOZ;AAGK;IADL,sCAAY;;;;sDAGZ;AAGK;IADL,sCAAY;;;;sDAGZ"}
@@ -6,6 +6,7 @@ export declare const createCache: (namespace: string, ttlSeconds: number) => {
6
6
  get: (ctx: InvocationContext | undefined, ...parts: Array<string | number | undefined>) => Promise<string | null>;
7
7
  set: (ctx: InvocationContext | undefined, value: string, ...parts: Array<string | number | undefined>) => Promise<void>;
8
8
  getOrSet: (ctx: InvocationContext | undefined, parts: Array<string | number | undefined>, fetcher: () => Promise<string>) => Promise<string>;
9
+ delete: (ctx: InvocationContext | undefined, ...parts: Array<string | number | undefined>) => Promise<void>;
9
10
  };
10
11
  type CacheableOptions<TArgs extends unknown[]> = {
11
12
  cache: ReturnType<typeof createCache>;
@@ -86,6 +86,16 @@ const createCache = (namespace, ttlSeconds) => {
86
86
  }))();
87
87
  return value;
88
88
  }),
89
+ delete: (ctx, ...parts) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
90
+ var _a;
91
+ const client = (0, exports.getRedisClient)(ctx);
92
+ try {
93
+ yield client.del(buildKey(namespace, parts));
94
+ }
95
+ catch (error) {
96
+ (_a = ctx === null || ctx === void 0 ? void 0 : ctx.error) === null || _a === void 0 ? void 0 : _a.call(ctx, "Redis delete failed", error);
97
+ }
98
+ }),
89
99
  };
90
100
  };
91
101
  exports.createCache = createCache;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/utils/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/utils/cache.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@culturefy/shared",
3
3
  "description": "Shared utilities for culturefy serverless services",
4
- "version": "1.0.57",
4
+ "version": "1.0.59",
5
5
  "main": "build/cjs/index.js",
6
6
  "module": "build/esm/index.js",
7
7
  "types": "build/src/index.d.ts",