diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2016-12-29 18:02:03 +0100 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2016-12-29 18:02:03 +0100 |
commit | 4ff0d86208dafbdd07beb6286fd93c795db8a95f (patch) | |
tree | f24b12065afd2e9ec0c89f806961803dfcb678a8 /server/models/tag.js | |
parent | d396a937b642d616beb72dde54c0c2d37c7e8c30 (diff) | |
download | PeerTube-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.js | 40 |
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 | ||
3 | const each = require('async/each') | ||
4 | |||
3 | // --------------------------------------------------------------------------- | 5 | // --------------------------------------------------------------------------- |
4 | 6 | ||
5 | module.exports = function (sequelize, DataTypes) { | 7 | module.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 | |||
44 | function 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 | } | ||