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:
co-authored by
Claude Opus 5.5
parent
c6ab082f8c
commit
2714fdb1a5
+28
-5
@@ -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() })
|
||||
|
||||
Reference in New Issue
Block a user