minor: logging, update, cleaning

This commit is contained in:
Kaushik Narayan R 2024-08-02 21:30:37 +05:30
parent aba341d7a1
commit 4035e4f070
4 changed files with 709 additions and 315 deletions

View File

@ -92,7 +92,8 @@ const updateUser = async (req, res) => {
toRemovePls = []; toRemovePls = [];
} }
let toRemovePlIDs = toRemovePls.map(pl => pl.playlistID); let toRemovePlIDs = toRemovePls.map(pl => pl.playlistID);
let removedLinks = 0;
let removedLinks = 0, cleanedUser = 0, updatedUser = [];
if (toRemovePls.length) { if (toRemovePls.length) {
// clean up any links dependent on the playlists // clean up any links dependent on the playlists
@ -111,7 +112,7 @@ const updateUser = async (req, res) => {
}) })
// only then remove // only then remove
const cleanedUser = await Playlists.destroy({ cleanedUser = await Playlists.destroy({
where: { playlistID: toRemovePlIDs } where: { playlistID: toRemovePlIDs }
}); });
if (cleanedUser !== toRemovePls.length) { if (cleanedUser !== toRemovePls.length) {
@ -121,7 +122,7 @@ const updateUser = async (req, res) => {
} }
if (toAddPls.length) { if (toAddPls.length) {
const updatedUser = await Playlists.bulkCreate( updatedUser = await Playlists.bulkCreate(
toAddPls.map(pl => { return { ...pl, userID: uID } }), toAddPls.map(pl => { return { ...pl, userID: uID } }),
{ validate: true } { validate: true }
); );
@ -131,6 +132,7 @@ const updateUser = async (req, res) => {
} }
} }
logger.info("Updated user data", { delLinks: removedLinks, delPls: cleanedUser, addPls: updatedUser.length });
return res.status(200).send({ removedLinks }); return res.status(200).send({ removedLinks });
} catch (error) { } catch (error) {
logger.error('updateUser', { error }); logger.error('updateUser', { error });
@ -163,6 +165,7 @@ const fetchUser = async (req, res) => {
}, },
}); });
logger.info("Fetched user data", { pls: currentPlaylists.length, links: currentLinks.length });
return res.status(200).send({ return res.status(200).send({
playlists: currentPlaylists, playlists: currentPlaylists,
links: currentLinks links: currentLinks
@ -245,6 +248,7 @@ const createLink = async (req, res) => {
return res.sendStatus(500); return res.sendStatus(500);
} }
logger.info("Created link");
return res.sendStatus(201); return res.sendStatus(201);
} catch (error) { } catch (error) {
logger.error('createLink', { error }); logger.error('createLink', { error });
@ -303,6 +307,7 @@ const removeLink = async (req, res) => {
return res.sendStatus(500); return res.sendStatus(500);
} }
logger.info("Deleted link");
return res.sendStatus(200); return res.sendStatus(200);
} catch (error) { } catch (error) {
logger.error('removeLink', { error }); logger.error('removeLink', { error });
@ -501,6 +506,8 @@ const populateMissingInLink = async (req, res) => {
filter(track => !fromTrackURIs.includes(track.uri)). // only ones missing from the 'from' playlist filter(track => !fromTrackURIs.includes(track.uri)). // only ones missing from the 'from' playlist
map(track => track.uri); map(track => track.uri);
const logNum = toTrackURIs.length;
// add in batches of 100 // add in batches of 100
while (toTrackURIs.length) { while (toTrackURIs.length) {
const nextBatch = toTrackURIs.splice(0, 100); const nextBatch = toTrackURIs.splice(0, 100);
@ -515,6 +522,7 @@ const populateMissingInLink = async (req, res) => {
return res.sendStatus(addResponse.status); return res.sendStatus(addResponse.status);
} }
logger.info(`Backfilled ${logNum} tracks`);
return res.sendStatus(200); return res.sendStatus(200);
} catch (error) { } catch (error) {
logger.error('populateMissingInLink', { error }); logger.error('populateMissingInLink', { error });
@ -717,6 +725,8 @@ const pruneExcessInLink = async (req, res) => {
let indexes = indexedToTrackURIs.filter(track => !fromTrackURIs.includes(track.uri)); // only ones missing from the 'from' playlist let indexes = indexedToTrackURIs.filter(track => !fromTrackURIs.includes(track.uri)); // only ones missing from the 'from' playlist
indexes = indexes.map(track => track.position); // get track positions indexes = indexes.map(track => track.position); // get track positions
const logNum = indexes.length;
// remove in batches of 100 (from reverse, to preserve positions) // remove in batches of 100 (from reverse, to preserve positions)
let currentSnapshot = toPlaylist.snapshot_id; let currentSnapshot = toPlaylist.snapshot_id;
while (indexes.length) { while (indexes.length) {
@ -725,7 +735,7 @@ const pruneExcessInLink = async (req, res) => {
`/playlists/${toPl.id}/tracks`, `/playlists/${toPl.id}/tracks`,
{ {
headers: req.sessHeaders, headers: req.sessHeaders,
data: { positions: nextBatch, snapshot_id: currentSnapshot }, data: { positions: nextBatch, snapshot_id: currentSnapshot }, // delete method doesn't have separate arg for body
} }
); );
if (delResponse.status >= 400 && delResponse.status < 500) if (delResponse.status >= 400 && delResponse.status < 500)
@ -735,6 +745,7 @@ const pruneExcessInLink = async (req, res) => {
currentSnapshot = delResponse.data.snapshot_id; currentSnapshot = delResponse.data.snapshot_id;
} }
logger.info(`Pruned ${logNum} tracks`);
return res.sendStatus(200); return res.sendStatus(200);
} catch (error) { } catch (error) {
logger.error('pruneExcessInLink', { error }); logger.error('pruneExcessInLink', { error });

View File

@ -71,6 +71,7 @@ const getUserPlaylists = async (req, res) => {
delete userPlaylists.next; delete userPlaylists.next;
logger.debug("Fetched user's playlists", { num: userPlaylists.total });
return res.status(200).send(userPlaylists); return res.status(200).send(userPlaylists);
} catch (error) { } catch (error) {
logger.error('getUserPlaylists', { error }); logger.error('getUserPlaylists', { error });
@ -177,6 +178,7 @@ const getPlaylistDetails = async (req, res) => {
delete playlist.next; delete playlist.next;
logger.info("Fetched playlist tracks", { num: playlist.tracks.length });
return res.status(200).send(playlist); return res.status(200).send(playlist);
} catch (error) { } catch (error) {
logger.error('getPlaylistDetails', { error }); logger.error('getPlaylistDetails', { error });

View File

@ -12,13 +12,9 @@ const db = {};
/** @type {typedefs.Sequelize} */ /** @type {typedefs.Sequelize} */
let sequelize; let sequelize;
if (config.use_env_variable) { if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config, { sequelize = new Sequelize(process.env[config.use_env_variable], config);
logging: (msg) => logger.debug(msg)
});
} else { } else {
sequelize = new Sequelize(config.database, config.username, config.password, config, { sequelize = new Sequelize(config.database, config.username, config.password, config);
logging: (msg) => logger.debug(msg)
});
} }
(async () => { (async () => {

991
package-lock.json generated

File diff suppressed because it is too large Load Diff