X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Ftag.ts;h=0c0757fc809265152633e6e31da95aa3513e1bda;hb=0aef76c479bc7fc758e70e1cd478ade46761b51b;hp=3c657d7517961d71a0aec962c96f4e96668385b8;hpb=74889a71fe687dda74f2a687653122327807af36;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/tag.ts b/server/models/video/tag.ts index 3c657d751..0c0757fc8 100644 --- a/server/models/video/tag.ts +++ b/server/models/video/tag.ts @@ -1,9 +1,8 @@ -import { each } from 'async' import * as Sequelize from 'sequelize' +import * as Promise from 'bluebird' import { addMethodsToModel } from '../utils' import { - TagClass, TagInstance, TagAttributes, @@ -48,15 +47,14 @@ function associate (models) { Tag.belongsToMany(models.Video, { foreignKey: 'tagId', through: models.VideoTag, - onDelete: 'cascade' + onDelete: 'CASCADE' }) } -findOrCreateTags = function (tags: string[], transaction: Sequelize.Transaction, callback: TagMethods.FindOrCreateTagsCallback) { - const tagInstances = [] - - each(tags, function (tag, callbackEach) { - const query: any = { +findOrCreateTags = function (tags: string[], transaction: Sequelize.Transaction) { + const tasks: Promise[] = [] + tags.forEach(tag => { + const query: Sequelize.FindOrInitializeOptions = { where: { name: tag }, @@ -67,15 +65,9 @@ findOrCreateTags = function (tags: string[], transaction: Sequelize.Transaction, if (transaction) query.transaction = transaction - Tag.findOrCreate(query).asCallback(function (err, res) { - if (err) return callbackEach(err) - - // res = [ tag, isCreated ] - const tag = res[0] - tagInstances.push(tag) - return callbackEach() - }) - }, function (err) { - return callback(err, tagInstances) + const promise = Tag.findOrCreate(query).then(([ tagInstance ]) => tagInstance) + tasks.push(promise) }) + + return Promise.all(tasks) }