const mongoose = require('../infrastructure/Mongoose')
const { ProjectSchema } = require('./Project')

const { Schema } = mongoose
const { ObjectId } = Schema

const DeleterDataSchema = new Schema({
  deleterId: { type: ObjectId, ref: 'User' },
  deleterIpAddress: { type: String },
  deletedAt: { type: Date },
  deletedProjectId: { type: ObjectId },
  deletedProjectOwnerId: { type: ObjectId, ref: 'User' },
  deletedProjectCollaboratorIds: [{ type: ObjectId, ref: 'User' }],
  deletedProjectReadOnlyIds: [{ type: ObjectId, ref: 'User' }],
  deletedProjectReviewerIds: [{ type: ObjectId, ref: 'User' }],
  deletedProjectReadWriteTokenAccessIds: [{ type: ObjectId, ref: 'User' }],
  deletedProjectReadOnlyTokenAccessIds: [{ type: ObjectId, ref: 'User' }],
  deletedProjectReadWriteToken: { type: String },
  deletedProjectReadOnlyToken: { type: String },
  deletedProjectLastUpdatedAt: { type: Date },
  deletedProjectOverleafId: { type: Number },
  deletedProjectOverleafHistoryId: { type: Schema.Types.Mixed },
})

const DeletedProjectSchema = new Schema(
  {
    deleterData: DeleterDataSchema,
    project: ProjectSchema,
  },
  { collection: 'deletedProjects', minimize: false }
)

exports.DeletedProject = mongoose.model('DeletedProject', DeletedProjectSchema)
exports.DeletedProjectSchema = DeletedProjectSchema
