]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/account/account.ts
Move user moderation tool in a separate component
[github/Chocobozzz/PeerTube.git] / server / models / account / account.ts
index ce0f3f7c5b843373eff18683137964ce87e1c7ec..27c75d8861203c3be8c6e8e27b9d134e3dbb334c 100644 (file)
@@ -16,9 +16,9 @@ import {
 } from 'sequelize-typescript'
 import { Account } from '../../../shared/models/actors'
 import { isAccountDescriptionValid } from '../../helpers/custom-validators/accounts'
+import { sendDeleteActor } from '../../lib/activitypub/send'
 import { ActorModel } from '../activitypub/actor'
 import { ApplicationModel } from '../application/application'
-import { AvatarModel } from '../avatar/avatar'
 import { ServerModel } from '../server/server'
 import { getSort, throwIfNotValid } from '../utils'
 import { VideoChannelModel } from '../video/video-channel'
@@ -28,18 +28,8 @@ import { UserModel } from './user'
 @DefaultScope({
   include: [
     {
-      model: () => ActorModel,
-      required: true,
-      include: [
-        {
-          model: () => ServerModel,
-          required: false
-        },
-        {
-          model: () => AvatarModel,
-          required: false
-        }
-      ]
+      model: () => ActorModel, // Default scope includes avatar and server
+      required: true
     }
   ]
 })
@@ -136,11 +126,15 @@ export class AccountModel extends Model<AccountModel> {
       instance.Actor = await instance.$get('Actor', { transaction: options.transaction }) as ActorModel
     }
 
-    return instance.Actor.destroy({ transaction: options.transaction })
+    if (instance.isOwned()) {
+      return sendDeleteActor(instance.Actor, options.transaction)
+    }
+
+    return undefined
   }
 
-  static load (id: number) {
-    return AccountModel.findById(id)
+  static load (id: number, transaction?: Sequelize.Transaction) {
+    return AccountModel.findById(id, { transaction })
   }
 
   static loadByUUID (uuid: string) {
@@ -189,7 +183,7 @@ export class AccountModel extends Model<AccountModel> {
     return AccountModel.findOne(query)
   }
 
-  static loadLocalByNameAndHost (name: string, host: string) {
+  static loadByNameAndHost (name: string, host: string) {
     const query = {
       include: [
         {
@@ -239,12 +233,12 @@ export class AccountModel extends Model<AccountModel> {
     }
 
     return AccountModel.findAndCountAll(query)
-                       .then(({ rows, count }) => {
-                         return {
-                           data: rows,
-                           total: count
-                         }
-                       })
+      .then(({ rows, count }) => {
+        return {
+          data: rows,
+          total: count
+        }
+      })
   }
 
   toFormattedJSON (): Account {