]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/account/user.ts
Optimize SQL queries
[github/Chocobozzz/PeerTube.git] / server / models / account / user.ts
index 8afd246b2c17dc6cc2d0ebae470e30f4b40e9d2a..1165285ea318195200f818f4cf58af0b571eeb4a 100644 (file)
@@ -21,7 +21,7 @@ import { hasUserRight, USER_ROLE_LABELS, UserRight } from '../../../shared'
 import { User, UserRole } from '../../../shared/models/users'
 import {
   isUserAutoPlayVideoValid,
-  isUserDisplayNSFWValid,
+  isUserNSFWPolicyValid,
   isUserPasswordValid,
   isUserRoleValid,
   isUserUsernameValid,
@@ -32,6 +32,13 @@ import { OAuthTokenModel } from '../oauth/oauth-token'
 import { getSort, throwIfNotValid } from '../utils'
 import { VideoChannelModel } from '../video/video-channel'
 import { AccountModel } from './account'
+import { NSFWPolicyType } from '../../../shared/models/videos/nsfw-policy.type'
+import { values } from 'lodash'
+import { NSFW_POLICY_TYPES } from '../../initializers'
+
+enum ScopeNames {
+  WITH_VIDEO_CHANNEL = 'WITH_VIDEO_CHANNEL'
+}
 
 @DefaultScope({
   include: [
@@ -42,7 +49,7 @@ import { AccountModel } from './account'
   ]
 })
 @Scopes({
-  withVideoChannel: {
+  [ScopeNames.WITH_VIDEO_CHANNEL]: {
     include: [
       {
         model: () => AccountModel,
@@ -83,10 +90,9 @@ export class UserModel extends Model<UserModel> {
   email: string
 
   @AllowNull(false)
-  @Default(false)
-  @Is('UserDisplayNSFW', value => throwIfNotValid(value, isUserDisplayNSFWValid, 'display NSFW boolean'))
-  @Column
-  displayNSFW: boolean
+  @Is('UserNSFWPolicy', value => throwIfNotValid(value, isUserNSFWPolicyValid, 'NSFW policy'))
+  @Column(DataType.ENUM(values(NSFW_POLICY_TYPES)))
+  nsfwPolicy: NSFWPolicyType
 
   @AllowNull(false)
   @Default(true)
@@ -197,7 +203,7 @@ export class UserModel extends Model<UserModel> {
       }
     }
 
-    return UserModel.scope('withVideoChannel').findOne(query)
+    return UserModel.scope(ScopeNames.WITH_VIDEO_CHANNEL).findOne(query)
   }
 
   static loadByEmail (email: string) {
@@ -265,7 +271,7 @@ export class UserModel extends Model<UserModel> {
       id: this.id,
       username: this.username,
       email: this.email,
-      displayNSFW: this.displayNSFW,
+      nsfwPolicy: this.nsfwPolicy,
       autoPlayVideo: this.autoPlayVideo,
       role: this.role,
       roleLabel: USER_ROLE_LABELS[ this.role ],