clean unused places/tags #107 and unused fields
This commit is contained in:
22
server/helpers/place.js
Normal file
22
server/helpers/place.js
Normal file
@@ -0,0 +1,22 @@
|
||||
const Place = require('../api/models/place')
|
||||
const Event = require('../api/models/event')
|
||||
const Sequelize = require('sequelize')
|
||||
const log = require('../log')
|
||||
|
||||
module.exports = {
|
||||
// remove places not related to any events
|
||||
async _cleanUnused () {
|
||||
const places = await Place.findAll({
|
||||
include: [{ model: Event, as: 'events', required: false, attributes: [] }],
|
||||
group: ['place.id'],
|
||||
having: Sequelize.where(Sequelize.fn('COUNT', Sequelize.col('events.id')), '=', 0)
|
||||
})
|
||||
if (!places.length) { return }
|
||||
log.debug(`Remove ${places.length} unrelated places`)
|
||||
|
||||
const ids = places.map(p => p.id)
|
||||
await Place.destroy({
|
||||
where: { id: { [Sequelize.Op.in]: ids } }
|
||||
})
|
||||
}
|
||||
}
|
||||
22
server/helpers/tag.js
Normal file
22
server/helpers/tag.js
Normal file
@@ -0,0 +1,22 @@
|
||||
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) } }
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user