import * as Promise from 'bluebird'
import { PodInstance } from '../pod/pod-interface'
+import { RemoteVideoAuthorCreateData } from '../../../shared/models/pods/remote-video/remote-video-author-create-request.model'
+import { VideoChannelInstance } from './video-channel-interface'
export namespace AuthorMethods {
- export type FindOrCreateAuthor = (
- name: string,
- podId: number,
- userId: number,
- transaction: Sequelize.Transaction
- ) => Promise<AuthorInstance>
+ export type Load = (id: number) => Promise<AuthorInstance>
+ export type LoadByUUID = (uuid: string) => Promise<AuthorInstance>
+ export type LoadAuthorByPodAndUUID = (uuid: string, podId: number, transaction: Sequelize.Transaction) => Promise<AuthorInstance>
+ export type ListOwned = () => Promise<AuthorInstance[]>
+
+ export type ToAddRemoteJSON = (this: AuthorInstance) => RemoteVideoAuthorCreateData
+ export type IsOwned = (this: AuthorInstance) => boolean
}
export interface AuthorClass {
- findOrCreateAuthor: AuthorMethods.FindOrCreateAuthor
+ loadAuthorByPodAndUUID: AuthorMethods.LoadAuthorByPodAndUUID
+ load: AuthorMethods.Load
+ loadByUUID: AuthorMethods.LoadByUUID
+ listOwned: AuthorMethods.ListOwned
}
export interface AuthorAttributes {
name: string
+ uuid?: string
+
+ podId?: number
+ userId?: number
}
export interface AuthorInstance extends AuthorClass, AuthorAttributes, Sequelize.Instance<AuthorAttributes> {
+ isOwned: AuthorMethods.IsOwned
+ toAddRemoteJSON: AuthorMethods.ToAddRemoteJSON
+
id: number
createdAt: Date
updatedAt: Date
- podId: number
Pod: PodInstance
+ VideoChannels: VideoChannelInstance[]
}
export interface AuthorModel extends AuthorClass, Sequelize.Model<AuthorInstance, AuthorAttributes> {}