@zenith-open/zenithcms-db-mongodb 0.1.0

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.
@@ -0,0 +1,62 @@
1
+ import { CollectionConfig, DatabaseAdapter, FindOptions, BaseOptions, AuditLogData, VersionData, WebhookDeliveryData, WebhookDeliveryRecord } from '@zenith-open/zenithcms-types';
2
+ export interface CacheLayer {
3
+ get<T>(key: string): Promise<T | undefined>;
4
+ set<T>(key: string, value: T, collection: string): Promise<void>;
5
+ invalidate(collection: string): Promise<void>;
6
+ }
7
+ export declare class LocalCacheLayer implements CacheLayer {
8
+ private cache;
9
+ constructor();
10
+ get<T>(key: string): Promise<T | undefined>;
11
+ set<T>(key: string, value: T, collection: string): Promise<void>;
12
+ invalidate(collection: string): Promise<void>;
13
+ }
14
+ export declare class RedisCacheLayer implements CacheLayer {
15
+ private redis;
16
+ constructor(redisUrl: string);
17
+ get<T>(key: string): Promise<T | undefined>;
18
+ set<T>(key: string, value: T, collection: string): Promise<void>;
19
+ invalidate(collection: string): Promise<void>;
20
+ }
21
+ /**
22
+ * Mongoose Database Adapter — Hardened Edition
23
+ * ──────────────────────────────────────────
24
+ * High-performance implementation for MongoDB.
25
+ * Features: Neural Cache Layer, automatic session management, and health monitoring.
26
+ */
27
+ export declare class MongooseAdapter implements DatabaseAdapter {
28
+ private uri;
29
+ name: string;
30
+ private models;
31
+ private cache;
32
+ constructor(uri: string);
33
+ connect(): Promise<void>;
34
+ disconnect(): Promise<void>;
35
+ getHealth(): 'ok' | 'connecting' | 'disconnected' | 'error';
36
+ private _initSystemModels;
37
+ registerCollection(config: CollectionConfig): Promise<void>;
38
+ getExistingCollections(): Promise<string[]>;
39
+ private getModel;
40
+ private _getCacheKey;
41
+ find<T = unknown>(collection: string, query: Record<string, unknown>, options?: FindOptions): Promise<T[]>;
42
+ findOne<T = unknown>(collection: string, query: Record<string, unknown>, options?: FindOptions): Promise<T | null>;
43
+ private _invalidateCache;
44
+ create<T = unknown>(collection: string, data: Partial<T>, options?: BaseOptions): Promise<T>;
45
+ update<T = unknown>(collection: string, id: string, data: Partial<T>, options?: BaseOptions): Promise<T | null>;
46
+ private _normalizeQuery;
47
+ findOneAndUpdate<T = unknown>(collection: string, query: Record<string, unknown>, update: Record<string, unknown>, options?: BaseOptions & {
48
+ returnDocument?: 'before' | 'after';
49
+ }): Promise<T | null>;
50
+ updateMany(collection: string, query: Record<string, unknown>, data: unknown, options?: BaseOptions): Promise<number>;
51
+ delete(collection: string, id: string, options?: BaseOptions): Promise<boolean>;
52
+ deleteMany(collection: string, query: Record<string, unknown>, options?: BaseOptions): Promise<number>;
53
+ count(collection: string, query: Record<string, unknown>, options?: BaseOptions): Promise<number>;
54
+ aggregate<T = unknown>(collection: string, pipeline: unknown[], options?: BaseOptions): Promise<T[]>;
55
+ transaction<T>(fn: (session: any) => Promise<T>): Promise<T>;
56
+ createAuditLog(data: AuditLogData, options?: BaseOptions): Promise<void>;
57
+ createVersion(data: VersionData, options?: BaseOptions): Promise<void>;
58
+ getVersions(collection: string, documentId: string): Promise<VersionData[]>;
59
+ createWebhookDelivery(data: WebhookDeliveryData): Promise<void>;
60
+ getWebhookDeliveries(webhookId: string, limit?: number): Promise<WebhookDeliveryRecord[]>;
61
+ search<T = unknown>(collection: string, query: string, fields: string[], limit?: number, options?: BaseOptions): Promise<T[]>;
62
+ }
@@ -0,0 +1,557 @@
1
+ import mongoose from 'mongoose';
2
+ import { getModelForCollection } from './model-factory';
3
+ import NodeCache from 'node-cache';
4
+ import Redis from 'ioredis';
5
+ import pino from 'pino';
6
+ const logger = pino();
7
+ // Hard ceiling on query result size to prevent memory exhaustion / DoS
8
+ const MAX_QUERY_LIMIT = 500;
9
+ const DEFAULT_QUERY_LIMIT = 100;
10
+ export class LocalCacheLayer {
11
+ cache;
12
+ constructor() {
13
+ this.cache = new NodeCache({ stdTTL: 60, checkperiod: 120 });
14
+ }
15
+ async get(key) {
16
+ return this.cache.get(key);
17
+ }
18
+ async set(key, value, collection) {
19
+ this.cache.set(key, value);
20
+ }
21
+ async invalidate(collection) {
22
+ const keys = this.cache.keys();
23
+ const targets = keys.filter((k) => k.startsWith(`${collection}:`));
24
+ this.cache.del(targets);
25
+ }
26
+ }
27
+ export class RedisCacheLayer {
28
+ redis;
29
+ constructor(redisUrl) {
30
+ this.redis = new Redis(redisUrl, {
31
+ maxRetriesPerRequest: 3,
32
+ });
33
+ logger.info('MongooseAdapter: Redis_Cache_Layer Initialized');
34
+ }
35
+ async get(key) {
36
+ try {
37
+ const data = await this.redis.get(key);
38
+ return data ? JSON.parse(data) : undefined;
39
+ }
40
+ catch (error) {
41
+ logger.warn({ error: error.message }, 'RedisCacheLayer: Get failed');
42
+ return undefined;
43
+ }
44
+ }
45
+ async set(key, value, collection) {
46
+ try {
47
+ const setKey = `zenith:cache:collection:${collection}`;
48
+ await this.redis.setex(key, 60, JSON.stringify(value));
49
+ await this.redis.sadd(setKey, key);
50
+ await this.redis.expire(setKey, 120);
51
+ }
52
+ catch (error) {
53
+ logger.warn({ error: error.message }, 'RedisCacheLayer: Set failed');
54
+ }
55
+ }
56
+ async invalidate(collection) {
57
+ try {
58
+ const setKey = `zenith:cache:collection:${collection}`;
59
+ const keys = await this.redis.smembers(setKey);
60
+ if (keys.length > 0) {
61
+ await this.redis.del(...keys);
62
+ }
63
+ await this.redis.del(setKey);
64
+ }
65
+ catch (error) {
66
+ logger.warn({ error: error.message }, 'RedisCacheLayer: Invalidate failed');
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * Mongoose Database Adapter — Hardened Edition
72
+ * ──────────────────────────────────────────
73
+ * High-performance implementation for MongoDB.
74
+ * Features: Neural Cache Layer, automatic session management, and health monitoring.
75
+ */
76
+ export class MongooseAdapter {
77
+ uri;
78
+ name = 'mongoose';
79
+ models = {};
80
+ cache;
81
+ constructor(uri) {
82
+ this.uri = uri;
83
+ const redisUrl = process.env.REDIS_URL;
84
+ if (redisUrl) {
85
+ this.cache = new RedisCacheLayer(redisUrl);
86
+ }
87
+ else {
88
+ this.cache = new LocalCacheLayer();
89
+ logger.warn('MongooseAdapter: Local_Cache_Layer Initialized (Warning: Cache desync risk under horizontal scaling)');
90
+ }
91
+ logger.info('MongooseAdapter: Neural_Cache_Layer Initialized');
92
+ }
93
+ async connect() {
94
+ try {
95
+ const poolMax = parseInt(process.env.DB_POOL_SIZE || '10', 10);
96
+ await mongoose.connect(this.uri, {
97
+ serverSelectionTimeoutMS: 5000,
98
+ socketTimeoutMS: 45000,
99
+ maxPoolSize: poolMax,
100
+ });
101
+ logger.info('MongooseAdapter: Connected to MongoDB');
102
+ this._initSystemModels();
103
+ }
104
+ catch (error) {
105
+ logger.error({ error: error.message }, 'MongooseAdapter: Connection failed');
106
+ throw error;
107
+ }
108
+ }
109
+ async disconnect() {
110
+ await mongoose.disconnect();
111
+ logger.info('MongooseAdapter: Disconnected');
112
+ }
113
+ getHealth() {
114
+ const state = mongoose.connection.readyState;
115
+ switch (state) {
116
+ case 0:
117
+ return 'disconnected';
118
+ case 1:
119
+ return 'ok';
120
+ case 2:
121
+ return 'connecting';
122
+ case 3:
123
+ return 'disconnected';
124
+ default:
125
+ return 'error';
126
+ }
127
+ }
128
+ _initSystemModels() {
129
+ // Ensure system models are indexed for performance
130
+ if (!mongoose.models['AuditLog']) {
131
+ const schema = new mongoose.Schema({
132
+ timestamp: { type: Date, default: Date.now, index: true },
133
+ collectionName: { type: String, index: true },
134
+ documentId: { type: String, index: true },
135
+ userId: { type: String, index: true },
136
+ userEmail: { type: String },
137
+ userName: { type: String },
138
+ action: { type: String, index: true },
139
+ changes: { type: mongoose.Schema.Types.Mixed },
140
+ ip: { type: String },
141
+ userAgent: { type: String },
142
+ status: { type: String, index: true },
143
+ resource: { type: String },
144
+ siteId: { type: String, index: true },
145
+ hash: { type: String },
146
+ previousHash: { type: String },
147
+ }, { strict: false });
148
+ schema.index({ siteId: 1, timestamp: -1 });
149
+ schema.index({ action: 1, timestamp: -1 });
150
+ mongoose.model('AuditLog', schema);
151
+ }
152
+ if (!mongoose.models['Version']) {
153
+ const schema = new mongoose.Schema({
154
+ timestamp: { type: Date, default: Date.now, index: true },
155
+ collectionSlug: { type: String, index: true },
156
+ documentId: { type: String, index: true },
157
+ }, { strict: false });
158
+ mongoose.model('Version', schema);
159
+ }
160
+ if (!mongoose.models['flows']) {
161
+ const schema = new mongoose.Schema({
162
+ name: { type: String, required: true },
163
+ description: { type: String },
164
+ active: { type: Boolean, default: false },
165
+ trigger: { type: mongoose.Schema.Types.Mixed, default: {} },
166
+ steps: { type: mongoose.Schema.Types.Mixed, default: [] },
167
+ }, { timestamps: true, strict: false });
168
+ mongoose.model('flows', schema);
169
+ }
170
+ if (!mongoose.models['z_migrations']) {
171
+ const schema = new mongoose.Schema({
172
+ name: { type: String, required: true, unique: true, index: true },
173
+ batch: { type: Number, required: true },
174
+ executedAt: { type: Date, default: Date.now },
175
+ }, { strict: true });
176
+ mongoose.model('z_migrations', schema);
177
+ }
178
+ if (!mongoose.models['z_collections']) {
179
+ const schema = new mongoose.Schema({
180
+ name: { type: String, required: true },
181
+ slug: { type: String, required: true, unique: true, index: true },
182
+ labels: { singular: { type: String }, plural: { type: String } },
183
+ drafts: { type: Boolean, default: false },
184
+ timestamps: { type: Boolean, default: true },
185
+ fields: { type: mongoose.Schema.Types.Mixed, default: [] },
186
+ }, { timestamps: true, strict: false });
187
+ mongoose.model('z_collections', schema);
188
+ }
189
+ if (!mongoose.models['z_components']) {
190
+ const schema = new mongoose.Schema({
191
+ slug: { type: String, required: true, unique: true, index: true },
192
+ displayName: { type: String, required: true },
193
+ category: { type: String, default: 'General' },
194
+ icon: { type: String, default: 'Box' },
195
+ description: { type: String },
196
+ fields: { type: mongoose.Schema.Types.Mixed, default: [] },
197
+ }, { timestamps: true, strict: false });
198
+ mongoose.model('z_components', schema);
199
+ }
200
+ if (!mongoose.models['z_presence']) {
201
+ const schema = new mongoose.Schema({
202
+ userId: { type: String, required: true },
203
+ email: { type: String, required: true },
204
+ collectionName: { type: String, required: true },
205
+ documentId: { type: String, required: true },
206
+ lastActive: { type: Number, required: true },
207
+ }, { timestamps: false, strict: true });
208
+ mongoose.model('z_presence', schema);
209
+ }
210
+ if (!mongoose.models['Lock']) {
211
+ const schema = new mongoose.Schema({
212
+ collectionName: { type: String, required: true, index: true },
213
+ documentId: { type: String, required: true, index: true },
214
+ siteId: { type: String, index: true },
215
+ lockedBy: { type: String, required: true },
216
+ lockedByEmail: { type: String, required: true },
217
+ lockedAt: { type: Date, default: Date.now },
218
+ lockExpiresAt: { type: Date, required: true },
219
+ }, { collection: 'z_locks', timestamps: false });
220
+ schema.index({ collectionName: 1, documentId: 1, siteId: 1 }, { unique: true });
221
+ mongoose.model('Lock', schema);
222
+ }
223
+ }
224
+ async registerCollection(config) {
225
+ console.log(`[MongooseAdapter] Registering collection: ${config.slug}`);
226
+ const model = getModelForCollection(config);
227
+ console.log(`[MongooseAdapter] Successfully registered model: ${model.modelName}`);
228
+ this.models[config.slug] = model;
229
+ }
230
+ async getExistingCollections() {
231
+ const db = mongoose.connection.db;
232
+ if (!db)
233
+ return [];
234
+ const collections = await db.listCollections().toArray();
235
+ return collections.map((c) => c.name);
236
+ }
237
+ getModel(collection) {
238
+ if (collection === 'flows')
239
+ return mongoose.models['flows'];
240
+ let resolvedCollection = collection;
241
+ if (collection === 'users')
242
+ resolvedCollection = 'User';
243
+ if (collection === 'z_sites' || collection === 'sites')
244
+ resolvedCollection = 'Site';
245
+ if (collection === 'z_workspaces' || collection === 'workspaces')
246
+ resolvedCollection = 'Workspace';
247
+ if (collection === 'z_password_resets')
248
+ resolvedCollection = 'z_password_resets';
249
+ if (collection === 'z_api_keys')
250
+ resolvedCollection = 'z_api_keys';
251
+ if (collection === 'z_migrations')
252
+ resolvedCollection = 'z_migrations';
253
+ if (collection === 'z_collections')
254
+ resolvedCollection = 'z_collections';
255
+ if (collection === 'z_components')
256
+ resolvedCollection = 'z_components';
257
+ if (collection === 'z_presence')
258
+ resolvedCollection = 'z_presence';
259
+ if (collection === 'z_locks' || collection === 'locks')
260
+ resolvedCollection = 'Lock';
261
+ if (collection === 'z_webhook_configs')
262
+ resolvedCollection = 'WebhookConfig';
263
+ if (collection === 'z_plugins')
264
+ resolvedCollection = 'Plugin';
265
+ if (collection === 'audit_logs' || collection === 'z_audit_logs')
266
+ resolvedCollection = 'AuditLog';
267
+ if (collection === 'versions' || collection === 'z_versions')
268
+ resolvedCollection = 'Version';
269
+ const model = this.models[resolvedCollection] || mongoose.models[resolvedCollection];
270
+ if (!model)
271
+ throw new Error(`Collection "${collection}" not registered`);
272
+ return model;
273
+ }
274
+ _getCacheKey(collection, query, options) {
275
+ const sortObject = (obj) => {
276
+ if (obj === null || typeof obj !== 'object')
277
+ return obj;
278
+ if (Array.isArray(obj))
279
+ return obj.map(sortObject);
280
+ return Object.keys(obj).sort().reduce((acc, key) => {
281
+ acc[key] = sortObject(obj[key]);
282
+ return acc;
283
+ }, {});
284
+ };
285
+ const siteId = options?.siteId || options?.tenantId || globalThis.zenithAls?.getStore()?.siteId;
286
+ const enrichedQuery = siteId ? { ...query, siteId } : query;
287
+ return `${collection}:${JSON.stringify(sortObject(enrichedQuery))}:${JSON.stringify(sortObject(options))}`;
288
+ }
289
+ async find(collection, query, options = {}) {
290
+ const cacheKey = this._getCacheKey(collection, query, options);
291
+ const cached = await this.cache.get(cacheKey);
292
+ if (cached)
293
+ return cached;
294
+ const globalAot = globalThis.zenithAotBridge;
295
+ if (globalAot && globalAot.hasQuery(collection, 'find')) {
296
+ const model = this.getModel(collection);
297
+ const docs = await globalAot.executeQuery(collection, 'find', mongoose.connection.db, model, this._normalizeQuery(query, options), options);
298
+ await this.cache.set(cacheKey, docs, collection);
299
+ return docs;
300
+ }
301
+ const model = this.getModel(collection);
302
+ const normalizedQuery = this._normalizeQuery(query, options);
303
+ const q = model.find(normalizedQuery);
304
+ if (options.select)
305
+ q.select(options.select);
306
+ if (options.populate) {
307
+ const populateArr = Array.isArray(options.populate) ? options.populate : [options.populate];
308
+ populateArr.forEach((p) => q.populate(p));
309
+ }
310
+ const requestedLimit = options.limit ?? DEFAULT_QUERY_LIMIT;
311
+ const limit = Math.min(requestedLimit, MAX_QUERY_LIMIT);
312
+ const docs = (await q
313
+ .sort(options.sort || { createdAt: -1 })
314
+ .skip(options.skip || 0)
315
+ .limit(limit)
316
+ .session(options.session)
317
+ .lean()
318
+ .exec());
319
+ await this.cache.set(cacheKey, docs, collection);
320
+ return docs;
321
+ }
322
+ async findOne(collection, query, options = {}) {
323
+ const cacheKey = this._getCacheKey(collection, query, options);
324
+ const cached = await this.cache.get(cacheKey);
325
+ if (cached)
326
+ return cached;
327
+ const model = this.getModel(collection);
328
+ const q = model.findOne(this._normalizeQuery(query, options));
329
+ if (options.select)
330
+ q.select(options.select);
331
+ if (options.populate) {
332
+ const populateArr = Array.isArray(options.populate) ? options.populate : [options.populate];
333
+ populateArr.forEach((p) => q.populate(p));
334
+ }
335
+ const doc = (await q
336
+ .session(options.session)
337
+ .lean()
338
+ .exec());
339
+ if (doc)
340
+ await this.cache.set(cacheKey, doc, collection);
341
+ return doc;
342
+ }
343
+ async _invalidateCache(collection) {
344
+ await this.cache.invalidate(collection);
345
+ }
346
+ async create(collection, data, options = {}) {
347
+ // Inject tenant scoping into created documents
348
+ const siteId = options?.siteId || options?.tenantId || globalThis.zenithAls?.getStore()?.siteId;
349
+ const enrichedData = siteId && !data.siteId
350
+ ? { ...data, siteId }
351
+ : data;
352
+ const globalAot = globalThis.zenithAotBridge;
353
+ if (globalAot && globalAot.hasQuery(collection, 'create')) {
354
+ const model = this.getModel(collection);
355
+ const doc = await globalAot.executeQuery(collection, 'create', mongoose.connection.db, model, enrichedData, options);
356
+ await this._invalidateCache(collection);
357
+ return doc;
358
+ }
359
+ const model = this.getModel(collection);
360
+ const [doc] = await model.create([enrichedData], { session: options.session });
361
+ await this._invalidateCache(collection);
362
+ return doc.toObject();
363
+ }
364
+ async update(collection, id, data, options = {}) {
365
+ const model = this.getModel(collection);
366
+ const siteId = options?.siteId || options?.tenantId || globalThis.zenithAls?.getStore()?.siteId;
367
+ const filter = { _id: id };
368
+ if (siteId)
369
+ filter.siteId = siteId;
370
+ // Atomic optimistic locking: include expected _version in the filter
371
+ if (options.expectedVersion !== undefined) {
372
+ filter._version = options.expectedVersion;
373
+ }
374
+ const doc = await model
375
+ .findOneAndUpdate(filter, { $set: data }, {
376
+ new: true,
377
+ session: options.session,
378
+ runValidators: true,
379
+ })
380
+ .lean()
381
+ .exec();
382
+ await this._invalidateCache(collection);
383
+ return doc;
384
+ }
385
+ _normalizeQuery(query, options) {
386
+ const normalized = { ...query };
387
+ if ('id' in normalized) {
388
+ normalized._id = normalized.id;
389
+ delete normalized.id;
390
+ }
391
+ // Inject tenant scoping from options to prevent cross-tenant data access
392
+ const siteId = options?.siteId || options?.tenantId || globalThis.zenithAls?.getStore()?.siteId;
393
+ if (siteId && !normalized.siteId) {
394
+ normalized.siteId = siteId;
395
+ }
396
+ return normalized;
397
+ }
398
+ async findOneAndUpdate(collection, query, update, options) {
399
+ const model = this.getModel(collection);
400
+ const normalized = this._normalizeQuery(query, options);
401
+ const returnDoc = options?.returnDocument === 'after' ? true : false;
402
+ const doc = await model
403
+ .findOneAndUpdate(normalized, { $set: update }, {
404
+ new: returnDoc,
405
+ session: options?.session,
406
+ runValidators: true,
407
+ })
408
+ .lean()
409
+ .exec();
410
+ return doc;
411
+ }
412
+ async updateMany(collection, query, data, options = {}) {
413
+ const model = this.getModel(collection);
414
+ const result = await model.updateMany(this._normalizeQuery(query, options), { $set: data }, {
415
+ session: options.session,
416
+ });
417
+ await this._invalidateCache(collection);
418
+ return result.modifiedCount;
419
+ }
420
+ async delete(collection, id, options = {}) {
421
+ const model = this.getModel(collection);
422
+ const siteId = options?.siteId || options?.tenantId || globalThis.zenithAls?.getStore()?.siteId;
423
+ const filter = { _id: id };
424
+ if (siteId)
425
+ filter.siteId = siteId;
426
+ const result = await model.findOneAndDelete(filter, { session: options.session });
427
+ await this._invalidateCache(collection);
428
+ return !!result;
429
+ }
430
+ async deleteMany(collection, query, options = {}) {
431
+ const model = this.getModel(collection);
432
+ const result = await model.deleteMany(this._normalizeQuery(query, options), { session: options.session });
433
+ await this._invalidateCache(collection);
434
+ return result.deletedCount;
435
+ }
436
+ async count(collection, query, options) {
437
+ const model = this.getModel(collection);
438
+ return model.countDocuments(this._normalizeQuery(query, options));
439
+ }
440
+ async aggregate(collection, pipeline, options) {
441
+ const model = this.getModel(collection);
442
+ const enrichedPipeline = [...pipeline];
443
+ // Inject tenant scoping — prepend $match stage to prevent cross-tenant data leaks
444
+ const siteId = options?.siteId || options?.tenantId || globalThis.zenithAls?.getStore()?.siteId;
445
+ if (siteId) {
446
+ enrichedPipeline.unshift({ $match: { siteId } });
447
+ }
448
+ return model.aggregate(enrichedPipeline).exec();
449
+ }
450
+ async transaction(fn) {
451
+ try {
452
+ const session = await mongoose.startSession();
453
+ try {
454
+ let result;
455
+ await session.withTransaction(async () => {
456
+ result = await fn(session);
457
+ });
458
+ return result;
459
+ }
460
+ catch (error) {
461
+ // Fallback for standalone MongoDB (no replica set)
462
+ if (error.message?.includes('replica set') || error.codeName === 'NotAReplicaSet') {
463
+ if (process.env.NODE_ENV === 'production') {
464
+ throw new Error('FATAL: MongoDB must be running as a Replica Set in production to guarantee ACID transactions. Standalone MongoDB instances are strictly forbidden because they silently drop transactions and risk data corruption.');
465
+ }
466
+ logger.warn('Transactions not supported on this MongoDB instance. Running without transaction.');
467
+ return await fn(undefined);
468
+ }
469
+ throw error;
470
+ }
471
+ finally {
472
+ session.endSession();
473
+ }
474
+ }
475
+ catch (sessionError) {
476
+ // If we can't even start a session
477
+ if (process.env.NODE_ENV === 'production') {
478
+ throw new Error(`FATAL: Failed to start MongoDB session in production: ${sessionError.message}. Replica Set is required.`);
479
+ }
480
+ logger.warn({ err: sessionError.message }, 'Failed to start MongoDB session. Running without transaction.');
481
+ return await fn(undefined);
482
+ }
483
+ }
484
+ async createAuditLog(data, options) {
485
+ const AuditModel = mongoose.models['AuditLog'];
486
+ if (AuditModel) {
487
+ if (options?.session) {
488
+ await AuditModel.create([data], { session: options.session });
489
+ }
490
+ else {
491
+ await AuditModel.create(data);
492
+ }
493
+ }
494
+ }
495
+ async createVersion(data, options) {
496
+ const VersionModel = mongoose.models['Version'];
497
+ if (VersionModel) {
498
+ if (options?.session) {
499
+ await VersionModel.create([data], { session: options.session });
500
+ }
501
+ else {
502
+ await VersionModel.create(data);
503
+ }
504
+ }
505
+ }
506
+ async getVersions(collection, documentId) {
507
+ const VersionModel = mongoose.models['Version'];
508
+ if (!VersionModel)
509
+ return [];
510
+ return VersionModel.find({ collectionName: collection, documentId })
511
+ .sort({ timestamp: -1 })
512
+ .lean()
513
+ .exec();
514
+ }
515
+ async createWebhookDelivery(data) {
516
+ const WebhookModel = mongoose.models['WebhookDelivery'];
517
+ if (WebhookModel)
518
+ await WebhookModel.create(data);
519
+ }
520
+ async getWebhookDeliveries(webhookId, limit = 50) {
521
+ const WebhookModel = mongoose.models['WebhookDelivery'];
522
+ if (!WebhookModel)
523
+ return [];
524
+ const docs = await WebhookModel.find({ webhookId })
525
+ .sort({ timestamp: -1 })
526
+ .limit(limit)
527
+ .lean();
528
+ return docs.map((d) => ({
529
+ id: d._id?.toString() || d.id,
530
+ webhookId: d.webhookId,
531
+ collectionSlug: d.collectionSlug,
532
+ event: d.event,
533
+ url: d.url,
534
+ payload: d.payload,
535
+ success: d.success,
536
+ responseStatus: d.responseStatus,
537
+ timestamp: d.timestamp,
538
+ }));
539
+ }
540
+ async search(collection, query, fields, limit = 10, options) {
541
+ const model = this.getModel(collection);
542
+ const escaped = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
543
+ const regex = { $regex: escaped, $options: 'i' };
544
+ const orQuery = fields.map((f) => ({ [f]: regex }));
545
+ const findQuery = { $or: orQuery };
546
+ const siteId = options?.siteId || options?.tenantId || globalThis.zenithAls?.getStore()?.siteId;
547
+ if (siteId) {
548
+ findQuery.siteId = siteId;
549
+ }
550
+ return model
551
+ .find(findQuery)
552
+ .limit(Math.min(limit, 50))
553
+ .lean()
554
+ .exec();
555
+ }
556
+ }
557
+ //# sourceMappingURL=MongooseAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongooseAdapter.js","sourceRoot":"","sources":["../src/MongooseAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './MongooseAdapter';
2
+ export * from './model-factory';
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './MongooseAdapter';
2
+ export * from './model-factory';
3
+ //# sourceMappingURL=index.js.map