54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
const mongoose = require("mongoose")
|
|
const GroupSchema = new mongoose.Schema(
|
|
{
|
|
Name: { type: String, required: true },
|
|
Description: { type: String, required: true },
|
|
Public: { type: Boolean, required: true },
|
|
IconApproved: { type: Boolean, required: true },
|
|
denied: { type: Boolean, required: false },
|
|
Hidden: { type: Boolean, required: false },
|
|
groupid: { type: Number, required: true },
|
|
ownerid: { type: Number, required: true },
|
|
memberscount: { type: Number, required: true },
|
|
members: { type: [{ userId: Number, rank: Number }], required: true },
|
|
currentshout: {
|
|
type: { content: String, shouter: Number },
|
|
required: false,
|
|
},
|
|
Roles: {
|
|
type: [
|
|
{
|
|
RoleName: String,
|
|
Permissions: {
|
|
Shout: Boolean,
|
|
Kick: Boolean,
|
|
ChangeRoles: Boolean,
|
|
ModerateWall: Boolean,
|
|
ManageAllies: Boolean,
|
|
All: Boolean,
|
|
},
|
|
Rank: Number,
|
|
},
|
|
],
|
|
required: true,
|
|
}, // default {}
|
|
},
|
|
{ collection: "groups" },
|
|
)
|
|
const model = mongoose.model("GroupSchema", GroupSchema)
|
|
|
|
GroupSchema.virtual("owner", {
|
|
ref: "UserSchema",
|
|
localField: "ownerid",
|
|
foreignField: "userid",
|
|
justOne: true,
|
|
})
|
|
|
|
GroupSchema.virtual("memberspoly", {
|
|
ref: "UserSchema",
|
|
localField: "members.userId",
|
|
foreignField: "userid",
|
|
})
|
|
|
|
module.exports = model
|