mirror of
https://framagit.org/les/gancio.git
synced 2025-02-01 00:52:01 +01:00
23 lines
705 B
JavaScript
23 lines
705 B
JavaScript
|
const Tag = require('../api/models/tag')
|
||
|
const Event = require('../api/models/event')
|
||
|
const Sequelize = require('sequelize')
|
||
|
const log = require('../log')
|
||
|
|
||
|
module.exports = {
|
||
|
// remove tags not related to any events
|
||
|
async _cleanUnused () {
|
||
|
const tags = await Tag.findAll({
|
||
|
include: [{ model: Event, as: 'events', required: false, attributes: [], through: { attributes: [] } }],
|
||
|
group: ['tag.tag'],
|
||
|
having: Sequelize.where(Sequelize.fn('COUNT', Sequelize.col('events.id')), '=', 0)
|
||
|
})
|
||
|
|
||
|
if (!tags.length) { return }
|
||
|
log.info(`Remove ${tags.length} unrelated tags`)
|
||
|
|
||
|
await Tag.destroy({
|
||
|
where: { tag: { [Sequelize.Op.in]: tags.map(p => p.tag) } }
|
||
|
})
|
||
|
}
|
||
|
}
|