// chat-room-invite.js
// Copyright (C) 2022 DTP Technologies, LLC
// License: Apache-2.0

'use strict';

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const INVITE_STATUS_LIST = ['new', 'accepted', 'rejected', 'deleted'];

const ChatRoomInviteSchema = new Schema({
  created: { type: Date, default: Date.now, required: true, index: -1, expires: '30d' },
  room: { type: Schema.ObjectId, required: true, ref: 'ChatRoom' },
  memberType: { type: String, required: true },
  member: { type: Schema.ObjectId, required: true, index: 1, refPath: 'memberType' },
  status: { type: String, enum: INVITE_STATUS_LIST, required: true },
  message: { type: String },
});

ChatRoomInviteSchema.index({
  room: 1,
  member: 1,
}, {
  unique: true,
  name: 'chatroom_invite_unique_idx',
});

module.exports = mongoose.model('ChatRoomInvite', ChatRoomInviteSchema);