import { Document, Schema, Model, Connection } from 'mongoose'; import { IFileInfo } from 'common/server'; import { addIdVirtualFields, commonModeSchemaOptions } from './common-options'; export interface IFileInfoModel extends Document, IFileInfo { id: any; ref: any; url: any; } const fileInfoModelSchema = new Schema( { name: { type: Schema.Types.String, required: true }, mimeType: { type: Schema.Types.String, required: true }, size: { type: Schema.Types.Number, required: true }, width: { type: Schema.Types.Number }, height: { type: Schema.Types.Number }, url: { type: Schema.Types.String, required: true, unique: true }, // store the object id of reference object/record ref: { type: Schema.Types.ObjectId, required: true }, // store the value of reference collection refType: { type: Schema.Types.String, required: true, // enum: Object.values(FileRefType), // commented as the FileRefType generated for each project }, createdBy: { type: Schema.Types.String /** , ref: 'accounts' */ }, }, commonModeSchemaOptions, ); addIdVirtualFields(fileInfoModelSchema); export type FileInfoModelType = Model; export const FileInfoModelFunc: (db: Connection) => FileInfoModelType = (db) => db.model('filesInfo', fileInfoModelSchema);