Files
WebWizard/docs/prompts/step02.md
2026-06-12 12:54:10 +02:00

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