- const videoInfosToUpdate = req.body
-
- waterfall([
-
- startSerializableTransaction,
-
- function findOrCreateTags (t, callback) {
- if (videoInfosToUpdate.tags) {
- db.Tag.findOrCreateTags(videoInfosToUpdate.tags, t, function (err, tagInstances) {
- return callback(err, t, tagInstances)
- })
- } else {
- return callback(null, t, null)
- }
- },
-
- function updateVideoIntoDB (t, tagInstances, callback) {
- const options = {
- transaction: t
- }
-
- if (videoInfosToUpdate.name !== undefined) videoInstance.set('name', videoInfosToUpdate.name)
- if (videoInfosToUpdate.category !== undefined) videoInstance.set('category', videoInfosToUpdate.category)
- if (videoInfosToUpdate.licence !== undefined) videoInstance.set('licence', videoInfosToUpdate.licence)
- if (videoInfosToUpdate.language !== undefined) videoInstance.set('language', videoInfosToUpdate.language)
- if (videoInfosToUpdate.nsfw !== undefined) videoInstance.set('nsfw', videoInfosToUpdate.nsfw)
- if (videoInfosToUpdate.description !== undefined) videoInstance.set('description', videoInfosToUpdate.description)
-
- videoInstance.save(options).asCallback(function (err) {
- return callback(err, t, tagInstances)
- })
- },
-
- function associateTagsToVideo (t, tagInstances, callback) {
- if (tagInstances) {
- const options = { transaction: t }
-
- videoInstance.setTags(tagInstances, options).asCallback(function (err) {
- videoInstance.Tags = tagInstances
+ const videoInfoToUpdate: VideoUpdate = req.body
+
+ return db.sequelize.transaction(t => {
+ let tagsPromise: Promise<TagInstance[]>
+ if (!videoInfoToUpdate.tags) {
+ tagsPromise = Promise.resolve(null)
+ } else {
+ tagsPromise = db.Tag.findOrCreateTags(videoInfoToUpdate.tags, t)
+ }