Skip to content
JackMZ edited this page Apr 3, 2022 · 3 revisions

General Notice:

These models are accurate as of 3/04/22. All models have an _id attribute autogenerated by MongoDB.

User Model

This contains the ID generated by Firebase used for authentication, as well as the User's details and a list of the object IDs representing the Persons and Encounters associated with this User account.


auth_id: { type: String, required: true },
first_name: { type: String, required: true },
last_name: { type: String, required: true },
persons: { type: [mongoose.Types.ObjectId] },
encounters: { type: [mongoose.Types.ObjectId] },
goals: { type: [mongoose.Types.ObjectId] },
companies: { type: [mongoose.Types.ObjectId] },

Person Model

This contains the Person's general details, how they relate to the User, the list of Encounters that include this Person and the time the last edit was made.

first_name: { type: String, required: true },
last_name: { type: String, required: false },
birthday: { type: Date, required: false },
gender: { type: String, required: false },
location: { type: String, required: false },
importance_level: { type: Number, required: false },
first_met: { type: Date, required: false },
how_we_met: { type: String, required: false },
interests: { type: [String], required: false },
labels: { type: [String], required: false },
organisation: { type: String, required: false },
social_media: { type: Map, of: String, required: false },
image: { type: Buffer, required: false },
encounters: { type: [mongoose.Types.ObjectId], required: false },
companies: { type: [mongoose.Types.ObjectId], required: false },
time_updated: { type: Date, default: new Date(Date.now()), required: true },

Encounter Model

This contains the general details about this Encounter, the time it was last updated and the Persons involved.

title: { type: String, required: true },
date: { type: Date, required: false },
time_updated: {
    type: Date, default: new Date(Date.now()), expires: 31536000, required: true,
},
location: { type: String, required: false },
latLong: { type: [Number], required: false },
description: { type: String, required: true },
persons: { type: [mongoose.Types.ObjectId], required: true },

Goal Model

This contains the goal details such as the start and end date and number of encounters to reach.

date_start: { type: Date },
date_end: { type: Date },
duration: { type: String, required: true },
encounter_goal: { type: Number, required: true },
recurring: { type: Boolean, required: true },

Company Model

Details for the company including the date founded, description and ids of people employed.


name: { type: String, required: true },
location: { type: String, required: false },
description: { type: String, required: false },
date_founded: { type: Date, required: false },
time_updated: { type: Date, default: new Date(Date.now()), required: true },
image: { type: Buffer, required: false },
persons: { type: [mongoose.Types.ObjectId], required: false },

Clone this wiki locally