64 lines
2.5 KiB
Markdown
64 lines
2.5 KiB
Markdown
# Krok 02 - Core Data Services (Úložisko)
|
|
|
|
## Kontext projektu
|
|
WebWizard ukladá všetky dáta (používatelia, projekty, súhlasy) do JSON súborov v priečinku `data/`. Je potrebné mať jednotnú službu, ktorá bude tieto operácie bezpečne vykonávať.
|
|
|
|
## Pred implementáciou si preštuduj
|
|
- `docs/architecture.md` - Sekcia 4 (Adresárová štruktúra) a 5 (Dátové súbory).
|
|
- `docs/prompts/step01.md` - Predpokladá sa vytvorená štruktúra.
|
|
|
|
## Cieľ
|
|
Implementovať triedu `FileStorage` v PHP, ktorá bude slúžiť ako hlavné rozhranie pre prácu s JSON súbormi v rámci systému.
|
|
|
|
## Požadované zmeny
|
|
1. Vytvorenie triedy `App\Services\FileStorage` v `src/Services/FileStorage.php`.
|
|
2. Implementácia metód pre:
|
|
- `put(string $path, array $data): bool` - Uloží pole ako JSON.
|
|
- `get(string $path): ?array` - Načíta JSON a vráti pole.
|
|
- `exists(string $path): bool` - Overí existenciu súboru.
|
|
- `delete(string $path): bool` - Vymaže súbor.
|
|
3. Pridanie ochrany proti "path traversal" (napr. použitie `realpath` alebo sanitizácia cesty, aby sa operácie obmedzili na priečinok `data/`).
|
|
|
|
## Implementačné pravidlá
|
|
- Používaj `json_encode` s `JSON_PRETTY_PRINT` pre lepšiu čitateľnosť súborov.
|
|
- Zabezpeč ošetrenie chýb pri čítaní/zápise (napr. neexistujúci súbor, neplatný JSON).
|
|
- Trieda musí byť v namespace `App\Services`.
|
|
|
|
## Súbory ktoré je potrebné vytvoriť
|
|
- `src/Services/FileStorage.php`
|
|
|
|
## Súbory ktoré je potrebné upraviť
|
|
Žiadne.
|
|
|
|
## API a dátové štruktúry
|
|
Metódy triedy `FileStorage` pracujú s asociatívnymi poľami PHP.
|
|
|
|
## Frontend požiadavky
|
|
Nerelevantné.
|
|
|
|
## Backend požiadavky
|
|
- PHP 8.2.
|
|
- Prístupové práva na zápis do `data/`.
|
|
|
|
## Testovací scenár
|
|
1. Vytvor testovací skript, ktorý vytvorí inštanciu `FileStorage`.
|
|
2. Skús uložiť pole `['test' => 123]` do `users/test.json`.
|
|
3. Over, či súbor existuje a obsahuje správny JSON.
|
|
4. Skús načítať dáta zo súboru.
|
|
5. Skús zadať cestu s `../` a over, či služba vyhodí výnimku alebo chybu (path traversal protection).
|
|
|
|
## Definition of Done
|
|
- Trieda `FileStorage` je funkčná a otestovaná.
|
|
- Ukladanie a načítavanie JSON dát funguje bezpečne.
|
|
- Path traversal ochrana je implementovaná.
|
|
|
|
## Obmedzenia
|
|
- Nepoužívaj žiadnu externú DB knižnicu.
|
|
- Všetky cesty musia byť relatívne k base path projektu alebo striktne v `data/`.
|
|
|
|
## Výstup
|
|
- zoznam vytvorených súborov
|
|
- zoznam upravených súborov
|
|
- stručné zhrnutie vykonaných zmien
|
|
- prípadné otvorené problémy
|