Add activities management
This commit is contained in:
parent
9151a88ce5
commit
dcbd5015d2
3 changed files with 91 additions and 1 deletions
|
@ -15,7 +15,7 @@ ResponseGenerator.Log = require(`./response/log.JS`);
|
||||||
class ExerciseTrackerAPI {
|
class ExerciseTrackerAPI {
|
||||||
#paths = {
|
#paths = {
|
||||||
"users": ["users"],
|
"users": ["users"],
|
||||||
"exercises": ["users/:_id/exercises"],
|
"exercises": ["users/:ID/exercises"],
|
||||||
"logs": ["users/:_id/logs"]
|
"logs": ["users/:_id/logs"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,11 +31,44 @@ class ExerciseTrackerAPI {
|
||||||
this.management[DATABASE] = new DBManagement[DATABASE]();
|
this.management[DATABASE] = new DBManagement[DATABASE]();
|
||||||
});
|
});
|
||||||
this.manageUsers();
|
this.manageUsers();
|
||||||
|
this.manageActivities();
|
||||||
};
|
};
|
||||||
|
|
||||||
init_management();
|
init_management();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Manage the activities.
|
||||||
|
*/
|
||||||
|
manageActivities () {
|
||||||
|
/*
|
||||||
|
Create the new activities.
|
||||||
|
*/
|
||||||
|
const activity_creation = async (REQUEST, RESPONSE) => {
|
||||||
|
try {
|
||||||
|
if (((REQUEST.body) ? Object.keys(REQUEST.body).length : false) ? Object.keys(REQUEST.params).includes(`ID`) : false) {
|
||||||
|
let CORRESPONDING_USERS = await this.management[`Users`].search({"ID": REQUEST.params[`ID`]});
|
||||||
|
if (!CORRESPONDING_USERS.length || !CORRESPONDING_USERS) {
|
||||||
|
throw new CustomErrors.Data.Incorrect(REQUEST.body);
|
||||||
|
};
|
||||||
|
|
||||||
|
let RESULT = await this.management[`Activities`].create(Object.assign({}, REQUEST.body, {"username": CORRESPONDING_USERS[0].name}));
|
||||||
|
let FORMATTED = await (new ResponseGenerator.Activities(Object.assign({},RESULT, {"ID": REQUEST.params[`ID`]}))).format();
|
||||||
|
RESPONSE.send(FORMATTED);
|
||||||
|
} else {
|
||||||
|
throw new CustomErrors.Data.Missing(REQUEST.body);
|
||||||
|
}
|
||||||
|
} catch(ERR) {
|
||||||
|
Messaging.exception(RESPONSE, ERR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.#paths[`exercises`].forEach((PATH) => {
|
||||||
|
this[`instance`].post(`/api/${PATH}`, activity_creation)
|
||||||
|
console.log(`Activity creation is ready on ${PATH}.`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Manage the users.
|
Manage the users.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -11,8 +11,25 @@ class Activity extends Entry {
|
||||||
|
|
||||||
constructor(PROPERTIES) {
|
constructor(PROPERTIES) {
|
||||||
super(PROPERTIES);
|
super(PROPERTIES);
|
||||||
|
|
||||||
|
// Set a default date value.
|
||||||
|
this.date = this.date ? this.date : new Date(Date.now());
|
||||||
|
this.set_date(this.date);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Store the date with the corresponding ECMA value. If not, the existing date value is converted.
|
||||||
|
|
||||||
|
@param {Date} DATE the date
|
||||||
|
@return {Number} the date in ECMA
|
||||||
|
*/
|
||||||
|
set_date(DATE) {
|
||||||
|
if (DATE || this.date) {
|
||||||
|
this.date = parseInt((new Date(DATE || this.date)).getTime());
|
||||||
|
return (this.date);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Generate a schema for MongoDB.
|
Generate a schema for MongoDB.
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,42 @@
|
||||||
const DBManagement = require(`./management.JS`);
|
const DBManagement = require(`./management.JS`);
|
||||||
|
|
||||||
|
const Activity = require(`../entry/activity.JS`);
|
||||||
|
|
||||||
|
class ActivityManagement extends DBManagement {
|
||||||
|
constructor() {
|
||||||
|
super(`localhost:27017`, `Activity-Tracker`);
|
||||||
|
this.configure(`Activities`, Activity.generateTemplate());
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a user. The ID will be automatically generated.
|
||||||
|
|
||||||
|
@param {string} DETAILS the activity's details
|
||||||
|
@param {object} OPTIONS the account options
|
||||||
|
@return {object} the user data
|
||||||
|
*/
|
||||||
|
async create(DETAILS, OPTIONS, done) {
|
||||||
|
await this.state;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create an activity.
|
||||||
|
*/
|
||||||
|
const createActivity = async () => {
|
||||||
|
let CREATED = new Activity(DETAILS);
|
||||||
|
|
||||||
|
let ENTRY = new this.model(CREATED);
|
||||||
|
try {
|
||||||
|
let RESULT = await ENTRY.save();
|
||||||
|
} catch(ERROR) {
|
||||||
|
throw new CustomErrors.DBProblem(ERROR.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
let CURRENT = await createActivity();
|
||||||
|
return (CURRENT);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ActivityManagement;
|
Loading…
Add table
Add a link
Reference in a new issue