]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/video/tag.ts
Formated -> Formatted
[github/Chocobozzz/PeerTube.git] / server / models / video / tag.ts
index 3c657d7517961d71a0aec962c96f4e96668385b8..0c0757fc809265152633e6e31da95aa3513e1bda 100644 (file)
@@ -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<string, Error>(tags, function (tag, callbackEach) {
-    const query: any = {
+findOrCreateTags = function (tags: string[], transaction: Sequelize.Transaction) {
+  const tasks: Promise<TagInstance>[] = []
+  tags.forEach(tag => {
+    const query: Sequelize.FindOrInitializeOptions<TagAttributes> = {
       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)
 }