import * as Promise from 'bluebird'
// Don't use barrel, import just what we need
-import { UserRole, User as FormatedUser } from '../../../shared/models/user.model'
+import { User as FormattedUser } from '../../../shared/models/users/user.model'
+import { UserRole } from '../../../shared/models/users/user-role.type'
import { ResultList } from '../../../shared/models/result-list.model'
export namespace UserMethods {
export type IsPasswordMatch = (this: UserInstance, password: string) => Promise<boolean>
- export type ToFormatedJSON = (this: UserInstance) => FormatedUser
+ export type ToFormattedJSON = (this: UserInstance) => FormattedUser
export type IsAdmin = (this: UserInstance) => boolean
+ export type IsAbleToUploadVideo = (this: UserInstance, videoFile: Express.Multer.File) => Promise<boolean>
export type CountTotal = () => Promise<number>
export interface UserClass {
isPasswordMatch: UserMethods.IsPasswordMatch,
- toFormatedJSON: UserMethods.ToFormatedJSON,
+ toFormattedJSON: UserMethods.ToFormattedJSON,
isAdmin: UserMethods.IsAdmin,
+ isAbleToUploadVideo: UserMethods.IsAbleToUploadVideo,
countTotal: UserMethods.CountTotal,
getByUsername: UserMethods.GetByUsername,
}
export interface UserAttributes {
+ id?: number
password: string
username: string
email: string
displayNSFW?: boolean
role: UserRole
+ videoQuota: number
}
export interface UserInstance extends UserClass, UserAttributes, Sequelize.Instance<UserAttributes> {
updatedAt: Date
isPasswordMatch: UserMethods.IsPasswordMatch
- toFormatedJSON: UserMethods.ToFormatedJSON
+ toFormattedJSON: UserMethods.ToFormattedJSON
isAdmin: UserMethods.IsAdmin
}