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

2.5 KiB

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