Datenbank von SQLite auf Postgres umgestellt

Verbindung über KVER_DSN; Tabelle user heißt jetzt account (reserviertes
Wort in Postgres). kver import-sqlite übernimmt die alte Datei einmalig in
einer Transaktion.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TiXsPUqw7oeomZ8wZrQW5q
This commit is contained in:
irrlicht
2026-09-26 22:22:07 +02:00
co-authored by Claude Opus 5.5
parent c6ab082f8c
commit 2714fdb1a5
15 changed files with 412 additions and 301 deletions
+28 -5
View File
@@ -1,25 +1,48 @@
package main
import (
"database/sql"
"encoding/json"
"fmt"
"net/http"
"net/http/cookiejar"
"net/http/httptest"
"net/url"
"path/filepath"
"os"
"strings"
"testing"
"time"
"unicode/utf8"
)
// newTestServer richtet eine frische, isolierte DB (eigene Datei je Test) und
// einen httptest-Server mit dem echten Routing ein.
// newTestServer richtet ein frisches, isoliertes Schema (eigenes je Test) in der
// Datenbank aus KVER_TEST_DSN und einen httptest-Server mit dem echten Routing
// ein. Ohne KVER_TEST_DSN werden die Tests übersprungen.
func newTestServer(t *testing.T) *httptest.Server {
t.Helper()
dsn := filepath.Join(t.TempDir(), "test.db")
if err := initDB(dsn); err != nil {
base := os.Getenv("KVER_TEST_DSN")
if base == "" {
t.Skip("KVER_TEST_DSN nicht gesetzt")
}
admin, err := sql.Open("pgx", base)
if err != nil {
t.Fatal(err)
}
schema := fmt.Sprintf("test_%d", time.Now().UnixNano())
if _, err := admin.Exec(`CREATE SCHEMA ` + schema); err != nil {
t.Fatalf("schema anlegen: %v", err)
}
t.Cleanup(func() {
admin.Exec(`DROP SCHEMA ` + schema + ` CASCADE`)
admin.Close()
})
sep := "?"
if strings.Contains(base, "?") {
sep = "&"
}
if err := initDB(base + sep + "search_path=" + schema); err != nil {
t.Fatalf("initDB: %v", err)
}
t.Cleanup(func() { db.Close() })