ReportDataManager

class ReportDataManager(val reportStructure: ReportStructure) : KoinComponent

Manager odpowiedzialny za budowanie zapytań SQL i pobieranie danych dla raportów.

ReportDataManager:

  • Buduje dynamiczne zapytania SQL na podstawie filtrów, sortowania i wyszukiwania

  • Zarządza paginacją (oblicza całkowitą liczbę elementów)

  • Łączy różne typy filtrów w spójne klauzule WHERE

  • Obsługuje globalne wyszukiwanie po wszystkich kolumnach

  • Wykorzystuje DataFetcher do bezpiecznego wykonywania zapytań

Proces pobierania danych:

  1. Buduje klauzulę WHERE na podstawie filtrów i wyszukiwania

  2. Wykonuje zapytanie COUNT dla paginacji

  3. Jeśli są dane, wykonuje zapytanie główne z LIMIT/OFFSET

  4. Zwraca wyniki w bezpiecznej otoczce ReportDataResult

Parameters

reportStructure

Definicja struktury raportu z zapytaniem bazowym i kolumnami.

Constructors

Link copied to clipboard
constructor(reportStructure: ReportStructure)

Properties

Link copied to clipboard
val dataAccess: DataAccess
Link copied to clipboard

Functions

Link copied to clipboard
private fun buildFilterClause(reportState: ReportState): QueryFragment
Link copied to clipboard
private fun buildOrderClause(reportState: ReportState): String
Link copied to clipboard
Link copied to clipboard
open fun getKoin(): Koin
Link copied to clipboard
private fun <T : FilterData> getQueryFragment(columnName: String, filter: Filter<T>, data: FilterData): QueryFragment?
Link copied to clipboard
private fun updatePagination(reportState: ReportState, sourceSql: String, filterClause: String, params: Map<String, Any?>): DataResult<ReportPaginationState>