Refactored schemas, naming, and instantiation files.

This commit is contained in:
2022-04-01 10:27:58 -05:00
parent 8231f9db67
commit 19bbca36ca
12 changed files with 77 additions and 99 deletions

View File

@@ -7,32 +7,20 @@ const Types = mongoose.Schema.Types;
const userSchema = new mongoose.Schema({
email: {
value: {
type: String,
required: true,
minlength: 1,
trim: true,
unique: true,
validate: {
validator: validator.isEmail,
message: "String not email.",
}
},
public: { type: Boolean, required: true, default: false }
},
firstName: {
value: { type: String, required: true, trim: true },
public: { type: Boolean, required: true, default: false }
},
lastName: {
value: { type: String, required: true, trim: true },
public: { type: Boolean, required: true, default: false }
type: String,
required: true,
minlength: 1,
trim: true,
unique: true,
validate: {
validator: validator.isEmail,
message: "String not email.",
}
},
firstName: { type: String, required: true, trim: true },
lastName: { type: String, required: true, trim: true },
joinDate: { type: Date, default: Date.now, required: true },
phone: {
value: { type: Number, required: false, min: 0 },
public: { type: Boolean, required: true, default: false }
},
phone: { type: Number, required: false, min: 0 },
password: {
type: String,
required: true,
@@ -40,16 +28,17 @@ const userSchema = new mongoose.Schema({
// TODO: Custom validator for password requirements?
},
createdMatches: { type: [{ type: Types.ObjectId, ref: ModelNameRegister.Match }], required: true, default: [] },
participatingMatches: {
value: { type: [{ type: Types.ObjectId, ref: ModelNameRegister.Match }], required: true, default: [] },
public: { type: Boolean, required: true, default: false }
},
accessLevel: { type: Number, required: true, default: 0 }
participatingMatches: { type: [{ type: Types.ObjectId, ref: ModelNameRegister.Match }], required: true, default: [] },
emailPublicity: { type: Number, required: true, default: 0 },
bioPublicity: { type: Boolean, required: true, default: false },
phonePublicity: { type: Boolean, required: true, default: false },
participatingMatchesPublicity: { type: Boolean, required: true, default: false },
accessLevel: { type: Number, required: true, default: 0 },
});
userSchema.statics.credentialsExist = async function (email, password) {
let userModel = this;
let user = await userModel.findOne({ "email.value": email });
let user = await userModel.findOne({ email: email });
if (!user) {
return Promise.reject(new Error("Credentials do not exist."));
}