Files
doneit-web/src/app/core/actions/use-case/publication-files-delete-by-path-use-case.service.ts
T
2026-03-18 14:37:45 +01:00

39 lines
1.4 KiB
TypeScript

import { Injectable } from '@angular/core';
import { PublicationFileRepositoryService } from 'src/app/module/actions/data/repository/publication-file-repository.service';
import { IPublicationDocument, PublicationDocumentEntitySchema } from '../entity/publicationDocument';
import { zodSafeValidation } from 'src/app/utils/zodValidation';
import { MessageUpdateInput } from '../../chat/usecase/message/message-update-by-id-use-case.service';
import { Logger } from 'src/app/services/logger/main/service';
import { PublicationFileLocalRepositoryService } from 'src/app/module/actions/data/repository/publication-file-local-repository.service';
@Injectable({
providedIn: 'root'
})
export class PublicationFilesDeleteByPathUseCaseService {
constructor(
private remote: PublicationFileRepositoryService,
private local: PublicationFileLocalRepositoryService
) { }
async execute(file: IPublicationDocument) {
const validation = zodSafeValidation<MessageUpdateInput>(PublicationDocumentEntitySchema, file)
if(validation.isOk()) {
const result = await this.local.findOne({ path: file.path })
if(result.isOk()) {
await this.local.delete(result.value.id);
}
} else {
Logger.error('failed to update message, validation failed', {
zodErrorList: validation.error.errors,
data: file
})
}
return this.remote.deleteFile(`${file.path}\\${file.name}.${file.extension}`);
}
}