diff --git a/.gitignore b/.gitignore index 1ae713db..45c1abce 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,7 @@ yarn-error.log* # local env files .env*.local -/.env +.env # vercel .vercel diff --git a/package-lock.json b/package-lock.json index 0fd338e7..a55a0c1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,8 +13,8 @@ "@emotion/styled": "^11.11.0", "@heroicons/react": "^2.1.1", "eslint-plugin-prettier": "^5.1.3", + "mongoose": "^7.6.8", "framer-motion": "^11.0.3", - "mongoose": "^7.6.3", "next": "14.0.0", "react": "^18", "react-dom": "^18", @@ -1654,9 +1654,9 @@ "dev": true }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", - "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", + "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", "optional": true, "dependencies": { "sparse-bitfield": "^3.0.3" @@ -1950,9 +1950,9 @@ "integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==" }, "node_modules/@types/webidl-conversions": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.2.tgz", - "integrity": "sha512-uNv6b/uGRLlCVmelat2rA8bcVd3k/42mV2EmjhPh6JLkd35T5bgwR/t6xy7a9MWhd9sixIeBUzhBenvk3NO+DQ==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", @@ -4469,9 +4469,9 @@ } }, "node_modules/mongodb": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.0.tgz", - "integrity": "sha512-g+GCMHN1CoRUA+wb1Agv0TI4YTSiWr42B5ulkiAfLLHitGK1R+PkSAf3Lr5rPZwi/3F04LiaZEW0Kxro9Fi2TA==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.1.tgz", + "integrity": "sha512-NBGA8AfJxGPeB12F73xXwozt8ZpeIPmCUeWRwl9xejozTXFes/3zaep9zhzs1B/nKKsw4P3I4iPfXl3K7s6g+Q==", "dependencies": { "bson": "^5.5.0", "mongodb-connection-string-url": "^2.6.0", @@ -4518,13 +4518,13 @@ } }, "node_modules/mongoose": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.6.3.tgz", - "integrity": "sha512-moYP2qWCOdWRDeBxqB/zYwQmQnTBsF5DoolX5uPyI218BkiA1ujGY27P0NTd4oWIX+LLkZPw0LDzlc/7oh1plg==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.6.8.tgz", + "integrity": "sha512-q9zAySH+UtOK5yonWyNcLfq3PxrY6s4gdta4qNGKNOE2yTVoY9FP4hQtvWYnv4rkdk7T8QmQMC7bbhJjDxIunw==", "dependencies": { "bson": "^5.5.0", "kareem": "2.5.1", - "mongodb": "5.9.0", + "mongodb": "5.9.1", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", diff --git a/package.json b/package.json index a5b7b552..5b34f1b7 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "@emotion/styled": "^11.11.0", "@heroicons/react": "^2.1.1", "eslint-plugin-prettier": "^5.1.3", + "mongoose": "^7.6.8", "framer-motion": "^11.0.3", - "mongoose": "^7.6.3", "next": "14.0.0", "react": "^18", "react-dom": "^18", diff --git a/src/database/userSchema.ts b/src/database/userSchema.ts index 166f887c..ff419530 100644 --- a/src/database/userSchema.ts +++ b/src/database/userSchema.ts @@ -1,9 +1,42 @@ +/* +Things to include in the schema + + user role : user or admin : String + + events user went to : id attached to the event : List + + volunteer events users went to : id's of the volunteer event : List + + age : Integer + + gender: String + + Acceptance Criteria + Exactly as above +*/ + import mongoose, { Schema } from "mongoose"; -//! Example user schema. Not guaranteed to work +type User = { + email: string; + firstName: string; + lastName: string; + age: number; + gender: number; + role: ["user", "admin"]; + digitalWaiver: Schema.Types.ObjectId | null; + eventsAttended: [Schema.Types.ObjectId]; +}; + const UserSchema = new Schema({ - email: { type: String, required: true, unique: true }, - password: { type: String, required: true }, + email: { type: String, required: true, unique: true }, + firstName: { type: String, required: true }, + lastName: { type: String, required: true }, + age: { type: Number, required: true }, + gender: { type: String, required: true }, + role: { type: String, enum: ["user", "admin"], required: true }, + digitalWaiver: { type: Schema.Types.ObjectId, required: false }, + eventsAttended: [{ type: Schema.Types.ObjectId, ref: "Event" }], }); export default mongoose.models.User || mongoose.model("User", UserSchema);