import { MongoModel } from '@birbal/mongo-utilities/dist/mongo-model'; import { SearchUtility } from '@birbal/mongo-utilities/dist/mongo-search'; import { LogAndError } from '@birbal/common-utilities/dist/error'; import { Document, Schema, SchemaTypes } from 'mongoose'; export interface IVirtualRegistryBody { userRef?: string; idType?: string; createdAt?: Date; } export interface IVirtualRegistry { _id?: string; registry?: IVirtualRegistryBody; } /** Sequelize Schema */ export interface VirtualRegistryDocument extends Document { _id: string; registry?: IVirtualRegistryBody; } export class VirtualRegistryModel extends MongoModel { TABLE_NAME = "profile_virtuals" constructor(dbName: string) { super(dbName); } getDataModel(doc: VirtualRegistryDocument): IVirtualRegistry { if (!doc) { throw new LogAndError("Invalid doc object"); } try { return { _id: doc._id , registry: doc.registry } } catch (e) { throw e; } } async defineSchema() { try { if (!this.DATABASE_NAME || !this.TABLE_NAME) { throw new LogAndError('Invalid db name/ tbl name'); } let schema = new Schema({ _id: SchemaTypes.String }, {collection: this.TABLE_NAME}); await this.define(schema); } catch (e) { throw e; } } }