FeatureModule

interface FeatureModule

Interfejs reprezentujący kompletny, spójny moduł funkcjonalny ("Feature").

Każdy moduł w aplikacji (np. Asian Media, Games) implementuje ten interfejs, aby w jednym miejscu zadeklarować wszystkie swoje punkty integracji z główną aplikacją:

  • Zakładkę w UI (Tab)

  • Endpointy API (ApiModule)

  • Ekrany dostępne z zewnątrz (ScreenFactory)

  • Schemat bazy z własnymi migracjami

Implementacją jest object w pakiecie org.octavius. Główna aplikacja (desktop-app) sama znajduje takie obiekty na classpathie i konfiguruje na ich podstawie nawigację, serwer API, routing zdarzeń i migracje. Nigdzie nie trzeba ich dopisywać.

Properties

Link copied to clipboard
abstract val name: String

Nazwa modułu.

Link copied to clipboard
abstract val order: Int

Pozycja featura: mniejsza liczba stoi wcześniej. Wyznacza kolejność zakładek na pasku (pierwsza jest aktywna po starcie) i kolejność migracji schematów featurów. Odstępy co 10 zostawiają miejsce na feature wstawiony pomiędzy.

Link copied to clipboard
abstract val schema: String?

Schemat bazy, w którym feature trzyma swoje tabele, albo null, jeśli feature własnych tabel nie ma.

Functions

Link copied to clipboard
abstract fun getApiModules(): List<ApiModule>?

Zwraca listę modułów API, które ten feature chce zarejestrować w serwerze Ktor.

Link copied to clipboard

Zwraca listę fabryk ekranów, które mogą być tworzone na żądanie (np. przez API).

Link copied to clipboard
abstract fun getTab(): Tab?

Zwraca definicję zakładki UI dla tego modułu.