diff --git a/server/models/account/account.ts b/server/models/account/account.ts index d8f305c37..54ec7cfcc 100644 --- a/server/models/account/account.ts +++ b/server/models/account/account.ts @@ -197,7 +197,7 @@ export class AccountModel extends Model { const query = { offset: start, limit: count, - order: [ getSort(sort) ] + order: getSort(sort), } return AccountModel.findAndCountAll(query) diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 653921907..292a5d150 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts @@ -125,7 +125,7 @@ export class UserModel extends Model { const query = { offset: start, limit: count, - order: [ getSort(sort) ] + order: getSort(sort), } return UserModel.findAndCountAll(query) diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts index a32f5f498..8260904a1 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts @@ -215,7 +215,7 @@ export class ActorFollowModel extends Model { distinct: true, offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), include: [ { model: ActorModel, @@ -248,7 +248,7 @@ export class ActorFollowModel extends Model { distinct: true, offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), include: [ { model: ActorModel, diff --git a/server/models/utils.ts b/server/models/utils.ts index 1606453e0..59ce83c16 100644 --- a/server/models/utils.ts +++ b/server/models/utils.ts @@ -1,5 +1,5 @@ -// Translate for example "-name" to [ 'name', 'DESC' ] -function getSort (value: string) { +// Translate for example "-name" to [ [ 'name', 'DESC' ], [ 'id', 'ASC' ] ] +function getSort (value: string, lastSort: string[] = [ 'id', 'ASC' ]) { let field: string let direction: 'ASC' | 'DESC' @@ -11,14 +11,14 @@ function getSort (value: string) { field = value } - return [ field, direction ] + return [ [ field, direction ], lastSort ] } -function getSortOnModel (model: any, value: string) { - let sort = getSort(value) +function getSortOnModel (model: any, value: string, lastSort: string[] = [ 'id', 'ASC' ]) { + let [ firstSort ] = getSort(value) - if (model) return [ model, sort[0], sort[1] ] - return sort + if (model) return [ [ model, firstSort[0], firstSort[1] ], lastSort ] + return [ firstSort, lastSort ] } function throwIfNotValid (value: any, validator: (value: any) => boolean, fieldName = 'value') { diff --git a/server/models/video/video-abuse.ts b/server/models/video/video-abuse.ts index cc7078ae7..65b734442 100644 --- a/server/models/video/video-abuse.ts +++ b/server/models/video/video-abuse.ts @@ -64,7 +64,7 @@ export class VideoAbuseModel extends Model { const query = { offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), include: [ { model: AccountModel, diff --git a/server/models/video/video-blacklist.ts b/server/models/video/video-blacklist.ts index 3adcec149..26167174a 100644 --- a/server/models/video/video-blacklist.ts +++ b/server/models/video/video-blacklist.ts @@ -36,7 +36,7 @@ export class VideoBlacklistModel extends Model { const query = { offset: start, limit: count, - order: [ getSortOnModel(sort.sortModel, sort.sortValue) ], + order: getSortOnModel(sort.sortModel, sort.sortValue), include: [ { model: VideoModel } ] } diff --git a/server/models/video/video-channel.ts b/server/models/video/video-channel.ts index 289775a0f..40f3be7fe 100644 --- a/server/models/video/video-channel.ts +++ b/server/models/video/video-channel.ts @@ -151,7 +151,7 @@ export class VideoChannelModel extends Model { const query = { offset: start, limit: count, - order: [ getSort(sort) ] + order: getSort(sort) } return VideoChannelModel @@ -164,7 +164,7 @@ export class VideoChannelModel extends Model { static listByAccount (accountId: number) { const query = { - order: [ getSort('createdAt') ], + order: getSort('createdAt'), include: [ { model: AccountModel, diff --git a/server/models/video/video-comment.ts b/server/models/video/video-comment.ts index ab0f05d6e..47e3211a3 100644 --- a/server/models/video/video-comment.ts +++ b/server/models/video/video-comment.ts @@ -268,7 +268,7 @@ export class VideoCommentModel extends Model { const query = { offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), where: { videoId, inReplyToCommentId: null diff --git a/server/models/video/video.ts b/server/models/video/video.ts index aa1878caa..59a39b1a9 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -493,7 +493,7 @@ export class VideoModel extends Model { distinct: true, offset: start, limit: count, - order: [ getSort('createdAt'), [ 'Tags', 'name', 'ASC' ] ], + order: getSort('createdAt', [ 'Tags', 'name', 'ASC' ]), where: { id: { [Sequelize.Op.in]: Sequelize.literal('(' + rawQuery + ')') @@ -607,7 +607,7 @@ export class VideoModel extends Model { const query = { offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), include: [ { model: VideoChannelModel, @@ -637,7 +637,7 @@ export class VideoModel extends Model { const query = { offset: start, limit: count, - order: [ getSort(sort) ] + order: getSort(sort), } const serverActor = await getServerActor() @@ -656,7 +656,7 @@ export class VideoModel extends Model { const query: IFindOptions = { offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), where: { name: { [Sequelize.Op.iLike]: '%' + value + '%'