MeteoriteH/Back/model/user.js

84 lines
2.4 KiB
JavaScript

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