38 lines
854 B
TypeScript
38 lines
854 B
TypeScript
import {model, ObjectId, Schema} from "mongoose";
|
|
import { IKeyRole } from "@models/AccessKey";
|
|
import { fieldEncryption } from "mongoose-field-encryption";
|
|
|
|
export interface IMember {
|
|
projectId: ObjectId,
|
|
memberId: ObjectId,
|
|
role: IKeyRole,
|
|
accepted: boolean
|
|
}
|
|
|
|
const MemberSchema = new Schema<IMember>({
|
|
projectId: {
|
|
type: String,
|
|
required: true
|
|
},
|
|
memberId: {
|
|
type: String,
|
|
required: true
|
|
},
|
|
role: {
|
|
type: Number,
|
|
enum: IKeyRole,
|
|
default: IKeyRole.MANAGE
|
|
},
|
|
accepted: {
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
});
|
|
|
|
MemberSchema.plugin(fieldEncryption, {
|
|
fields: ["projectId", "memberId"],
|
|
secret: process.env.ENC_KEY,
|
|
saltGenerator: () => process.env.SIG_KEY,
|
|
});
|
|
|
|
export const Member = model<IMember>("members", MemberSchema); |