|
@@ -1,5 +1,5 @@
|
|
import { APP_UPLOAD_LOCATION, userUtils } from '@app/common';
|
|
import { APP_UPLOAD_LOCATION, userUtils } from '@app/common';
|
|
-import { APIKeyEntity, AssetEntity, UserEntity } from '@app/infra';
|
|
|
|
|
|
+import { AlbumEntity, APIKeyEntity, AssetEntity, UserEntity, UserTokenEntity } from '@app/infra';
|
|
import { QueueName, JobName } from '@app/domain';
|
|
import { QueueName, JobName } from '@app/domain';
|
|
import { IUserDeletionJob } from '@app/domain';
|
|
import { IUserDeletionJob } from '@app/domain';
|
|
import { Process, Processor } from '@nestjs/bull';
|
|
import { Process, Processor } from '@nestjs/bull';
|
|
@@ -23,6 +23,12 @@ export class UserDeletionProcessor {
|
|
|
|
|
|
@InjectRepository(APIKeyEntity)
|
|
@InjectRepository(APIKeyEntity)
|
|
private apiKeyRepository: Repository<APIKeyEntity>,
|
|
private apiKeyRepository: Repository<APIKeyEntity>,
|
|
|
|
+
|
|
|
|
+ @InjectRepository(UserTokenEntity)
|
|
|
|
+ private userTokenRepository: Repository<UserTokenEntity>,
|
|
|
|
+
|
|
|
|
+ @InjectRepository(AlbumEntity)
|
|
|
|
+ private albumRepository: Repository<AlbumEntity>,
|
|
) {}
|
|
) {}
|
|
|
|
|
|
@Process(JobName.USER_DELETION)
|
|
@Process(JobName.USER_DELETION)
|
|
@@ -44,6 +50,16 @@ export class UserDeletionProcessor {
|
|
fs.rmSync(userAssetDir, { recursive: true, force: true });
|
|
fs.rmSync(userAssetDir, { recursive: true, force: true });
|
|
|
|
|
|
this.logger.warn(`Removing user from database: ${user.id}`);
|
|
this.logger.warn(`Removing user from database: ${user.id}`);
|
|
|
|
+ const userTokens = await this.userTokenRepository.find({
|
|
|
|
+ where: { user: { id: user.id } },
|
|
|
|
+ relations: { user: true },
|
|
|
|
+ withDeleted: true,
|
|
|
|
+ });
|
|
|
|
+ await this.userTokenRepository.remove(userTokens);
|
|
|
|
+
|
|
|
|
+ const albums = await this.albumRepository.find({ where: { ownerId: user.id } });
|
|
|
|
+ await this.albumRepository.remove(albums);
|
|
|
|
+
|
|
await this.apiKeyRepository.delete({ userId: user.id });
|
|
await this.apiKeyRepository.delete({ userId: user.id });
|
|
await this.assetRepository.delete({ userId: user.id });
|
|
await this.assetRepository.delete({ userId: user.id });
|
|
await this.userRepository.remove(user);
|
|
await this.userRepository.remove(user);
|