package space.luminic.budgerapp.services import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.reactor.awaitSingleOrNull import kotlinx.coroutines.withContext import org.springframework.http.codec.multipart.FilePart import org.springframework.stereotype.Service import space.luminic.budgerapp.configs.StorageConfig import java.nio.file.Files import java.nio.file.Paths import java.util.* @Service class StaticService(private val storageConfig: StorageConfig) { suspend fun saveFile(spaceId: String, wishListItemId: String, filePart: FilePart): String { val folder = Paths.get(storageConfig.rootLocation.toString(), spaceId, "wishlists", wishListItemId) withContext(Dispatchers.IO) { Files.createDirectories(folder) } val filename = UUID.randomUUID().toString().split("-")[0] + "." + filePart.filename().split(".").last() val filePath = folder.resolve(filename) filePart.transferTo(filePath).awaitSingleOrNull() return filePath.toString() } }