feat: introduce database as a persistent storage for settings and history
refactor: arrange persistence layer as a port-adapter schema
This commit is contained in:
38 files changed
+539
-269
No files matched your search
@@ -16,17 +16,21 @@ Wymagane zmienne środowiskowe (plik `.env`):
|
||||
| --------------- | ----------------------------------------------------------- |
|
||||
| `DISCORD_TOKEN` | Token bota Discord. |
|
||||
| `GUILD_ID` | Opcjonalnie - synchronizuje komendy tylko z jednym serwerem. |
|
||||
| `POSTGRES_PASSWORD` | Hasło użytkownika bazy; domyślnie `zyrarbot`, zalecana zmiana w `.env`. |
|
||||
| `POSTGRES_DB` / `POSTGRES_USER` | Opcjonalna nazwa bazy i użytkownika; domyślnie `zyrarbot`. |
|
||||
|
||||
Panel działa pod `http://localhost:8000` podczas uruchomienia lokalnego. W Dockerze
|
||||
jest dostępny pod `http://localhost` po wykonaniu `docker compose up --build`.
|
||||
|
||||
Panel obsługuje wiele serwerów Discorda. Wybór serwera w nagłówku przełącza jego
|
||||
osobną kolejkę, historię, bazę plików i ustawienia odtwarzania. Istniejące dane ze
|
||||
starego, wspólnego formatu są przypisywane do pierwszego użytego serwera.
|
||||
Historia jest zapisywana w osobnych plikach `config/history/<guild_id>.json`, a
|
||||
uploady w katalogach `uploads/<guild_id>/`.
|
||||
Ostatnia kolejka jest zapisywana w `config/queues/<guild_id>.json` przy zatrzymaniu
|
||||
lub rozłączeniu i może zostać przywrócona z widoku kolejki.
|
||||
osobną kolejkę, historię, bazę plików i ustawienia odtwarzania. Ustawienia, historia
|
||||
i migawki kolejek przechodzą przez porty persystencji, a PostgreSQL jest obecnym
|
||||
adapterem wybranym w korzeniu aplikacji. Baza działa jako usługa Compose, a jej dane
|
||||
trwale przechowuje wolumen `postgres_data`. Przy pierwszym uruchomieniu
|
||||
bot importuje istniejące pliki JSON z `config/` do bazy, a pliki źródłowe zostają
|
||||
na miejscu jako kopia. Starsze wspólne dane są przypisywane do pierwszego serwera,
|
||||
do którego bot należy. Uploady pozostają w
|
||||
katalogach `uploads/<guild_id>/`.
|
||||
|
||||
## Komendy Discorda
|
||||
|
||||
@@ -78,12 +82,15 @@ odpowiadające warstwom aplikacji:
|
||||
zyrarbot/
|
||||
├── settings.py Settings - konfiguracja ze zmiennych środowiskowych
|
||||
├── application.py Application - korzeń kompozycji, spina bota i API
|
||||
├── storage/ Warstwa trwałości (pliki JSON, katalog uploadów)
|
||||
│ ├── json_file_store.py JsonFileStore
|
||||
│ ├── guild_config_repository.py GuildConfigRepository
|
||||
│ ├── history_repository.py HistoryRepository
|
||||
│ ├── uploads_repository.py UploadsRepository
|
||||
│ └── upload_file_info.py UploadFileInfo
|
||||
├── storage/
|
||||
│ ├── ports/ GuildConfigRepository, HistoryRepository,
|
||||
│ │ QueueRepository, UploadsRepository, Persistence
|
||||
│ ├── adapters/
|
||||
│ │ ├── postgres/ PostgresGuildConfig, PostgresHistory, PostgresQueue,
|
||||
│ │ │ PostgresPersistence, PostgresDatabase
|
||||
│ │ ├── filesystem/ Adapter plików uploadu
|
||||
│ │ └── json/ Adapter plikowego magazynu JSON
|
||||
│ └── upload_file_info.py UploadFileInfo
|
||||
├── audio/ Pozyskiwanie dźwięku
|
||||
│ ├── ytdl_options.py YtdlOptions
|
||||
│ ├── ytdl_source.py YTDLSource
|
||||
|
||||
Reference in new issue
Block a user