From 26d6bf6533023326fa017812cf31bbe20c752d36 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 18 Jun 2020 10:45:25 +0200 Subject: Split types and typings --- server/types/models/video/video-channels.ts | 145 ++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 server/types/models/video/video-channels.ts (limited to 'server/types/models/video/video-channels.ts') diff --git a/server/types/models/video/video-channels.ts b/server/types/models/video/video-channels.ts new file mode 100644 index 000000000..50f7c2d8a --- /dev/null +++ b/server/types/models/video/video-channels.ts @@ -0,0 +1,145 @@ +import { FunctionProperties, PickWith, PickWithOpt } from '../../utils' +import { VideoChannelModel } from '../../../models/video/video-channel' +import { + MAccountActor, + MAccountAPI, + MAccountDefault, + MAccountFormattable, + MAccountLight, + MAccountSummaryBlocks, + MAccountSummaryFormattable, + MAccountUrl, + MAccountUserId, + MActor, + MActorAccountChannelId, + MActorAP, + MActorAPI, + MActorDefault, + MActorDefaultLight, + MActorFormattable, + MActorLight, + MActorSummary, + MActorSummaryFormattable, MActorUrl +} from '../account' +import { MVideo } from './video' + +type Use = PickWith + +// ############################################################################ + +export type MChannel = Omit + +// ############################################################################ + +export type MChannelId = Pick + +// ############################################################################ + +export type MChannelIdActor = + MChannelId & + Use<'Actor', MActorAccountChannelId> + +export type MChannelUserId = + Pick & + Use<'Account', MAccountUserId> + +export type MChannelActor = + MChannel & + Use<'Actor', MActor> + +export type MChannelUrl = Use<'Actor', MActorUrl> + +// Default scope +export type MChannelDefault = + MChannel & + Use<'Actor', MActorDefault> + +// ############################################################################ + +// Not all association attributes + +export type MChannelLight = + MChannel & + Use<'Actor', MActorDefaultLight> + +export type MChannelActorLight = + MChannel & + Use<'Actor', MActorLight> + +export type MChannelAccountLight = + MChannel & + Use<'Actor', MActorDefaultLight> & + Use<'Account', MAccountLight> + +// ############################################################################ + +// Account associations + +export type MChannelAccountActor = + MChannel & + Use<'Account', MAccountActor> + +export type MChannelAccountDefault = + MChannel & + Use<'Actor', MActorDefault> & + Use<'Account', MAccountDefault> + +export type MChannelActorAccountActor = + MChannel & + Use<'Account', MAccountActor> & + Use<'Actor', MActor> + +// ############################################################################ + +// Videos associations +export type MChannelVideos = + MChannel & + Use<'Videos', MVideo[]> + +export type MChannelActorAccountDefaultVideos = + MChannel & + Use<'Actor', MActorDefault> & + Use<'Account', MAccountDefault> & + Use<'Videos', MVideo[]> + +// ############################################################################ + +// For API + +export type MChannelSummary = + FunctionProperties & + Pick & + Use<'Actor', MActorSummary> + +export type MChannelSummaryAccount = + MChannelSummary & + Use<'Account', MAccountSummaryBlocks> + +export type MChannelAPI = + MChannel & + Use<'Actor', MActorAPI> & + Use<'Account', MAccountAPI> + +// ############################################################################ + +// Format for API or AP object + +export type MChannelSummaryFormattable = + FunctionProperties & + Pick & + Use<'Actor', MActorSummaryFormattable> + +export type MChannelAccountSummaryFormattable = + MChannelSummaryFormattable & + Use<'Account', MAccountSummaryFormattable> + +export type MChannelFormattable = + FunctionProperties & + Pick & + Use<'Actor', MActorFormattable> & + PickWithOpt + +export type MChannelAP = + Pick & + Use<'Actor', MActorAP> & + Use<'Account', MAccountUrl> -- cgit v1.2.3