====== Runbook: DSN upravljanje ======
**Trajanje:** ~10 minuta \\
**Uloga:** Gateway-Operator \\
**Preduvjet:** appsettings.json pristup
DSN (Data Source Name) definira unaprijed definirane veze s bazom podataka.
----
===== Tijek rada =====
flowchart TD
A[DSN zahtjev] --> B{Nova ili postojeca?}
B -->|Nova| C[appsettings.json urediti]
B -->|Postojeca| D[Vezu testirati]
C --> E[Gateway ponovno pokrenuti]
E --> D
D --> F{Test uspjesan?}
F -->|Da| G[Dokumentirati]
F -->|Ne| H[Connection String provjeriti]
H --> C
style G fill:#e8f5e9
style H fill:#ffebee
----
===== 1. Postojece DSN prikazati =====
# Sve konfigurirane DSN ispisati (API)
curl -s http://localhost:5000/api/v1/dsn | jq
# Ili direktno u Configu provjeriti
cat appsettings.json | jq '.Gateway.Databases'
----
===== 2. Novu DSN dodati =====
**appsettings.json urediti:**
{
"Gateway": {
"Databases": {
"demo": {
"Provider": "sqlite",
"ConnectionString": "Data Source=data/demo.db"
},
"produktion": {
"Provider": "sqlserver",
"ConnectionString": "Server=sql01;Database=ProdDB;User Id=app;Password=***;TrustServerCertificate=True"
},
"reporting": {
"Provider": "postgresql",
"ConnectionString": "Host=pg01;Database=reports;Username=reader;Password=***"
}
}
}
}
**Podrzani Provideri:**
| Provider | ConnectionString primjer |
|----------|---------------------------|
| ''sqlserver'' | ''Server=host;Database=db;User Id=user;Password=pwd'' |
| ''sqlite'' | ''Data Source=path/file.db'' |
| ''postgresql'' | ''Host=host;Database=db;Username=user;Password=pwd'' |
| ''mysql'' | ''Server=host;Database=db;User=user;Password=pwd'' |
----
===== 3. Gateway ponovno pokrenuti =====
# Windows
Stop-Process -Name "WvdS.WebAPI.Data.Gateway.Api" -Force
Start-Process -FilePath ".\WvdS.WebAPI.Data.Gateway.Api.exe"
# Linux (systemd)
sudo systemctl restart data-gateway
----
===== 4. DSN testirati =====
# Tablice nove DSN ispisati
curl -s http://localhost:5000/api/v1/dsn/produktion/tables | jq
# Prve podatke dohvatiti
curl -s "http://localhost:5000/api/v1/dsn/produktion/tables/Customers?\$top=5" | jq
----
===== 5. DSN ukloniti =====
- DSN unos iz ''appsettings.json'' obrisati
- Gateway ponovno pokrenuti
- Provjeriti da DSN vise nije dostupna:
curl -s http://localhost:5000/api/v1/dsn/alte_dsn/tables
# Ocekivani odgovor: 404 Not Found
----
===== Kontrolna lista =====
| # | Provjera | Da/Ne |
|---|-----------|---|
| 1 | Provider ispravan (sqlserver/sqlite/...) | - |
| 2 | Connection String valjan | - |
| 3 | Lozinka nije vidljiva u logu | - |
| 4 | Gateway ponovno pokrenut | - |
| 5 | API test uspjesan | - |
----
===== Rjesavanje problema =====
| Problem | Uzrok | Rjesenje |
|---------|---------|--------|
| ''Database not found'' | Pogresna baza podataka | Ime baze provjeriti |
| ''Login failed'' | Pogresna lozinka | Credentiale provjeriti |
| ''Connection refused'' | Firewall blokira | Port 1433/5432/3306 otvoriti |
| ''Provider not supported'' | Pogresan Provider-name | sqlserver, sqlite, postgresql, mysql |
| ''JSON parse error'' | Sintaksna greska | JSON validirati (jsonlint.com) |
----
===== Sigurnosne napomene =====
**Lozinke nikad ne logirati u cistom tekstu!**
Koristite varijable okruzenja za Credentiale:
"ConnectionString": "Server=sql01;Database=ProdDB;User Id=${DB_USER};Password=${DB_PASS}"
----
===== Povezani runbookovi =====
* [[.:server-starten|Server pokrenuti]] - Nakon Config promjene
* [[.:health-check|Health Check]] - Vezu provjeriti
* [[..:..:administrator:konfiguration:datenbanken|Konfiguracija baze podataka]] - Detaljna referenca
----
<< [[.:server-starten|<- Server pokrenuti]] | [[.:health-check|-> Health Check]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional//
{{tag>operator runbook dsn datenbank konfiguration}}