From b56c5410aa523fc1c11bc4a234828a76aa5022c1 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 6 Dec 2023 14:24:36 +0900 Subject: [PATCH] =?UTF-8?q?doc:=20LocalFileSystemMediaDataStore.kt?= =?UTF-8?q?=E3=81=AB=E3=83=89=E3=82=AD=E3=83=A5=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../media/LocalFileSystemMediaDataStore.kt | 14 +++++++++++ .../core/service/media/MediaDataStore.kt | 24 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/main/kotlin/dev/usbharu/hideout/core/service/media/LocalFileSystemMediaDataStore.kt b/src/main/kotlin/dev/usbharu/hideout/core/service/media/LocalFileSystemMediaDataStore.kt index 4c1e4e45..0e0ef8cb 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/service/media/LocalFileSystemMediaDataStore.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/service/media/LocalFileSystemMediaDataStore.kt @@ -9,6 +9,15 @@ import kotlin.io.path.deleteIfExists import kotlin.io.path.outputStream @Service +/** + * ローカルファイルシステムにメディアを保存します + * + * @constructor + * ApplicationConfigとLocalStorageConfigをもとに作成 + * + * @param applicationConfig ApplicationConfig + * @param localStorageConfig LocalStorageConfig + */ class LocalFileSystemMediaDataStore( applicationConfig: ApplicationConfig, localStorageConfig: LocalStorageConfig @@ -49,6 +58,11 @@ class LocalFileSystemMediaDataStore( ) } + /** + * メディアを削除します。サムネイルも削除されます。 + * + * @param id 削除するメディアのid [SuccessSavedMedia.name]を指定します。 + */ override suspend fun delete(id: String) { buildSavePath(savePath, id).deleteIfExists() buildSavePath(savePath, "thumbnail-$id").deleteIfExists() diff --git a/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaDataStore.kt b/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaDataStore.kt index 03ee3e9f..478ddc50 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaDataStore.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaDataStore.kt @@ -1,7 +1,31 @@ package dev.usbharu.hideout.core.service.media +/** + * メディアを保存するインタフェース + * + */ interface MediaDataStore { + /** + * InputStreamを使用してメディアを保存します + * + * @param dataMediaSave FileとThumbnailのinputStream + * @return 保存されたメディア + */ suspend fun save(dataMediaSave: MediaSave): SavedMedia + + /** + * 一時ファイルのパスを使用してメディアを保存します + * + * @param dataSaveRequest FileとThumbnailのパス + * @return 保存されたメディア + */ suspend fun save(dataSaveRequest: MediaSaveRequest): SavedMedia + + /** + * メディアを削除します + * 実装はサムネイル、メタデータなども削除するべきです。 + * + * @param id 削除するメディアのid 通常は[SuccessSavedMedia.name]を指定します。 + */ suspend fun delete(id: String) }