Model,
Scopes,
Table,
- UpdatedAt,
- Sequelize
+ UpdatedAt
} from 'sequelize-typescript'
import { VideoPlaylistPrivacy } from '../../../shared/models/videos/playlist/video-playlist-privacy.model'
-import { buildServerIdsFollowedBy, buildWhereIdOrUUID, getSort, isOutdated, throwIfNotValid, createSimilarityAttribute } from '../utils'
+import { buildServerIdsFollowedBy, buildWhereIdOrUUID, getSort, isOutdated, throwIfNotValid } from '../utils'
import {
isVideoPlaylistDescriptionValid,
isVideoPlaylistNameValid,
import { FindOptions, literal, Op, ScopeOptions, Transaction, WhereOptions } from 'sequelize'
import * as Bluebird from 'bluebird'
import {
- MVideoPlaylistAccountThumbnail, MVideoPlaylistAP,
+ MVideoPlaylistAccountThumbnail,
+ MVideoPlaylistAP,
MVideoPlaylistFormattable,
MVideoPlaylistFull,
MVideoPlaylistFullSummary,
}
if (options.search) {
- const escapedSearch = VideoPlaylistModel.sequelize.escape(options.search)
- const escapedLikeSearch = VideoPlaylistModel.sequelize.escape('%' + options.search + '%')
whereAnd.push({
- id: {
- [ Op.in ]: Sequelize.literal(
- '(' +
- 'SELECT "videoPlaylist"."id" FROM "videoPlaylist" ' +
- 'WHERE ' +
- 'lower(immutable_unaccent("videoPlaylist"."name")) % lower(immutable_unaccent(' + escapedSearch + ')) OR ' +
- 'lower(immutable_unaccent("videoPlaylist"."name")) LIKE lower(immutable_unaccent(' + escapedLikeSearch + '))' +
- ')'
- )
+ name: {
+ [ Op.iLike ]: '%' + options.search + '%'
}
})
}
expect(data).to.have.lengthOf(1)
expect(data[ 0 ].displayName).to.equal('playlist 3')
}
+
+ {
+ const res = await getAccountPlaylistsList(servers[ 1 ].url, 'root', 0, 10, 'createdAt', '3')
+
+ expect(res.body.total).to.equal(1)
+
+ const data: VideoPlaylist[] = res.body.data
+ expect(data).to.have.lengthOf(1)
+ expect(data[ 0 ].displayName).to.equal('playlist 3')
+ }
+
+ {
+ const res = await getAccountPlaylistsList(servers[ 1 ].url, 'root', 0, 10, 'createdAt', '4')
+
+ expect(res.body.total).to.equal(0)
+
+ const data: VideoPlaylist[] = res.body.data
+ expect(data).to.have.lengthOf(0)
+ }
})
it('Should not list unlisted or private playlists', async function () {
})
}
-function getAccountPlaylistsList (url: string, accountName: string, start: number, count: number, sort?: string) {
+function getAccountPlaylistsList (url: string, accountName: string, start: number, count: number, sort?: string, search?: string) {
const path = '/api/v1/accounts/' + accountName + '/video-playlists'
const query = {
start,
count,
- sort
+ sort,
+ search
}
return makeGetRequest({