feat: Create activity log

This commit is contained in:
buzzcode2007 2025-04-11 01:14:31 +00:00
parent 9443810678
commit 8152c172a9
3 changed files with 78 additions and 11 deletions

View file

@ -16,7 +16,7 @@ class ExerciseTrackerAPI {
#paths = {
"users": ["users"],
"exercises": ["users/:ID/exercises"],
"logs": ["users/:_id/logs"]
"logs": ["users/:ID/logs"]
}
constructor(INSTANCE) {
@ -53,7 +53,9 @@ class ExerciseTrackerAPI {
};
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();
let FORMATTED = new ResponseGenerator.Activities(Object.assign({},RESULT, {"ID": REQUEST.params[`ID`]}));
FORMATTED[`data`][`date`] = FORMATTED.convert_date();
FORMATTED = FORMATTED.format();
RESPONSE.send(FORMATTED);
} else {
throw new CustomErrors.Data.Missing(REQUEST.body);
@ -63,10 +65,53 @@ class ExerciseTrackerAPI {
}
}
/*
Display a log of activities.
*/
const activity_log = async (REQUEST, RESPONSE) => {
const find_users = async () => {
let USERS = await this.management[`Users`].search({"ID": REQUEST.params[`ID`]});
if (!USERS.length || !USERS) {
throw new CustomErrors.Data.Incorrect(REQUEST.params);
};
return (USERS)
}
const find_activities = async (USERNAME, CRITERIA) => {
let FILTER = {};
if (CRITERIA[`from`] || CRITERIA[`to`]) {
[`from`, `to`].forEach((KEY) => {
if (CRITERIA[KEY]) {CRITERIA[KEY] = (new Date(CRITERIA[KEY])).getTime();};
})
FILTER[`date`] = {};
if (CRITERIA[`from`]) {FILTER[`date`][`$gte`] = CRITERIA[`from`]};
if (CRITERIA[`to`]) {FILTER[`date`][`$lte`] = CRITERIA[`to`]};
}
let RESULT = await this.management[`Activities`].search_User(USERNAME, FILTER, (CRITERIA[`limit`] ? CRITERIA[`limit`] : 0));
return (RESULT);
}
try {
let USERS = await find_users();
let LOG = Object.assign({}, await find_activities(USERS[0].name, (((REQUEST.query) ? Object.keys(REQUEST.query).length : false) || ((REQUEST.body) ? Object.keys(REQUEST.body).length : false)) ? (((REQUEST.body) ? Object.keys(REQUEST.body).length : false) ? REQUEST.body : REQUEST.query) : {}), {"ID": REQUEST.params[`ID`]});
let FORMATTED = (new ResponseGenerator.Log(LOG)).format();
RESPONSE.send(FORMATTED);
} 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}.`);
});
this.#paths[`logs`].forEach((PATH) => {
this[`instance`].get(`/api/${PATH}`, activity_log);
console.log(`Activity log generation is ready on ${PATH}.`);
});
}
/*