aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/video/video.ts
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-12-05 17:46:33 +0100
committerChocobozzz <florian.bigard@gmail.com>2017-12-05 18:25:29 +0100
commitf3aaa9a95cc2b61f1f255472d7014d08faa66561 (patch)
tree95e70c8d0ed5b6f1c71c32a77cb7d6cf8478c9d4 /server/models/video/video.ts
parentd235f6b0d1054a2a3451dacade927caefce8f30c (diff)
downloadPeerTube-f3aaa9a95cc2b61f1f255472d7014d08faa66561.tar.gz
PeerTube-f3aaa9a95cc2b61f1f255472d7014d08faa66561.tar.zst
PeerTube-f3aaa9a95cc2b61f1f255472d7014d08faa66561.zip
Fix client search
Diffstat (limited to 'server/models/video/video.ts')
-rw-r--r--server/models/video/video.ts47
1 files changed, 19 insertions, 28 deletions
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index f3469c1de..4dce8e2fc 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -1070,7 +1070,7 @@ loadByUUIDAndPopulateAccountAndServerAndTags = function (uuid: string) {
1070 return Video.findOne(options) 1070 return Video.findOne(options)
1071} 1071}
1072 1072
1073searchAndPopulateAccountAndServerAndTags = function (value: string, field: string, start: number, count: number, sort: string) { 1073searchAndPopulateAccountAndServerAndTags = function (value: string, start: number, count: number, sort: string) {
1074 const serverInclude: Sequelize.IncludeOptions = { 1074 const serverInclude: Sequelize.IncludeOptions = {
1075 model: Video['sequelize'].models.Server, 1075 model: Video['sequelize'].models.Server,
1076 required: false 1076 required: false
@@ -1099,33 +1099,24 @@ searchAndPopulateAccountAndServerAndTags = function (value: string, field: strin
1099 order: [ getSort(sort), [ Video['sequelize'].models.Tag, 'name', 'ASC' ] ] 1099 order: [ getSort(sort), [ Video['sequelize'].models.Tag, 'name', 'ASC' ] ]
1100 } 1100 }
1101 1101
1102 if (field === 'tags') { 1102 // TODO: search on tags too
1103 const escapedValue = Video['sequelize'].escape('%' + value + '%') 1103 // const escapedValue = Video['sequelize'].escape('%' + value + '%')
1104 query.where['id'][Sequelize.Op.in] = Video['sequelize'].literal( 1104 // query.where['id'][Sequelize.Op.in] = Video['sequelize'].literal(
1105 `(SELECT "VideoTags"."videoId" 1105 // `(SELECT "VideoTags"."videoId"
1106 FROM "Tags" 1106 // FROM "Tags"
1107 INNER JOIN "VideoTags" ON "Tags"."id" = "VideoTags"."tagId" 1107 // INNER JOIN "VideoTags" ON "Tags"."id" = "VideoTags"."tagId"
1108 WHERE name ILIKE ${escapedValue} 1108 // WHERE name ILIKE ${escapedValue}
1109 )` 1109 // )`
1110 ) 1110 // )
1111 } else if (field === 'host') { 1111
1112 // FIXME: Include our server? (not stored in the database) 1112 // TODO: search on account too
1113 serverInclude.where = { 1113 // accountInclude.where = {
1114 host: { 1114 // name: {
1115 [Sequelize.Op.iLike]: '%' + value + '%' 1115 // [Sequelize.Op.iLike]: '%' + value + '%'
1116 } 1116 // }
1117 } 1117 // }
1118 serverInclude.required = true 1118 query.where['name'] = {
1119 } else if (field === 'account') { 1119 [Sequelize.Op.iLike]: '%' + value + '%'
1120 accountInclude.where = {
1121 name: {
1122 [Sequelize.Op.iLike]: '%' + value + '%'
1123 }
1124 }
1125 } else {
1126 query.where[field] = {
1127 [Sequelize.Op.iLike]: '%' + value + '%'
1128 }
1129 } 1120 }
1130 1121
1131 query.include = [ 1122 query.include = [