mirror of
https://github.com/20kaushik02/spotify-manager.git
synced 2025-12-06 09:44:06 +00:00
minor: logging, update, cleaning
This commit is contained in:
parent
aba341d7a1
commit
4035e4f070
@ -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 });
|
||||||
@ -713,10 +721,12 @@ const pruneExcessInLink = async (req, res) => {
|
|||||||
indexedToTrackURIs.forEach((track, index) => {
|
indexedToTrackURIs.forEach((track, index) => {
|
||||||
track.position = index;
|
track.position = index;
|
||||||
});
|
});
|
||||||
|
|
||||||
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 });
|
||||||
|
|||||||
@ -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 });
|
||||||
|
|||||||
@ -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
991
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user