aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/video/video.ts
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2019-08-29 16:47:32 +0200
committerChocobozzz <me@florianbigard.com>2019-08-29 16:47:32 +0200
commit4b1f1b810a50829be8d8998cdd4d296143e34f2e (patch)
treeb0a65da75de92de4196ee1e889741d0ee787e3a6 /server/models/video/video.ts
parentaafbc63aae65a09d1de808995617bacdbb813191 (diff)
downloadPeerTube-4b1f1b810a50829be8d8998cdd4d296143e34f2e.tar.gz
PeerTube-4b1f1b810a50829be8d8998cdd4d296143e34f2e.tar.zst
PeerTube-4b1f1b810a50829be8d8998cdd4d296143e34f2e.zip
Lowercase video tags search
Diffstat (limited to 'server/models/video/video.ts')
-rw-r--r--server/models/video/video.ts10
1 files changed, 7 insertions, 3 deletions
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index 6a95f6ef7..6856dcd9f 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -468,13 +468,15 @@ export type AvailableForListIDsOptions = {
468 // FIXME: issues with sequelize count when making a join on n:m relation, so we just make a IN() 468 // FIXME: issues with sequelize count when making a join on n:m relation, so we just make a IN()
469 if (options.tagsAllOf || options.tagsOneOf) { 469 if (options.tagsAllOf || options.tagsOneOf) {
470 if (options.tagsOneOf) { 470 if (options.tagsOneOf) {
471 const tagsOneOfLower = options.tagsOneOf.map(t => t.toLowerCase())
472
471 whereAnd.push({ 473 whereAnd.push({
472 id: { 474 id: {
473 [ Op.in ]: Sequelize.literal( 475 [ Op.in ]: Sequelize.literal(
474 '(' + 476 '(' +
475 'SELECT "videoId" FROM "videoTag" ' + 477 'SELECT "videoId" FROM "videoTag" ' +
476 'INNER JOIN "tag" ON "tag"."id" = "videoTag"."tagId" ' + 478 'INNER JOIN "tag" ON "tag"."id" = "videoTag"."tagId" ' +
477 'WHERE "tag"."name" IN (' + createSafeIn(VideoModel, options.tagsOneOf) + ')' + 479 'WHERE lower("tag"."name") IN (' + createSafeIn(VideoModel, tagsOneOfLower) + ')' +
478 ')' 480 ')'
479 ) 481 )
480 } 482 }
@@ -482,14 +484,16 @@ export type AvailableForListIDsOptions = {
482 } 484 }
483 485
484 if (options.tagsAllOf) { 486 if (options.tagsAllOf) {
487 const tagsAllOfLower = options.tagsAllOf.map(t => t.toLowerCase())
488
485 whereAnd.push({ 489 whereAnd.push({
486 id: { 490 id: {
487 [ Op.in ]: Sequelize.literal( 491 [ Op.in ]: Sequelize.literal(
488 '(' + 492 '(' +
489 'SELECT "videoId" FROM "videoTag" ' + 493 'SELECT "videoId" FROM "videoTag" ' +
490 'INNER JOIN "tag" ON "tag"."id" = "videoTag"."tagId" ' + 494 'INNER JOIN "tag" ON "tag"."id" = "videoTag"."tagId" ' +
491 'WHERE "tag"."name" IN (' + createSafeIn(VideoModel, options.tagsAllOf) + ')' + 495 'WHERE lower("tag"."name") IN (' + createSafeIn(VideoModel, tagsAllOfLower) + ')' +
492 'GROUP BY "videoTag"."videoId" HAVING COUNT(*) = ' + options.tagsAllOf.length + 496 'GROUP BY "videoTag"."videoId" HAVING COUNT(*) = ' + tagsAllOfLower.length +
493 ')' 497 ')'
494 ) 498 )
495 } 499 }