Enhance CountryController with advanced filtering, sorting, and pagination. Refactor Gradle scripts with version catalogs, improve error code handling, and centralize query models in core-domain.

This commit is contained in:
2026-03-28 20:27:12 +01:00
parent 6ef1fd4ca6
commit f91b067b36
8 changed files with 212 additions and 53 deletions
@@ -13,4 +13,15 @@ object ErrorCodes {
val DATABASE_ERROR = ErrorCode("DATABASE_ERROR")
val TRANSACTION_ERROR = ErrorCode("TRANSACTION_ERROR")
val VALIDATION_ERROR = ErrorCode("VALIDATION_ERROR")
// Allgemeine API-/HTTP-nahe Fehlercodes zur Harmonisierung
val INVALID_ID = ErrorCode("INVALID_ID")
val NOT_FOUND = ErrorCode("NOT_FOUND")
val CREATION_FAILED = ErrorCode("CREATION_FAILED")
val UPDATE_FAILED = ErrorCode("UPDATE_FAILED")
val DELETE_FAILED = ErrorCode("DELETE_FAILED")
val CONFLICT = ErrorCode("CONFLICT")
val MISSING_PARAMETER = ErrorCode("MISSING_PARAMETER")
val INVALID_PARAMETER = ErrorCode("INVALID_PARAMETER")
val UNAUTHORIZED = ErrorCode("UNAUTHORIZED")
val FORBIDDEN = ErrorCode("FORBIDDEN")
}
@@ -0,0 +1,36 @@
package at.mocode.core.domain.model
import kotlinx.serialization.Serializable
/**
* Gemeinsame Query-Modelle für Filter, Sortierung und Pagination.
*/
@Serializable
enum class SortDirection { ASC, DESC }
@Serializable
data class SortParam(
val field: String,
val direction: SortDirection = SortDirection.ASC
)
@Serializable
data class PageRequest(
val page: PageNumber = PageNumber(0),
/**
* Wenn size == -1 oder unpaged == true, wird die Paginierung aufgehoben und alle Treffer geliefert.
*/
val size: Int = 20,
val sort: List<SortParam> = emptyList(),
val unpaged: Boolean = false
)
@Serializable
data class FilterParams(
val search: String? = null,
/**
* active: true = nur aktive (Default), false = nur inaktive, all = alle
*/
val active: String? = null
)