diff --git a/.gitignore b/.gitignore index f28397541..e0a0572b7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ docker-compose.yml .idea/* .vscode *.heapsnapshot +/src/util/translations.json nominatimData/* !nominatimData/.gitkeep diff --git a/src/controllers/controller.js b/src/controllers/controller.js index 6df472859..3f3e327f8 100644 --- a/src/controllers/controller.js +++ b/src/controllers/controller.js @@ -482,10 +482,14 @@ class Controller extends EventEmitter { } } - async insertQuery(table, values) { + async insertQuery(table, values, returning = undefined) { if (Array.isArray(values) && !values.length) return try { - return await this.db.insert(values).into(table) + const statement = this.db.insert(values).into(table) + if (returning) { + statement.returning(returning) + } + return await statement } catch (err) { throw { source: 'insertQuery', error: err } } diff --git a/src/controllers/query.js b/src/controllers/query.js index 3edcf9cdd..9d0f9d953 100644 --- a/src/controllers/query.js +++ b/src/controllers/query.js @@ -150,10 +150,14 @@ class Query { } } - async insertQuery(table, values) { + async insertQuery(table, values, returning = undefined) { if (Array.isArray(values) && !values.length) return try { - return await this.db.insert(values).into(table) + const statement = this.db.insert(values).into(table) + if (returning) { + statement.returning(returning) + } + return await statement } catch (err) { throw { source: 'insertQuery', error: err } } diff --git a/src/routes/apiTrackingEgg.js b/src/routes/apiTrackingEgg.js index 1e88c196d..d7e6c6fab 100644 --- a/src/routes/apiTrackingEgg.js +++ b/src/routes/apiTrackingEgg.js @@ -152,6 +152,8 @@ module.exports = async (fastify, options) => { } } + if (req.query.suppressMessage) message = '' + await fastify.query.deleteWhereInQuery( 'egg', { @@ -162,7 +164,7 @@ module.exports = async (fastify, options) => { 'uid', ) - await fastify.query.insertQuery('egg', [...insert, ...updates]) + const newUids = await fastify.query.insertQuery('egg', [...insert, ...updates], 'uid') // Send message to user @@ -180,14 +182,20 @@ module.exports = async (fastify, options) => { language, }] - data.forEach((job) => { - if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) - if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) - }) + if (message) { + data.forEach((job) => { + if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) + if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) + }) + } return { status: 'ok', message, + newUids, + alreadyPresent: alreadyPresent.length, + updates: updates.length, + insert: insert.length, } } catch (err) { fastify.logger.error(`API: ${req.ip} ${req.routeOptions.method} ${req.routeOptions.url}`, err) diff --git a/src/routes/apiTrackingGym.js b/src/routes/apiTrackingGym.js index 97694c8b1..bc33b9f6d 100644 --- a/src/routes/apiTrackingGym.js +++ b/src/routes/apiTrackingGym.js @@ -150,6 +150,8 @@ module.exports = async (fastify, options) => { } } + if (req.query.suppressMessage) message = '' + await fastify.query.deleteWhereInQuery( 'gym', { @@ -160,7 +162,7 @@ module.exports = async (fastify, options) => { 'uid', ) - await fastify.query.insertQuery('gym', [...insert, ...updates]) + const newUids = await fastify.query.insertQuery('gym', [...insert, ...updates], 'uid') // Send message to user @@ -178,14 +180,20 @@ module.exports = async (fastify, options) => { language, }] - data.forEach((job) => { - if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) - if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) - }) + if (message) { + data.forEach((job) => { + if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) + if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) + }) + } return { status: 'ok', message, + newUids, + alreadyPresent: alreadyPresent.length, + updates: updates.length, + insert: insert.length, } } catch (err) { fastify.logger.error(`API: ${req.ip} ${req.routeOptions.method} ${req.routeOptions.url}`, err) diff --git a/src/routes/apiTrackingInvasion.js b/src/routes/apiTrackingInvasion.js index 51e1214f1..fa78d6f32 100644 --- a/src/routes/apiTrackingInvasion.js +++ b/src/routes/apiTrackingInvasion.js @@ -143,6 +143,8 @@ module.exports = async (fastify, options) => { } } + if (req.query.suppressMessage) message = '' + await fastify.query.deleteWhereInQuery( 'invasion', { @@ -153,7 +155,7 @@ module.exports = async (fastify, options) => { 'uid', ) - await fastify.query.insertQuery('invasion', [...insert, ...updates]) + const newUids = await fastify.query.insertQuery('invasion', [...insert, ...updates], 'uid') // Send message to user @@ -171,14 +173,20 @@ module.exports = async (fastify, options) => { language, }] - data.forEach((job) => { - if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) - if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) - }) + if (message) { + data.forEach((job) => { + if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) + if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) + }) + } return { status: 'ok', message, + newUids, + alreadyPresent: alreadyPresent.length, + updates: updates.length, + insert: insert.length, } } catch (err) { fastify.logger.error(`API: ${req.ip} ${req.routeOptions.method} ${req.routeOptions.url}`, err) diff --git a/src/routes/apiTrackingLure.js b/src/routes/apiTrackingLure.js index d185b8292..138216681 100644 --- a/src/routes/apiTrackingLure.js +++ b/src/routes/apiTrackingLure.js @@ -143,6 +143,8 @@ module.exports = async (fastify, options) => { } } + if (req.query.suppressMessage) message = '' + await fastify.query.deleteWhereInQuery( 'lures', { @@ -153,7 +155,7 @@ module.exports = async (fastify, options) => { 'uid', ) - await fastify.query.insertQuery('lures', [...insert, ...updates]) + const newUids = await fastify.query.insertQuery('lures', [...insert, ...updates], 'uid') // Send message to user @@ -171,14 +173,20 @@ module.exports = async (fastify, options) => { language, }] - data.forEach((job) => { - if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) - if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) - }) + if (message) { + data.forEach((job) => { + if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) + if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) + }) + } return { status: 'ok', message, + newUids, + alreadyPresent: alreadyPresent.length, + updates: updates.length, + insert: insert.length, } } catch (err) { fastify.logger.error(`API: ${req.ip} ${req.routeOptions.method} ${req.routeOptions.url}`, err) diff --git a/src/routes/apiTrackingMonster.js b/src/routes/apiTrackingMonster.js index aa694fd73..3dbdd8b9b 100644 --- a/src/routes/apiTrackingMonster.js +++ b/src/routes/apiTrackingMonster.js @@ -208,6 +208,8 @@ module.exports = async (fastify, options) => { } } + if (req.query.suppressMessage) message = '' + // await fastify.query.deleteWhereInQuery('monsters', { // id, // profile_no: currentProfileNo, @@ -216,11 +218,15 @@ module.exports = async (fastify, options) => { // 'uid') // await fastify.query.insertQuery('monsters', [...insert, ...updates]) + let newUids = [] + if (insert.length) { - await fastify.query.insertQuery('monsters', insert) + const result = await fastify.query.insertQuery('monsters', insert, 'uid') + if (result) newUids = [...newUids, ...result] } for (const row of updates) { await fastify.query.updateQuery('monsters', row, { uid: row.uid }) + newUids.push(row.uid) } // Send message to user @@ -239,16 +245,22 @@ module.exports = async (fastify, options) => { language, }] - data.forEach((job) => { - if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) - if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) - }) + if (message) { + data.forEach((job) => { + if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) + if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) + }) + } if (fastify.triggerReloadAlerts) fastify.triggerReloadAlerts() return { status: 'ok', message, + newUids, + alreadyPresent: alreadyPresent.length, + updates: updates.length, + insert: insert.length, } } catch (err) { fastify.logger.error(`API: ${req.ip} ${req.routeOptions.method} ${req.routeOptions.url}`, err) diff --git a/src/routes/apiTrackingNest.js b/src/routes/apiTrackingNest.js index f88c0ec20..bf9657b12 100644 --- a/src/routes/apiTrackingNest.js +++ b/src/routes/apiTrackingNest.js @@ -139,6 +139,8 @@ module.exports = async (fastify, options) => { } } + if (req.query.suppressMessage) message = '' + await fastify.query.deleteWhereInQuery( 'nests', { @@ -149,7 +151,7 @@ module.exports = async (fastify, options) => { 'uid', ) - await fastify.query.insertQuery('nests', [...insert, ...updates]) + const newUids = await fastify.query.insertQuery('nests', [...insert, ...updates], 'uid') // Send message to user @@ -167,14 +169,20 @@ module.exports = async (fastify, options) => { language, }] - data.forEach((job) => { - if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) - if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) - }) + if (message) { + data.forEach((job) => { + if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) + if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) + }) + } return { status: 'ok', message, + newUids, + alreadyPresent: alreadyPresent.length, + updates: updates.length, + insert: insert.length, } } catch (err) { fastify.logger.error(`API: ${req.ip} ${req.routeOptions.method} ${req.routeOptions.url}`, err) diff --git a/src/routes/apiTrackingQuest.js b/src/routes/apiTrackingQuest.js index 95be98a9f..81542c648 100644 --- a/src/routes/apiTrackingQuest.js +++ b/src/routes/apiTrackingQuest.js @@ -146,6 +146,8 @@ module.exports = async (fastify, options) => { } } + if (req.query.suppressMessage) message = '' + await fastify.query.deleteWhereInQuery( 'quest', { @@ -156,7 +158,7 @@ module.exports = async (fastify, options) => { 'uid', ) - await fastify.query.insertQuery('quest', [...insert, ...updates]) + const newUids = await fastify.query.insertQuery('quest', [...insert, ...updates], 'uid') // Send message to user @@ -174,14 +176,20 @@ module.exports = async (fastify, options) => { language, }] - data.forEach((job) => { - if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) - if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) - }) + if (message) { + data.forEach((job) => { + if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) + if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) + }) + } return { status: 'ok', message, + newUids, + alreadyPresent: alreadyPresent.length, + updates: updates.length, + insert: insert.length, } } catch (err) { fastify.logger.error(`API: ${req.ip} ${req.routeOptions.method} ${req.routeOptions.url}`, err) diff --git a/src/routes/apiTrackingRaid.js b/src/routes/apiTrackingRaid.js index 0fd6a57c6..999b533f3 100644 --- a/src/routes/apiTrackingRaid.js +++ b/src/routes/apiTrackingRaid.js @@ -158,6 +158,8 @@ module.exports = async (fastify, options) => { } } + if (req.query.suppressMessage) message = '' + await fastify.query.deleteWhereInQuery( 'raid', { @@ -168,7 +170,7 @@ module.exports = async (fastify, options) => { 'uid', ) - await fastify.query.insertQuery('raid', [...insert, ...updates]) + const newUids = await fastify.query.insertQuery('raid', [...insert, ...updates], 'uid') // Send message to user @@ -186,14 +188,20 @@ module.exports = async (fastify, options) => { language, }] - data.forEach((job) => { - if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) - if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) - }) + if (message) { + data.forEach((job) => { + if (['discord:user', 'discord:channel', 'webhook'].includes(job.type)) fastify.discordQueue.push(job) + if (['telegram:user', 'telegram:channel'].includes(job.type)) fastify.telegramQueue.push(job) + }) + } return { status: 'ok', message, + newUids, + alreadyPresent: alreadyPresent.length, + updates: updates.length, + insert: insert.length, } } catch (err) { fastify.logger.error(`API: ${req.ip} ${req.routeOptions.method} ${req.routeOptions.url}`, err)