'use strict'
+const each = require('async/each')
+
// ---------------------------------------------------------------------------
module.exports = function (sequelize, DataTypes) {
}
],
classMethods: {
- associate
+ associate,
+
+ findOrCreateTags
}
}
)
onDelete: 'cascade'
})
}
+
+function findOrCreateTags (tags, transaction, callback) {
+ if (!callback) {
+ callback = transaction
+ transaction = null
+ }
+
+ const self = this
+ const tagInstances = []
+
+ each(tags, function (tag, callbackEach) {
+ const query = {
+ where: {
+ name: tag
+ },
+ defaults: {
+ name: tag
+ }
+ }
+
+ if (transaction) query.transaction = transaction
+
+ self.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)
+ })
+}