FIRST SUCCESS RUN

This commit is contained in:
2025-08-07 17:37:06 +03:00
parent b63eca8440
commit 5b613f7cc8
43 changed files with 366 additions and 314 deletions

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] CustomField.kt
// [SEMANTICS] data_structure, entity, custom_field
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] GroupStatistics.kt
// [SEMANTICS] data_structure, statistics
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] Image.kt
// [SEMANTICS] data_structure, entity, image
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] ItemAttachment.kt
// [SEMANTICS] data_structure, entity, attachment
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] ItemCreate.kt
// [SEMANTICS] data_structure, entity, input, create
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] ItemOut.kt
// [SEMANTICS] data_structure, entity, detailed
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] ItemSummary.kt
// [SEMANTICS] data_structure, entity, summary
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] ItemUpdate.kt
// [SEMANTICS] data_structure, entity, input, update
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] LabelOut.kt
// [SEMANTICS] data_structure, entity, label
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] LocationOut.kt
// [SEMANTICS] data_structure, entity, location
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] LocationOutCount.kt
// [SEMANTICS] data_structure, entity, location
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] MaintenanceEntry.kt
// [SEMANTICS] data_structure, entity, maintenance
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.model
// [FILE] PaginationResult.kt
// [SEMANTICS] data_structure, generic, pagination
package com.homebox.lens.domain.model
// [CORE-LOGIC]
/**
* [CONTRACT]

View File

@@ -1,7 +1,7 @@
// [PACKAGE] com.homebox.lens.domain.repository
// [FILE] ItemRepository.kt
// [SEMANTICS] data_access, abstraction, repository
package com.homebox.lens.domain.repository
// [IMPORTS]
import com.homebox.lens.domain.model.*

View File

@@ -1,29 +1,25 @@
// [PACKAGE] com.homebox.lens.domain.usecase
// [FILE] GetAllLabelsUseCase.kt
// [SEMANTICS] business_logic, use_case, label_retrieval
// [FILE] domain/src/main/java/com/homebox/lens/domain/usecase/GetAllLabelsUseCase.kt
// [SEMANTICS] domain, usecase, label, list
// [IMPORTS]
package com.homebox.lens.domain.usecase
import com.homebox.lens.domain.model.LabelOut
import com.homebox.lens.domain.repository.ItemRepository
import javax.inject.Inject
// [CORE-LOGIC]
/**
* [CONTRACT]
* Use case для получения всех меток.
* @param itemRepository Репозиторий для работы с данными.
*/
class GetAllLabelsUseCase @Inject constructor(
private val itemRepository: ItemRepository
) {
/**
* [CONTRACT]
* Выполняет операцию получения всех меток.
* @return Возвращает список меток.
*/
suspend operator fun invoke(): List<LabelOut> {
// [ACTION]
return itemRepository.getAllLabels()
suspend operator fun invoke(): List<LabelOut>? {
return try {
itemRepository.getAllLabels()
} catch (e: Exception) {
// [ERROR_HANDLER] Просто возвращаем null.
null
}
}
}
// [END_FILE_GetAllLabelsUseCase.kt]

View File

@@ -1,29 +1,25 @@
// [PACKAGE] com.homebox.lens.domain.usecase
// [FILE] GetAllLocationsUseCase.kt
// [SEMANTICS] business_logic, use_case, location_retrieval
// [FILE] domain/src/main/java/com/homebox/lens/domain/usecase/GetAllLocationsUseCase.kt
// [SEMANTICS] domain, usecase, location, list
// [IMPORTS]
package com.homebox.lens.domain.usecase
import com.homebox.lens.domain.model.LocationOutCount
import com.homebox.lens.domain.repository.ItemRepository
import javax.inject.Inject
// [CORE-LOGIC]
/**
* [CONTRACT]
* Use case для получения всех местоположений.
* @param itemRepository Репозиторий для работы с данными.
*/
class GetAllLocationsUseCase @Inject constructor(
private val itemRepository: ItemRepository
) {
/**
* [CONTRACT]
* Выполняет операцию получения всех местоположений.
* @return Возвращает список местоположений со счетчиками.
*/
suspend operator fun invoke(): List<LocationOutCount> {
// [ACTION]
return itemRepository.getAllLocations()
suspend operator fun invoke(): List<LocationOutCount>? {
return try {
itemRepository.getAllLocations()
} catch (e: Exception) {
// [ERROR_HANDLER] Просто возвращаем null.
null
}
}
}
// [END_FILE_GetAllLocationsUseCase.kt]

View File

@@ -1,29 +1,25 @@
// [PACKAGE] com.homebox.lens.domain.usecase
// [FILE] GetStatisticsUseCase.kt
// [SEMANTICS] business_logic, use_case, statistics
// [FILE] domain/src/main/java/com/homebox/lens/domain/usecase/GetStatisticsUseCase.kt
// [SEMANTICS] domain, usecase, statistics
// [IMPORTS]
package com.homebox.lens.domain.usecase
import com.homebox.lens.domain.model.GroupStatistics
import com.homebox.lens.domain.repository.ItemRepository
import javax.inject.Inject
// [CORE-LOGIC]
/**
* [CONTRACT]
* Use case для получения статистики.
* @param itemRepository Репозиторий для работы с данными.
*/
class GetStatisticsUseCase @Inject constructor(
private val itemRepository: ItemRepository
) {
/**
* [CONTRACT]
* Выполняет операцию получения статистики.
* @return Возвращает объект со статистикой.
*/
suspend operator fun invoke(): GroupStatistics {
// [ACTION]
return itemRepository.getStatistics()
suspend operator fun invoke(): GroupStatistics? {
return try {
itemRepository.getStatistics()
} catch (e: Exception) {
// [ERROR_HANDLER] Просто возвращаем null, вызывающий слой обработает это.
null
}
}
}
// [END_FILE_GetStatisticsUseCase.kt]