PeerTube/server/core/helpers/query.ts

82 lines
1.6 KiB
TypeScript
Raw Normal View History

import { pick } from '@peertube/peertube-core-utils'
2021-07-29 11:54:38 +02:00
import {
VideoChannelsSearchQueryAfterSanitize,
VideoPlaylistsSearchQueryAfterSanitize,
VideosCommonQueryAfterSanitize,
VideosSearchQueryAfterSanitize
} from '@peertube/peertube-models'
2021-07-29 11:54:38 +02:00
function pickCommonVideoQuery (query: VideosCommonQueryAfterSanitize) {
return pick(query, [
'start',
'count',
'sort',
'nsfw',
'isLive',
'categoryOneOf',
'licenceOneOf',
'languageOneOf',
'privacyOneOf',
2021-07-29 11:54:38 +02:00
'tagsOneOf',
'tagsAllOf',
'isLocal',
'include',
'skipCount',
2021-11-03 11:32:41 +01:00
'hasHLSFiles',
'hasWebtorrentFiles', // TODO: Remove in v7
'hasWebVideoFiles',
'search',
'excludeAlreadyWatched',
'autoTagOneOf'
2021-07-29 11:54:38 +02:00
])
}
function pickSearchVideoQuery (query: VideosSearchQueryAfterSanitize) {
return {
...pickCommonVideoQuery(query),
...pick(query, [
'searchTarget',
'host',
'startDate',
'endDate',
'originallyPublishedStartDate',
'originallyPublishedEndDate',
'durationMin',
'durationMax',
2024-05-28 08:23:53 +02:00
'uuids'
2021-07-29 11:54:38 +02:00
])
}
}
function pickSearchChannelQuery (query: VideoChannelsSearchQueryAfterSanitize) {
return pick(query, [
'searchTarget',
'search',
'start',
'count',
'sort',
'host',
'handles'
])
}
function pickSearchPlaylistQuery (query: VideoPlaylistsSearchQueryAfterSanitize) {
return pick(query, [
'searchTarget',
'search',
'start',
'count',
'sort',
'host',
'uuids'
])
}
export {
pickCommonVideoQuery,
pickSearchVideoQuery,
pickSearchPlaylistQuery,
pickSearchChannelQuery
}