1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-03 09:49:20 +02:00
Peertube/server/core/helpers/query.ts
Bojidar Marinov 8c9b4abe45
Add Scheduled Lives functionality (#7144)
* Add Scheduled Lives functionality through originallyPublishedAt

Implements #6604 by reusing the originallyPublishedAt field of isLive videos to mark "waiting for live" videos as scheduled at a set time.

* Hide scheduled lives from Browse Videos page

* Add tests for Scheduled Live videos

* Make scheduled lives use a dedicated scheduledAt field in the VideoLive table

* Plan live schedules to evolve in the future

 * Use a dedicated table to store live schedules, so we can add multiple
   schedules in the future and also add a title, description etc. for a
   specific schedule
 * Adapt REST API to use an array to store/get live schedules
 * Add REST API param so it's the client choice to include or not
   scheduled lives
 * Export schedules info in user import/export

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2025-08-01 15:06:27 +02:00

84 lines
1.6 KiB
TypeScript

import { pick } from '@peertube/peertube-core-utils'
import {
VideoChannelsSearchQueryAfterSanitize,
VideoPlaylistsSearchQueryAfterSanitize,
VideosCommonQueryAfterSanitize,
VideosSearchQueryAfterSanitize
} from '@peertube/peertube-models'
function pickCommonVideoQuery (query: VideosCommonQueryAfterSanitize) {
return pick(query, [
'start',
'count',
'sort',
'nsfw',
'nsfwFlagsIncluded',
'nsfwFlagsExcluded',
'isLive',
'includeScheduledLive',
'categoryOneOf',
'licenceOneOf',
'languageOneOf',
'host',
'privacyOneOf',
'tagsOneOf',
'tagsAllOf',
'isLocal',
'include',
'skipCount',
'hasHLSFiles',
'hasWebVideoFiles',
'search',
'excludeAlreadyWatched',
'autoTagOneOf'
])
}
function pickSearchVideoQuery (query: VideosSearchQueryAfterSanitize) {
return {
...pickCommonVideoQuery(query),
...pick(query, [
'searchTarget',
'host',
'startDate',
'endDate',
'originallyPublishedStartDate',
'originallyPublishedEndDate',
'durationMin',
'durationMax',
'uuids'
])
}
}
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
}