Mise à jour et ajout de controllers, routes, services et utilities

This commit is contained in:
2025-11-30 17:54:01 +01:00
parent bcf107cd1f
commit 9355431730
36 changed files with 978 additions and 842 deletions
+33
View File
@@ -0,0 +1,33 @@
class DateUtilities {
static getDateString() {
let today = new Date();
let dateNow = today.toLocaleDateString();
return `${dateNow}`;
}
static getTimeString() {
let today = new Date();
let timeNow = today.toLocaleTimeString();
return `${timeNow}`;
}
static getDateTimeString(delimiter = true) {
let today = new Date();
let dateString = `${today.toLocaleDateString()} ${today.toLocaleTimeString()}`;
if (delimiter) {
dateString = `[${dateString}]`;
}
return dateString;
}
static getDateTimeISOString(delimiter = true) {
let today = new Date();
let dateString = today.toISOString();
if (delimiter) {
dateString = `[${dateString}]`;
}
return dateString;
}
}
module.exports = DateUtilities;
+5 -4
View File
@@ -1,8 +1,9 @@
class ErrorResponse extends Error {
constructor(message, statusCode) {
super(message);
this.statusCode = statusCode;
}
constructor(errorType, statusCode, message = '') {
super(message);
this.statusCode = statusCode;
this.errorType = errorType;
}
}
module.exports = ErrorResponse;
+26 -17
View File
@@ -9,7 +9,7 @@ const appendTagList = (articleTags, article) => {
const appendFavorites = async (loggedUser, article) => {
console.log("article: ", article);
//const favorited = await article.hasUser(loggedUser ? loggedUser : null);
const favorited = await article.hasUserIdUsers(loggedUser ? loggedUser : null);
const favorited = await article.hasArticleFavoriteUsers(loggedUser ? loggedUser : null);
article.dataValues.favorited = loggedUser ? favorited : false;
//const favoritesCount = await article.countUsers();
@@ -18,23 +18,32 @@ const appendFavorites = async (loggedUser, article) => {
};
const appendFollowers = async (loggedUser, toAppend) => {
// If toAppend has an author (it's an Article)
if (toAppend?.author) {
const author = await toAppend.getAuthor();
//const following = await author.hasFollower(loggedUser ? loggedUser : null);
const following = await author.hasFollowerIdUsers(loggedUser ? loggedUser : null);
toAppend.author.dataValues.following = loggedUser ? following : false;
const followersCount = await author.countFollowers();
toAppend.author.dataValues.followersCount = followersCount;
} else {
const following = await toAppend.hasFollowerIdUsers(
loggedUser ? loggedUser : null
);
toAppend.dataValues.following = loggedUser ? following : false;
const followersCount = await toAppend.countFollowers();
toAppend.dataValues.followersCount = followersCount;
await appendArticleFollowers(loggedUser, toAppend);
} else if (toAppend?.id && toAppend?.hasUserIdUserFollower) {
// toAppend is a User model
await appendUserFollowers(loggedUser, toAppend);
}
};
module.exports = { appendTagList, appendFavorites, appendFollowers };
const appendArticleFollowers = async (loggedUser, article) => {
// Append follower info to an article's author
const author = await article.getAuthor();
const following = loggedUser ? await author.hasUserIdUserFollower(loggedUser) : false;
article.author.dataValues.following = following;
const followersCount = await author.countFollowers();
article.author.dataValues.followersCount = followersCount;
};
const appendUserFollowers = async (loggedUser, user) => {
// Append follower info to a user
const following = loggedUser ? await user.hasUserIdUserFollower(loggedUser) : false;
user.dataValues.following = following;
const followersCount = await user.countFollowers();
user.dataValues.followersCount = followersCount;
};
module.exports = { appendTagList, appendFavorites, appendFollowers, appendArticleFollowers, appendUserFollowers };
+6 -30
View File
@@ -1,31 +1,7 @@
const chalk = require('chalk');
const DateUtilities = require('./dateUtilities');
const utils = {
getDateString: () => {
let today = new Date();
let dateNow = today.toLocaleDateString();
return `${dateNow}`;
},
getTimeString: () => {
let today = new Date();
let timeNow = today.toLocaleTimeString();
return `${timeNow}`;
},
getDateTimeString: (delimiter = true) => {
let today = new Date();
let dateString = `${today.toLocaleDateString()} ${today.toLocaleTimeString()}`;
if (delimiter) {
dateString = `[${dateString}]`;
}
return dateString;
},
getDateTimeISOString: (delimiter = true) => {
let today = new Date();
let dateString = today.toISOString();
if (delimiter) {
dateString = `[${dateString}]`;
}
return dateString;
},
async fetchSkydiverIdApi(path, query) {
let limit = 50;
let offset = 0;
@@ -61,20 +37,20 @@ const utils = {
//const response = await fetch(url, options);
return fetch(url, options).then(function (response) {
if (response.status >= 200 && response.status < 400) {
console.log(`${utils.getDateTimeISOString()}`, chalk.green(`Réception des sauts via SkydiverId API`), `${response.status} ${response.statusText}`);
console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.green(`Réception des sauts via SkydiverId API`), `${response.status} ${response.statusText}`);
const data = response.json();
return data;
} else {
console.log(`${utils.getDateTimeISOString()}`, chalk.red(`Erreur ${response.status} ${response.statusText}`));
console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.red(`Erreur ${response.status} ${response.statusText}`));
return { errors: { name: response.statusText, message: `Une erreur ${response.status} '${response.statusText}' est survenue lors de la récupération des sauts via SkydiverId API`, type: 'API Error', code: response.status } };
}
})
.catch(error => {
console.log(`${utils.getDateTimeISOString()}`, chalk.red(`A fetchSkydiverIdApi error occured ${error.code} ${error.type}`));
console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.red(`A fetchSkydiverIdApi error occured ${error.code} ${error.type}`));
return { errors: { name: error.name, message: `A fetchSkydiverIdApi error occured : ${error.message}`, type: error.type, code: error.code } };
});
} catch (error) {
console.log(`${utils.getDateTimeISOString()}`, chalk.red(`fetchSkydiverIdApi error`));
console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.red(`fetchSkydiverIdApi error`));
return { errors: { name: error.name, message: error.message, type: error.type, code: error.code } };
}
}