From e480563602cc5f4413d25e5a7133dbee05bb126e Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Tue, 18 Apr 2023 14:39:02 -0600 Subject: [PATCH] refactor: Convert trash to raw (#28939) --- apps/meteor/server/database/trash.ts | 20 ++++---------------- apps/meteor/server/models/raw/Trash.ts | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 apps/meteor/server/models/raw/Trash.ts diff --git a/apps/meteor/server/database/trash.ts b/apps/meteor/server/database/trash.ts index 1ff6b5eb1e4..d08ac2ae667 100644 --- a/apps/meteor/server/database/trash.ts +++ b/apps/meteor/server/database/trash.ts @@ -1,17 +1,5 @@ -import { Mongo } from 'meteor/mongo'; -import type { Collection } from 'mongodb'; +import { TrashRaw } from '../models/raw/Trash'; +import { db } from './utils'; -import { SystemLogger } from '../lib/logger/system'; - -// TODO need to improve how other files imports this -export const trash = new Mongo.Collection('rocketchat__trash'); -try { - trash._ensureIndex({ __collection__: 1 }); - trash._ensureIndex({ _deletedAt: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 30 }); - - trash._ensureIndex({ rid: 1, __collection__: 1, _deletedAt: 1 }); -} catch (e) { - SystemLogger.error(e); -} - -export const trashCollection = trash.rawCollection() as Collection; +const Trash = new TrashRaw(db); +export const trashCollection = Trash.col; diff --git a/apps/meteor/server/models/raw/Trash.ts b/apps/meteor/server/models/raw/Trash.ts new file mode 100644 index 00000000000..016349dd1d3 --- /dev/null +++ b/apps/meteor/server/models/raw/Trash.ts @@ -0,0 +1,22 @@ +import type { Db, IndexDescription } from 'mongodb'; +import type { RocketChatRecordDeleted } from '@rocket.chat/core-typings'; + +import { BaseRaw } from './BaseRaw'; + +export class TrashRaw extends BaseRaw> { + constructor(db: Db) { + super(db, 'rocketchat__trash', undefined, { + collectionNameResolver(name) { + return name; + }, + }); + } + + protected modelIndexes(): IndexDescription[] | undefined { + return [ + { key: { __collection__: 1 } }, + { key: { _deletedAt: 1 }, expireAfterSeconds: 60 * 60 * 24 * 30 }, + { key: { rid: 1, __collection__: 1, _deletedAt: 1 } }, + ]; + } +}