]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/account/user.ts
Add next to stats github ci
[github/Chocobozzz/PeerTube.git] / server / models / account / user.ts
index 2aa6469fb0f884bff9fc6a185656552f701f00a3..c1f22b76aaad87c4195416c0096d6e1ffacd80fe 100644 (file)
@@ -1,4 +1,3 @@
-import * as Bluebird from 'bluebird'
 import { values } from 'lodash'
 import { col, FindOptions, fn, literal, Op, QueryTypes, where, WhereOptions } from 'sequelize'
 import {
@@ -16,6 +15,7 @@ import {
   HasOne,
   Is,
   IsEmail,
+  IsUUID,
   Model,
   Scopes,
   Table,
@@ -28,7 +28,7 @@ import {
   MUserFormattable,
   MUserNotifSettingChannelDefault,
   MUserWithNotificationSetting,
-  MVideoFullLight
+  MVideoWithRights
 } from '@server/types/models'
 import { hasUserRight, USER_ROLE_LABELS } from '../../../shared/core-utils/users'
 import { AbuseState, MyUser, UserRight, VideoPlaylistType, VideoPrivacy } from '../../../shared/models'
@@ -219,7 +219,7 @@ enum ScopeNames {
     }
   ]
 })
-export class UserModel extends Model<UserModel> {
+export class UserModel extends Model {
 
   @AllowNull(true)
   @Is('UserPassword', value => throwIfNotValid(value, isUserPasswordValid, 'user password', true))
@@ -353,6 +353,12 @@ export class UserModel extends Model<UserModel> {
   @Column
   pluginAuth: string
 
+  @AllowNull(false)
+  @Default(DataType.UUIDV4)
+  @IsUUID(4)
+  @Column(DataType.UUID)
+  feedToken: string
+
   @AllowNull(true)
   @Default(null)
   @Column
@@ -476,7 +482,7 @@ export class UserModel extends Model<UserModel> {
                     })
   }
 
-  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))
@@ -492,7 +498,7 @@ export class UserModel extends Model<UserModel> {
     return UserModel.findAll(query)
   }
 
-  static listUserSubscribersOf (actorId: number): Bluebird<MUserWithNotificationSetting[]> {
+  static listUserSubscribersOf (actorId: number): Promise<MUserWithNotificationSetting[]> {
     const query = {
       include: [
         {
@@ -531,7 +537,7 @@ export class UserModel extends Model<UserModel> {
     return UserModel.unscoped().findAll(query)
   }
 
-  static listByUsernames (usernames: string[]): Bluebird<MUserDefault[]> {
+  static listByUsernames (usernames: string[]): Promise<MUserDefault[]> {
     const query = {
       where: {
         username: usernames
@@ -541,11 +547,11 @@ export class UserModel extends Model<UserModel> {
     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
     ]
@@ -555,27 +561,27 @@ export class UserModel extends Model<UserModel> {
     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
@@ -585,7 +591,7 @@ export class UserModel extends Model<UserModel> {
     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 = {
@@ -601,7 +607,7 @@ export class UserModel extends Model<UserModel> {
     return UserModel.findOne(query)
   }
 
-  static loadByVideoId (videoId: number): Bluebird<MUserDefault> {
+  static loadByVideoId (videoId: number): Promise<MUserDefault> {
     const query = {
       include: [
         {
@@ -632,7 +638,7 @@ export class UserModel extends Model<UserModel> {
     return UserModel.findOne(query)
   }
 
-  static loadByVideoImportId (videoImportId: number): Bluebird<MUserDefault> {
+  static loadByVideoImportId (videoImportId: number): Promise<MUserDefault> {
     const query = {
       include: [
         {
@@ -649,7 +655,7 @@ export class UserModel extends Model<UserModel> {
     return UserModel.findOne(query)
   }
 
-  static loadByChannelActorId (videoChannelActorId: number): Bluebird<MUserDefault> {
+  static loadByChannelActorId (videoChannelActorId: number): Promise<MUserDefault> {
     const query = {
       include: [
         {
@@ -673,7 +679,7 @@ export class UserModel extends Model<UserModel> {
     return UserModel.findOne(query)
   }
 
-  static loadByAccountActorId (accountActorId: number): Bluebird<MUserDefault> {
+  static loadByAccountActorId (accountActorId: number): Promise<MUserDefault> {
     const query = {
       include: [
         {
@@ -690,7 +696,7 @@ export class UserModel extends Model<UserModel> {
     return UserModel.findOne(query)
   }
 
-  static loadByLiveId (liveId: number): Bluebird<MUser> {
+  static loadByLiveId (liveId: number): Promise<MUser> {
     const query = {
       include: [
         {
@@ -788,12 +794,14 @@ export class UserModel extends Model<UserModel> {
     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
     }
   }
 
@@ -811,7 +819,7 @@ export class UserModel extends Model<UserModel> {
                     .then(u => u.map(u => u.username))
   }
 
-  canGetVideo (video: MVideoFullLight) {
+  canGetVideo (video: MVideoWithRights) {
     const videoUserId = video.VideoChannel.Account.userId
 
     if (video.isBlacklisted()) {