-import * as Bluebird from 'bluebird'
import { values } from 'lodash'
import { col, FindOptions, fn, literal, Op, QueryTypes, where, WhereOptions } from 'sequelize'
import {
HasOne,
Is,
IsEmail,
+ IsUUID,
Model,
Scopes,
Table,
- UpdatedAt,
- IsUUID
+ UpdatedAt
} from 'sequelize-typescript'
import {
MMyUserFormattable,
}
]
})
-export class UserModel extends Model<UserModel> {
+export class UserModel extends Model {
@AllowNull(true)
@Is('UserPassword', value => throwIfNotValid(value, isUserPasswordValid, 'user password', true))
})
}
- static listWithRight (right: UserRight): Bluebird<MUserDefault[]> {
+ static listWithRight (right: UserRight): Promise<MUserDefault[]> {
const roles = Object.keys(USER_ROLE_LABELS)
.map(k => parseInt(k, 10) as UserRole)
.filter(role => hasUserRight(role, right))
return UserModel.findAll(query)
}
- static listUserSubscribersOf (actorId: number): Bluebird<MUserWithNotificationSetting[]> {
+ static listUserSubscribersOf (actorId: number): Promise<MUserWithNotificationSetting[]> {
const query = {
include: [
{
return UserModel.unscoped().findAll(query)
}
- static listByUsernames (usernames: string[]): Bluebird<MUserDefault[]> {
+ static listByUsernames (usernames: string[]): Promise<MUserDefault[]> {
const query = {
where: {
username: usernames
return UserModel.findAll(query)
}
- static loadById (id: number): Bluebird<MUser> {
+ static loadById (id: number): Promise<MUser> {
return UserModel.unscoped().findByPk(id)
}
- static loadByIdWithChannels (id: number, withStats = false): Bluebird<MUserDefault> {
+ static loadByIdWithChannels (id: number, withStats = false): Promise<MUserDefault> {
const scopes = [
ScopeNames.WITH_VIDEOCHANNELS
]
return UserModel.scope(scopes).findByPk(id)
}
- static loadByUsername (username: string): Bluebird<MUserDefault> {
+ static loadByUsername (username: string): Promise<MUserDefault> {
const query = {
where: {
- username: { [Op.iLike]: username }
+ username
}
}
return UserModel.findOne(query)
}
- static loadForMeAPI (username: string): Bluebird<MUserNotifSettingChannelDefault> {
+ static loadForMeAPI (id: number): Promise<MUserNotifSettingChannelDefault> {
const query = {
where: {
- username: { [Op.iLike]: username }
+ id
}
}
return UserModel.scope(ScopeNames.FOR_ME_API).findOne(query)
}
- static loadByEmail (email: string): Bluebird<MUserDefault> {
+ static loadByEmail (email: string): Promise<MUserDefault> {
const query = {
where: {
email
return UserModel.findOne(query)
}
- static loadByUsernameOrEmail (username: string, email?: string): Bluebird<MUserDefault> {
+ static loadByUsernameOrEmail (username: string, email?: string): Promise<MUserDefault> {
if (!email) email = username
const query = {
return UserModel.findOne(query)
}
- static loadByVideoId (videoId: number): Bluebird<MUserDefault> {
+ static loadByVideoId (videoId: number): Promise<MUserDefault> {
const query = {
include: [
{
return UserModel.findOne(query)
}
- static loadByVideoImportId (videoImportId: number): Bluebird<MUserDefault> {
+ static loadByVideoImportId (videoImportId: number): Promise<MUserDefault> {
const query = {
include: [
{
return UserModel.findOne(query)
}
- static loadByChannelActorId (videoChannelActorId: number): Bluebird<MUserDefault> {
+ static loadByChannelActorId (videoChannelActorId: number): Promise<MUserDefault> {
const query = {
include: [
{
return UserModel.findOne(query)
}
- static loadByAccountActorId (accountActorId: number): Bluebird<MUserDefault> {
+ static loadByAccountActorId (accountActorId: number): Promise<MUserDefault> {
const query = {
include: [
{
return UserModel.findOne(query)
}
- static loadByLiveId (liveId: number): Bluebird<MUser> {
+ static loadByLiveId (liveId: number): Promise<MUser> {
const query = {
include: [
{
const totalDailyActiveUsers = await getActiveUsers(1)
const totalWeeklyActiveUsers = await getActiveUsers(7)
const totalMonthlyActiveUsers = await getActiveUsers(30)
+ const totalHalfYearActiveUsers = await getActiveUsers(180)
return {
totalUsers,
totalDailyActiveUsers,
totalWeeklyActiveUsers,
- totalMonthlyActiveUsers
+ totalMonthlyActiveUsers,
+ totalHalfYearActiveUsers
}
}