aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/tag.js
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2016-12-29 18:02:03 +0100
committerChocobozzz <florian.bigard@gmail.com>2016-12-29 18:02:03 +0100
commit4ff0d86208dafbdd07beb6286fd93c795db8a95f (patch)
treef24b12065afd2e9ec0c89f806961803dfcb678a8 /server/models/tag.js
parentd396a937b642d616beb72dde54c0c2d37c7e8c30 (diff)
downloadPeerTube-4ff0d86208dafbdd07beb6286fd93c795db8a95f.tar.gz
PeerTube-4ff0d86208dafbdd07beb6286fd93c795db8a95f.tar.zst
PeerTube-4ff0d86208dafbdd07beb6286fd93c795db8a95f.zip
Server: little refractoring
Diffstat (limited to 'server/models/tag.js')
-rw-r--r--server/models/tag.js40
1 files changed, 39 insertions, 1 deletions
diff --git a/server/models/tag.js b/server/models/tag.js
index 27eecdc84..145e090c1 100644
--- a/server/models/tag.js
+++ b/server/models/tag.js
@@ -1,5 +1,7 @@
1'use strict' 1'use strict'
2 2
3const each = require('async/each')
4
3// --------------------------------------------------------------------------- 5// ---------------------------------------------------------------------------
4 6
5module.exports = function (sequelize, DataTypes) { 7module.exports = function (sequelize, DataTypes) {
@@ -19,7 +21,9 @@ module.exports = function (sequelize, DataTypes) {
19 } 21 }
20 ], 22 ],
21 classMethods: { 23 classMethods: {
22 associate 24 associate,
25
26 findOrCreateTags
23 } 27 }
24 } 28 }
25 ) 29 )
@@ -36,3 +40,37 @@ function associate (models) {
36 onDelete: 'cascade' 40 onDelete: 'cascade'
37 }) 41 })
38} 42}
43
44function findOrCreateTags (tags, transaction, callback) {
45 if (!callback) {
46 callback = transaction
47 transaction = null
48 }
49
50 const self = this
51 const tagInstances = []
52
53 each(tags, function (tag, callbackEach) {
54 const query = {
55 where: {
56 name: tag
57 },
58 defaults: {
59 name: tag
60 }
61 }
62
63 if (transaction) query.transaction = transaction
64
65 self.findOrCreate(query).asCallback(function (err, res) {
66 if (err) return callbackEach(err)
67
68 // res = [ tag, isCreated ]
69 const tag = res[0]
70 tagInstances.push(tag)
71 return callbackEach()
72 })
73 }, function (err) {
74 return callback(err, tagInstances)
75 })
76}