diff options
author | Chocobozzz <me@florianbigard.com> | 2020-03-05 15:04:57 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2020-03-10 14:03:58 +0100 |
commit | 5f3e2425f1c64d93860a0c3341de9b361b3c1f1f (patch) | |
tree | a95a64e865ac047b403a6c40ff4161ac0c07ba7c /server/models/utils.ts | |
parent | f8cce49c3f36e03edd93ce141b93c49c7d6bfe58 (diff) | |
download | PeerTube-5f3e2425f1c64d93860a0c3341de9b361b3c1f1f.tar.gz PeerTube-5f3e2425f1c64d93860a0c3341de9b361b3c1f1f.tar.zst PeerTube-5f3e2425f1c64d93860a0c3341de9b361b3c1f1f.zip |
Rewrite video list in raw SQL
Diffstat (limited to 'server/models/utils.ts')
-rw-r--r-- | server/models/utils.ts | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/server/models/utils.ts b/server/models/utils.ts index f7afb8d4b..674ddcbe4 100644 --- a/server/models/utils.ts +++ b/server/models/utils.ts | |||
@@ -156,8 +156,11 @@ function parseAggregateResult (result: any) { | |||
156 | } | 156 | } |
157 | 157 | ||
158 | const createSafeIn = (model: typeof Model, stringArr: (string | number)[]) => { | 158 | const createSafeIn = (model: typeof Model, stringArr: (string | number)[]) => { |
159 | return stringArr.map(t => model.sequelize.escape('' + t)) | 159 | return stringArr.map(t => { |
160 | .join(', ') | 160 | return t === null |
161 | ? null | ||
162 | : model.sequelize.escape('' + t) | ||
163 | }).join(', ') | ||
161 | } | 164 | } |
162 | 165 | ||
163 | function buildLocalAccountIdsIn () { | 166 | function buildLocalAccountIdsIn () { |
@@ -172,6 +175,21 @@ function buildLocalActorIdsIn () { | |||
172 | ) | 175 | ) |
173 | } | 176 | } |
174 | 177 | ||
178 | function buildDirectionAndField (value: string) { | ||
179 | let field: string | ||
180 | let direction: 'ASC' | 'DESC' | ||
181 | |||
182 | if (value.substring(0, 1) === '-') { | ||
183 | direction = 'DESC' | ||
184 | field = value.substring(1) | ||
185 | } else { | ||
186 | direction = 'ASC' | ||
187 | field = value | ||
188 | } | ||
189 | |||
190 | return { direction, field } | ||
191 | } | ||
192 | |||
175 | // --------------------------------------------------------------------------- | 193 | // --------------------------------------------------------------------------- |
176 | 194 | ||
177 | export { | 195 | export { |
@@ -191,6 +209,7 @@ export { | |||
191 | isOutdated, | 209 | isOutdated, |
192 | parseAggregateResult, | 210 | parseAggregateResult, |
193 | getFollowsSort, | 211 | getFollowsSort, |
212 | buildDirectionAndField, | ||
194 | createSafeIn | 213 | createSafeIn |
195 | } | 214 | } |
196 | 215 | ||
@@ -203,18 +222,3 @@ function searchTrigramNormalizeValue (value: string) { | |||
203 | function searchTrigramNormalizeCol (col: string) { | 222 | function searchTrigramNormalizeCol (col: string) { |
204 | return Sequelize.fn('lower', Sequelize.fn('immutable_unaccent', Sequelize.col(col))) | 223 | return Sequelize.fn('lower', Sequelize.fn('immutable_unaccent', Sequelize.col(col))) |
205 | } | 224 | } |
206 | |||
207 | function buildDirectionAndField (value: string) { | ||
208 | let field: string | ||
209 | let direction: 'ASC' | 'DESC' | ||
210 | |||
211 | if (value.substring(0, 1) === '-') { | ||
212 | direction = 'DESC' | ||
213 | field = value.substring(1) | ||
214 | } else { | ||
215 | direction = 'ASC' | ||
216 | field = value | ||
217 | } | ||
218 | |||
219 | return { direction, field } | ||
220 | } | ||