Spaces:
Running
Running
File size: 2,577 Bytes
f37be3f a6fbb8d 98d83e7 a6fbb8d 98d83e7 a6fbb8d 98d83e7 a6fbb8d 98d83e7 a6fbb8d 98d83e7 a6fbb8d 98d83e7 a6fbb8d 98d83e7 a6fbb8d 98d83e7 f37be3f a6fbb8d 98d83e7 f37be3f 98d83e7 f37be3f 98d83e7 f37be3f 98d83e7 a6fbb8d ab9c233 a6fbb8d f37be3f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
import mongoose from "mongoose";
import bcrypt from "bcrypt";
export const saltrounds = 5;
const { Schema } = mongoose;
enum Role {
USER = "user"
}
enum Gender {
MALE = "male",
FEMALE = "female"
}
enum FitnessLevel {
BEGINNER = "beginner",
INTERMEDIATE = "intermediate",
ADVANCED = "advanced"
}
enum FitnessGoal {
LOSE_WEIGHT = "lose weight",
GAIN_MUSCLE = "gain muscle",
GET_FITTER = "get fitter"
}
enum WorkoutPlace {
GYM = "gym",
HOME = "home",
BOTH = "both"
}
enum PreferredDay {
SATURDAY = "saturday",
SUNDAY = "sunday",
MONDAY = "monday",
TUESDAY = "tuesday",
WEDNESDAY = "wednesday",
THURSDAY = "thursday",
FRIDAY = "friday"
}
enum PreferredEquipment {
BARBELLS = "barbells",
DUMBBELLS = "dumbbells",
GYM_MACHINES = "gym machines",
RESISTANCE_BAND = "resistance band",
BODYWEIGHT = "bodyweight"
}
enum Injurie {
NECK = "neck",
SHOULDERS = "shoulders",
BACK = "back",
ARMS = "arms",
KNEES = "knees"
}
const userSchema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true, dropDups: true },
password: { type: String, required: true },
image: { type: Object },
gender: {
type: String,
enum: Gender,
required: true
},
height: { type: Number, required: true },
weight: { type: Number, required: true },
fitness_level: {
type: String,
enum: FitnessLevel,
required: true
},
preferences: {
fitness_goal: {
type: String,
enum: FitnessGoal,
required: true
},
target_weight: { type: Number, required: true },
workout_frequency: { type: Number, required: true },
preferred_days: [{
type: String,
enum: PreferredDay,
required: true
}],
workout_place: {
type: String,
enum: WorkoutPlace,
required: true
},
preferred_equipment: [{
type: String,
enum: PreferredEquipment,
required: true
}]
},
injuries: [{
type: String,
enum: Injurie,
required: true
}],
dob: { type: Date },
role: {
type: String,
enum: Role,
default: Role.USER
}
});
userSchema.pre("save", async function (next) {
this.password = await bcrypt.hash(this.password, saltrounds);
next();
});
export const userModel = mongoose.model("users", userSchema);
|