const mongoose = require("mongoose") var uniqueValidator = require("mongoose-unique-validator") const UserSchema = new mongoose.Schema( { username: { type: String, required: true, unique: true, uniqueCaseInsensitive: true, }, password: { type: String, required: true }, coins: { type: Number, required: true }, admin: { type: Boolean, required: true }, ugcpermission: { type: Boolean, required: false }, userid: { type: Number, required: true, index: true }, moderation: { type: String, required: true }, moderationhistory: { type: Object, required: false }, inventory: { type: Object, required: false }, colors: { type: Object, required: false }, joindate: { type: String, required: true }, lastclaimofcurrency: { type: Number, required: true }, discordid: { type: String, required: false }, gamejoin: { type: String, required: false }, gamejoin2018: { type: String, required: false }, gamejoin2020: { type: String, required: false }, twofasecrets: { type: String, required: false }, followers: { type: Object, required: false }, friends: { type: Object, required: false }, friendrequests: { type: Object, required: false }, membership: { type: String, required: true }, badges: { type: Object, required: false }, status: { type: String, required: false }, timesincelastrequest: { type: Number, required: true }, avatartype: { type: String, required: false }, bio: { type: String, required: false }, recentlyplayed: { type: [{ id: Number }], required: false }, css: { type: String, required: false }, aboutme: { type: String, required: false }, lastfeedsharetime: { type: Number, required: false }, feed: [ { posterid: Number, content: String, date: Number, moderated: Boolean, }, ], required: false, }, { collection: "users" }, ) UserSchema.plugin(uniqueValidator) UserSchema.virtual("recentlyplayedgames", { ref: "GamesSchema", localField: "recentlyplayed.id", foreignField: "idofgame", }) UserSchema.virtual("friendsdata", { ref: "UserSchema", localField: "friends.userid", foreignField: "userid", }) UserSchema.virtual("feed.userdata", { ref: "UserSchema", localField: "feed.posterid", foreignField: "userid", justOne: true, }) UserSchema.virtual("inventory.itemdata", { ref: "CatalogSchema", localField: "inventory.ItemId", foreignField: "ItemId", justOne: true, }) const model = mongoose.model("UserSchema", UserSchema) module.exports = model