| import mongoose from 'mongoose'; |
|
|
| const userSchema = new mongoose.Schema({ |
| googleId: { |
| type: String, |
| required: true, |
| unique: true, |
| }, |
| email: { |
| type: String, |
| required: true, |
| unique: true, |
| }, |
| displayName: String, |
| firstName: String, |
| lastName: String, |
| username: { |
| type: String, |
| unique: true, |
| sparse: true, |
| trim: true, |
| minlength: 3, |
| maxlength: 30, |
| }, |
| role: { type: String, default: 'user' }, |
| |
| |
| profile: { |
| isComplete: { type: Boolean, default: false }, |
| college: { type: String, default: '' }, |
| city: { type: String, default: '' }, |
| gender: { type: String, enum: ['Male', 'Female', 'Non-binary', ''], default: '' }, |
| relationshipStatus: { type: String, default: '' }, |
| photos: [String], |
| bio: { type: String, maxlength: 100 }, |
| socials: { |
| instagram: { type: String, default: '' }, |
| snapchat: { type: String, default: '' }, |
| whatsapp: { type: String, default: '' } |
| } |
| }, |
|
|
| |
| karma: { |
| type: Number, |
| default: 60, |
| min: 0, |
| max: 100 |
| }, |
| |
| flags: { |
| nsfwCount: { type: Number, default: 0 }, |
| reportsReceived: { type: Number, default: 0 }, |
| isBanned: { type: Boolean, default: false } |
| }, |
|
|
| |
| friends: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }], |
| friendRequests: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }] |
|
|
| }, { timestamps: true }); |
|
|
| export default mongoose.model('User', userSchema); |