Files
dbPrompt/AGENTS.md

2.6 KiB

AGENTS.md

Tento subor je prakticky navod pre AI agentov a contributorov v projekte dbPrompt.

1. Ciel projektu

dbPrompt je jednoducha web aplikacia na spustanie SQL dotazov nad MySQL s historiou vykonanych dopytov.

2. Struktura projektu

  • dbPrompt.go: backend server (Go, net/http), API endpointy aj praca s historiou.
  • index.html: cely frontend (HTML + CSS + JavaScript v jednom subore).
  • static/: staticke assety (napr. logo).
  • history/: JSON subory s historiou dopytov.
  • config.json: DB konfiguracia pre lokalny beh.
  • build.bat: build pre Windows/Linux binarky do dist/.

3. Lokalny beh a overenie

  1. Skontroluj config.json (lokalne MySQL udaje).
  2. Spust aplikaciu:
    • go run dbPrompt.go
  3. Otvor:
    • http://localhost:8080
  4. Pred odovzdanim zmien spusti:
    • go test ./...

Poznamka: V projekte aktualne nie su unit testy, ale go test ./... overi aspon build.

4. API kontrakt (nezlomit bez poziadavky)

  • GET /history/: vracia historiu ako JSON pole, zoradene od najstarsich.
  • POST /query: prijme { id, query }, vykona SQL, vrati QueryResult.
  • DELETE /history/{id}: zmaze jeden zaznam historie.

QueryResult klucove polia:

  • id, query, timestamp
  • duration (ms)
  • error alebo vysledok (columns, rows) alebo rowsAffected

Ak menis schema odpovede, zosulad backend aj frontend naraz.

5. Pravidla pre zmeny

  • Zachovaj jednoduchu architekturu (single-file backend + single-file frontend), pokial nie je explicitna poziadavka na refactor.
  • Preferuj male, cielene zmeny bez "cleanupu navyse".
  • Pri zmenach endpointov vzdy uprav aj frontend render a nacitanie historie.
  • Pri praci s cestami zachovaj sanitizaciu ID (filepath.Base) kvoli directory traversal.
  • Nezavadzaj nove zavislosti bez dovodu.

6. Bezpecnost a data

  • Nikdy necommituj realne prihlasovacie udaje do DB.
  • config.json je lokalny runtime subor; citlive hodnoty maskuj v ukazkach.
  • SQL sa vykonava priamo zo vstupu uzivatela. Ak by si pridaval funkcionalitu, zvaz oddelenie read-only rezimu alebo aspon jasne varovanie v UI.

7. Frontend poznamky

  • UI je event-delegated cez mainContainer.addEventListener('click', ...).
  • Historicke bloky maju tlacidlo Delete; "new-query-block" ho nema, kym query neuspesne/neuspesne neprebehne.
  • Collapsible tabulky pouzivaju .collapsible-header a .collapsible-content.

Pri zmenach vizualu zachovaj funkcnost:

  • run query
  • delete history item
  • load history po starte
  • collapse/expand individualne aj globalne

8. Definition of done pre kazdu upravu

  1. Zmena funguje funkcne v UI/API.
  2. go test ./... prejde.
  3. Nemas neplanovane zmeny mimo scope zadania.