Skip to content

Commit

Permalink
enhance(backend): すぐ消すで添付したファイルも消すように
Browse files Browse the repository at this point in the history
  • Loading branch information
lqvp authored and Ruruke committed Jan 27, 2025
1 parent 9bc4f98 commit 6076ec6
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
1 change: 1 addition & 0 deletions packages/backend/src/core/NoteCreateService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,7 @@ export class NoteCreateService implements OnApplicationShutdown {
const delay = data.deleteAt.getTime() - Date.now();
this.queueService.scheduledNoteDeleteQueue.add(note.id, {
noteId: note.id,
fileIds: data.files?.map(file => file.id),
}, {
delay,
removeOnComplete: true,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import { Inject, Injectable } from '@nestjs/common';
import { In } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type { NotesRepository, UsersRepository } from '@/models/_.js';
import type { DriveFilesRepository } from '@/models/_.js';
import type Logger from '@/logger.js';
import { bindThis } from '@/decorators.js';
import { NoteDeleteService } from '@/core/NoteDeleteService.js';
import { DriveService } from '@/core/DriveService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { ScheduledNoteDeleteJobData } from '../types.js';
Expand All @@ -19,7 +22,11 @@ export class ScheduledNoteDeleteProcessorService {
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,

@Inject(DI.driveFilesRepository)
private drivesRepository: DriveFilesRepository,

private noteDeleteService: NoteDeleteService,
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('scheduled-note-delete');
Expand All @@ -39,5 +46,19 @@ export class ScheduledNoteDeleteProcessorService {

await this.noteDeleteService.delete(user, note);
this.logger.info(`Deleted note ${note.id}`);

// 添付ファイルがあれば削除
if (job.data.fileIds && job.data.fileIds.length > 0) {
const files = await this.drivesRepository.findBy({
id: In(job.data.fileIds),
userId: user.id,
});

for (const file of files) {
await this.driveService.deleteFileImmediately(file, false, user);
}

this.logger.info(`Deleted ${files.length} attached files: ${files.map(f => f.id).join(', ')}`);
}
}
}
1 change: 1 addition & 0 deletions packages/backend/src/queue/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ export type EndedPollNotificationJobData = {

export type ScheduledNoteDeleteJobData = {
noteId: MiNote['id'];
fileIds?: MiDriveFile['id'][];
}

export type SystemWebhookDeliverJobData = {
Expand Down

0 comments on commit 6076ec6

Please sign in to comment.