Add database objects
This commit is contained in:
parent
f966e0564e
commit
3618cbbddb
3 changed files with 79 additions and 0 deletions
14
scripts/database/entry/activity.JS
Normal file
14
scripts/database/entry/activity.JS
Normal file
|
@ -0,0 +1,14 @@
|
|||
const Entry = require(`./object.JS`);
|
||||
|
||||
class Activity extends Entry {
|
||||
username;
|
||||
description;
|
||||
duration;
|
||||
date;
|
||||
|
||||
constructor(PROPERTIES) {
|
||||
super(PROPERTIES);
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = Activity;
|
10
scripts/database/entry/object.JS
Normal file
10
scripts/database/entry/object.JS
Normal file
|
@ -0,0 +1,10 @@
|
|||
/* An object to represent an entry in the database. */
|
||||
class Entry {
|
||||
constructor(PROPERTIES) {
|
||||
(PROPERTIES) ? Object.entries(PROPERTIES).forEach(([property, value]) => {
|
||||
this[property] = value;
|
||||
}) : false;
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = Entry;
|
55
scripts/database/entry/user.JS
Normal file
55
scripts/database/entry/user.JS
Normal file
|
@ -0,0 +1,55 @@
|
|||
const Entry = require(`./object`);
|
||||
const Hash = require(`../../utilities/hash`);
|
||||
|
||||
class User extends Entry {
|
||||
// Default properties
|
||||
name;
|
||||
ID;
|
||||
activated = false;
|
||||
passcode;
|
||||
#login = false;
|
||||
|
||||
constructor(PROPERTIES) {
|
||||
super(PROPERTIES);
|
||||
this.authenticate();
|
||||
};
|
||||
|
||||
/* Authenticate the user
|
||||
|
||||
@param {STRING} INPUT the passcode passed
|
||||
@return {BOOLEAN} the user authentication state
|
||||
*/
|
||||
authenticate(INPUT) {
|
||||
// Reset the login state.
|
||||
if (this.#login) {this.#login = false;};
|
||||
|
||||
if ((this.passcode) ? (INPUT && this.passcode == INPUT) : true) {
|
||||
this.#login = true;
|
||||
}
|
||||
return (this.#login);
|
||||
}
|
||||
|
||||
/*
|
||||
Generate a schema for MongoDB.
|
||||
|
||||
@return {OBJECT} the schema
|
||||
*/
|
||||
static generateTemplate() {
|
||||
let SCHEMA = {
|
||||
"name": {"type": String, "required": true, "unique": true, "dropDups": true},
|
||||
"ID": {"type": String, "required": true, "unique": true, "dropDups": true},
|
||||
"activated": {"type": Boolean},
|
||||
"passcode": {"type": String}
|
||||
}
|
||||
let TEST = new User();
|
||||
|
||||
// Verify that the schema is valid.
|
||||
Object.keys(SCHEMA).forEach((KEY) => {
|
||||
if (!Object.keys(TEST).includes(KEY)) {delete SCHEMA[KEY];};
|
||||
});
|
||||
|
||||
return (SCHEMA)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = User;
|
Loading…
Add table
Add a link
Reference in a new issue