diff --git a/server/models/account/account.ts b/server/models/account/account.ts index d8f305c376814fc306a4314256274684a09dec36..54ec7cfccaf31c2d98128d9430d6bd387764a499 100644 --- a/server/models/account/account.ts +++ b/server/models/account/account.ts @@ -197,7 +197,7 @@ export class AccountModel extends Model<AccountModel> { 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 65392190781aae67982c2d165919354c71c01fab..292a5d1501f99048a429c9e701bed33a809f238c 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts @@ -125,7 +125,7 @@ export class UserModel extends Model<UserModel> { 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 a32f5f4981fcb3f4aa6830be1065504a4a20cfa0..8260904a156ceeb9857f7d9aa40df8a523be1c0c 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts @@ -215,7 +215,7 @@ export class ActorFollowModel extends Model<ActorFollowModel> { distinct: true, offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), include: [ { model: ActorModel, @@ -248,7 +248,7 @@ export class ActorFollowModel extends Model<ActorFollowModel> { 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 1606453e0e45212e04cf9591dc119415ea0f1816..59ce83c16e09a79b3fbeac8a97a2b016b0e6e7a5 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 cc7078ae7966541ecea1c3bb79a542af19fc178c..65b734442564c667940dd8686b39ad4dd5860c1e 100644 --- a/server/models/video/video-abuse.ts +++ b/server/models/video/video-abuse.ts @@ -64,7 +64,7 @@ export class VideoAbuseModel extends Model<VideoAbuseModel> { 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 3adcec149f402a1956f952e51b8bdbd3a9e588ca..26167174abe8ff6234045ae0ab14897f6e64e234 100644 --- a/server/models/video/video-blacklist.ts +++ b/server/models/video/video-blacklist.ts @@ -36,7 +36,7 @@ export class VideoBlacklistModel extends Model<VideoBlacklistModel> { 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 289775a0f93312d42e3149bf1c965983ebad04cb..40f3be7fe562ff8826ab5411fb7ec233c8938700 100644 --- a/server/models/video/video-channel.ts +++ b/server/models/video/video-channel.ts @@ -151,7 +151,7 @@ export class VideoChannelModel extends Model<VideoChannelModel> { const query = { offset: start, limit: count, - order: [ getSort(sort) ] + order: getSort(sort) } return VideoChannelModel @@ -164,7 +164,7 @@ export class VideoChannelModel extends Model<VideoChannelModel> { 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 ab0f05d6e50b3af1875fb755d841c2c33529d558..47e3211a3f35304f87a09d04e000d9a7fb79a0e5 100644 --- a/server/models/video/video-comment.ts +++ b/server/models/video/video-comment.ts @@ -268,7 +268,7 @@ export class VideoCommentModel extends Model<VideoCommentModel> { 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 aa1878caac311566ae88dedbc5cf7bba4ae02349..59a39b1a9a2825270d2d5ca4a91d757bcbebf129 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -493,7 +493,7 @@ export class VideoModel extends Model<VideoModel> { 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<VideoModel> { const query = { offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), include: [ { model: VideoChannelModel, @@ -637,7 +637,7 @@ export class VideoModel extends Model<VideoModel> { 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<VideoModel> { const query: IFindOptions<VideoModel> = { offset: start, limit: count, - order: [ getSort(sort) ], + order: getSort(sort), where: { name: { [Sequelize.Op.iLike]: '%' + value + '%'