use delete-file task for async file deletions
This commit is contained in:
parent
9c1208b6ca
commit
7934643090
1 changed files with 9 additions and 31 deletions
|
|
@ -470,7 +470,7 @@ export class DriveService {
|
||||||
for (const fileId of exceedFileIds) {
|
for (const fileId of exceedFileIds) {
|
||||||
const file = await this.driveFilesRepository.findOneBy({ id: fileId });
|
const file = await this.driveFilesRepository.findOneBy({ id: fileId });
|
||||||
if (file == null) continue;
|
if (file == null) continue;
|
||||||
this.deleteFile(file, true);
|
await this.deleteFile(file, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -718,14 +718,14 @@ export class DriveService {
|
||||||
if (values.isSensitive !== undefined && values.isSensitive !== file.isSensitive) {
|
if (values.isSensitive !== undefined && values.isSensitive !== file.isSensitive) {
|
||||||
const user = file.userId ? await this.usersRepository.findOneByOrFail({ id: file.userId }) : null;
|
const user = file.userId ? await this.usersRepository.findOneByOrFail({ id: file.userId }) : null;
|
||||||
if (values.isSensitive) {
|
if (values.isSensitive) {
|
||||||
this.moderationLogService.log(updater, 'markSensitiveDriveFile', {
|
await this.moderationLogService.log(updater, 'markSensitiveDriveFile', {
|
||||||
fileId: file.id,
|
fileId: file.id,
|
||||||
fileUserId: file.userId,
|
fileUserId: file.userId,
|
||||||
fileUserUsername: user?.username ?? null,
|
fileUserUsername: user?.username ?? null,
|
||||||
fileUserHost: user?.host ?? null,
|
fileUserHost: user?.host ?? null,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.moderationLogService.log(updater, 'unmarkSensitiveDriveFile', {
|
await this.moderationLogService.log(updater, 'unmarkSensitiveDriveFile', {
|
||||||
fileId: file.id,
|
fileId: file.id,
|
||||||
fileUserId: file.userId,
|
fileUserId: file.userId,
|
||||||
fileUserUsername: user?.username ?? null,
|
fileUserUsername: user?.username ?? null,
|
||||||
|
|
@ -739,30 +739,8 @@ export class DriveService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@bindThis
|
@bindThis
|
||||||
public async deleteFile(file: MiDriveFile, isExpired = false, deleter?: { id: string }) {
|
public async deleteFile(file: MiDriveFile, isExpired = false, deleter?: MiUser) {
|
||||||
if (file.storedInternal) {
|
await this.queueService.createDeleteFileJob(file.id, isExpired, deleter?.id);
|
||||||
this.deleteLocalFile(file.accessKey!);
|
|
||||||
|
|
||||||
if (file.thumbnailUrl) {
|
|
||||||
this.deleteLocalFile(file.thumbnailAccessKey!);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file.webpublicUrl) {
|
|
||||||
this.deleteLocalFile(file.webpublicAccessKey!);
|
|
||||||
}
|
|
||||||
} else if (!file.isLink) {
|
|
||||||
this.queueService.createDeleteObjectStorageFileJob(file.accessKey!);
|
|
||||||
|
|
||||||
if (file.thumbnailUrl) {
|
|
||||||
this.queueService.createDeleteObjectStorageFileJob(file.thumbnailAccessKey!);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file.webpublicUrl) {
|
|
||||||
this.queueService.createDeleteObjectStorageFileJob(file.webpublicAccessKey!);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.deletePostProcess(file, isExpired, deleter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@bindThis
|
@bindThis
|
||||||
|
|
@ -793,14 +771,14 @@ export class DriveService {
|
||||||
|
|
||||||
await Promise.all(promises);
|
await Promise.all(promises);
|
||||||
|
|
||||||
this.deletePostProcess(file, isExpired, deleter);
|
await this.deletePostProcess(file, isExpired, deleter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@bindThis
|
@bindThis
|
||||||
private async deletePostProcess(file: MiDriveFile, isExpired = false, deleter?: { id: string }) {
|
private async deletePostProcess(file: MiDriveFile, isExpired = false, deleter?: { id: string }) {
|
||||||
// リモートファイル期限切れ削除後は直リンクにする
|
// リモートファイル期限切れ削除後は直リンクにする
|
||||||
if (isExpired && file.userHost !== null && file.uri != null) {
|
if (isExpired && file.userHost !== null && file.uri != null) {
|
||||||
this.driveFilesRepository.update(file.id, {
|
await this.driveFilesRepository.update(file.id, {
|
||||||
isLink: true,
|
isLink: true,
|
||||||
url: file.uri,
|
url: file.uri,
|
||||||
thumbnailUrl: null,
|
thumbnailUrl: null,
|
||||||
|
|
@ -812,7 +790,7 @@ export class DriveService {
|
||||||
webpublicAccessKey: 'webpublic-' + randomUUID(),
|
webpublicAccessKey: 'webpublic-' + randomUUID(),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.driveFilesRepository.delete(file.id);
|
await this.driveFilesRepository.delete(file.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.driveChart.update(file, false);
|
this.driveChart.update(file, false);
|
||||||
|
|
@ -831,7 +809,7 @@ export class DriveService {
|
||||||
|
|
||||||
if (deleter && await this.roleService.isModerator(deleter) && (file.userId !== deleter.id)) {
|
if (deleter && await this.roleService.isModerator(deleter) && (file.userId !== deleter.id)) {
|
||||||
const user = file.userId ? await this.usersRepository.findOneByOrFail({ id: file.userId }) : null;
|
const user = file.userId ? await this.usersRepository.findOneByOrFail({ id: file.userId }) : null;
|
||||||
this.moderationLogService.log(deleter, 'deleteDriveFile', {
|
await this.moderationLogService.log(deleter, 'deleteDriveFile', {
|
||||||
fileId: file.id,
|
fileId: file.id,
|
||||||
fileUserId: file.userId,
|
fileUserId: file.userId,
|
||||||
fileUserUsername: user?.username ?? null,
|
fileUserUsername: user?.username ?? null,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue