# 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.