]>
Commit | Line | Data |
---|---|---|
1 | import * as Sequelize from 'sequelize' | |
2 | import * as Promise from 'bluebird' | |
3 | ||
4 | import { ResultList, RemoteVideoChannelCreateData, RemoteVideoChannelUpdateData } from '../../../shared' | |
5 | ||
6 | // Don't use barrel, import just what we need | |
7 | import { VideoChannel as FormattedVideoChannel } from '../../../shared/models/videos/video-channel.model' | |
8 | import { AuthorInstance } from './author-interface' | |
9 | import { VideoInstance } from './video-interface' | |
10 | ||
11 | export namespace VideoChannelMethods { | |
12 | export type ToFormattedJSON = (this: VideoChannelInstance) => FormattedVideoChannel | |
13 | export type ToAddRemoteJSON = (this: VideoChannelInstance) => RemoteVideoChannelCreateData | |
14 | export type ToUpdateRemoteJSON = (this: VideoChannelInstance) => RemoteVideoChannelUpdateData | |
15 | export type IsOwned = (this: VideoChannelInstance) => boolean | |
16 | ||
17 | export type CountByAuthor = (authorId: number) => Promise<number> | |
18 | export type ListOwned = () => Promise<VideoChannelInstance[]> | |
19 | export type ListForApi = (start: number, count: number, sort: string) => Promise< ResultList<VideoChannelInstance> > | |
20 | export type LoadByIdAndAuthor = (id: number, authorId: number) => Promise<VideoChannelInstance> | |
21 | export type ListByAuthor = (authorId: number) => Promise< ResultList<VideoChannelInstance> > | |
22 | export type LoadAndPopulateAuthor = (id: number) => Promise<VideoChannelInstance> | |
23 | export type LoadByUUIDAndPopulateAuthor = (uuid: string) => Promise<VideoChannelInstance> | |
24 | export type LoadByUUID = (uuid: string, t?: Sequelize.Transaction) => Promise<VideoChannelInstance> | |
25 | export type LoadByHostAndUUID = (uuid: string, podHost: string, t?: Sequelize.Transaction) => Promise<VideoChannelInstance> | |
26 | export type LoadAndPopulateAuthorAndVideos = (id: number) => Promise<VideoChannelInstance> | |
27 | } | |
28 | ||
29 | export interface VideoChannelClass { | |
30 | countByAuthor: VideoChannelMethods.CountByAuthor | |
31 | listForApi: VideoChannelMethods.ListForApi | |
32 | listByAuthor: VideoChannelMethods.ListByAuthor | |
33 | listOwned: VideoChannelMethods.ListOwned | |
34 | loadByIdAndAuthor: VideoChannelMethods.LoadByIdAndAuthor | |
35 | loadByUUID: VideoChannelMethods.LoadByUUID | |
36 | loadByHostAndUUID: VideoChannelMethods.LoadByHostAndUUID | |
37 | loadAndPopulateAuthor: VideoChannelMethods.LoadAndPopulateAuthor | |
38 | loadByUUIDAndPopulateAuthor: VideoChannelMethods.LoadByUUIDAndPopulateAuthor | |
39 | loadAndPopulateAuthorAndVideos: VideoChannelMethods.LoadAndPopulateAuthorAndVideos | |
40 | } | |
41 | ||
42 | export interface VideoChannelAttributes { | |
43 | id?: number | |
44 | uuid?: string | |
45 | name: string | |
46 | description: string | |
47 | remote: boolean | |
48 | ||
49 | Author?: AuthorInstance | |
50 | Videos?: VideoInstance[] | |
51 | } | |
52 | ||
53 | export interface VideoChannelInstance extends VideoChannelClass, VideoChannelAttributes, Sequelize.Instance<VideoChannelAttributes> { | |
54 | id: number | |
55 | createdAt: Date | |
56 | updatedAt: Date | |
57 | ||
58 | isOwned: VideoChannelMethods.IsOwned | |
59 | toFormattedJSON: VideoChannelMethods.ToFormattedJSON | |
60 | toAddRemoteJSON: VideoChannelMethods.ToAddRemoteJSON | |
61 | toUpdateRemoteJSON: VideoChannelMethods.ToUpdateRemoteJSON | |
62 | } | |
63 | ||
64 | export interface VideoChannelModel extends VideoChannelClass, Sequelize.Model<VideoChannelInstance, VideoChannelAttributes> {} |