This commit is contained in:
2025-09-06 12:34:25 +03:00
parent c5ee179e71
commit 30ef449756
26 changed files with 860 additions and 207 deletions

View File

@@ -92,6 +92,17 @@ interface ItemRepository {
suspend fun getAllLabels(): List<LabelOut>
// [END_ENTITY: Function('getAllLabels')]
// [ENTITY: Function('getLabelDetails')]
// [RELATION: Function('getLabelDetails')] -> [RETURNS] -> [DataClass('LabelOut')]
/**
* @summary Получает детальную информацию о метке.
* @param labelId ID метки.
* @return Детальная информация о метке.
*/
suspend fun getLabelDetails(labelId: String): LabelOut
// [END_ENTITY: Function('getLabelDetails')]
// [ENTITY: Function('createLabel')]
// [RELATION: Function('createLabel')] -> [RETURNS] -> [DataClass('LabelSummary')]
/**

View File

@@ -0,0 +1,35 @@
// [PACKAGE] com.homebox.lens.domain.usecase
// [FILE] GetLabelDetailsUseCase.kt
// [SEMANTICS] business_logic, use_case, label_retrieval
package com.homebox.lens.domain.usecase
// [IMPORTS]
import com.homebox.lens.domain.model.LabelOut
import com.homebox.lens.domain.repository.ItemRepository
import javax.inject.Inject
// [END_IMPORTS]
// [ENTITY: UseCase('GetLabelDetailsUseCase')]
// [RELATION: UseCase('GetLabelDetailsUseCase')] -> [DEPENDS_ON] -> [Interface('ItemRepository')]
/**
* @summary Получает детальную информацию о метке по ее ID.
* @param itemRepository Репозиторий для работы с данными о метках.
*/
class GetLabelDetailsUseCase @Inject constructor(
private val itemRepository: ItemRepository
) {
/**
* @summary Выполняет получение детальной информации о метке.
* @param labelId ID запрашиваемой метки.
* @return Детальная информация о метке [LabelOut].
* @throws IllegalArgumentException если `labelId` пустой.
* @throws NoSuchElementException если метка с указанным ID не найдена.
*/
suspend operator fun invoke(labelId: String): LabelOut {
require(labelId.isNotBlank()) { "Label ID cannot be blank." }
return itemRepository.getLabelDetails(labelId)
}
}
// [END_ENTITY: UseCase('GetLabelDetailsUseCase')]
// [END_FILE_GetLabelDetailsUseCase.kt]