Complete foundational data layer with repository implementation
- Add GORM dependencies for SQLite and PostgreSQL - Create domain models (User, Session, File) with common errors - Implement repository interfaces and database layer with migrations - Update WebApp to bootstrap with database and repositories - Add comprehensive unit tests for repository methods - Update config structure to support multiple database drivers - Extend AGENTS.md with debugging principles and dependency rules
This commit is contained in:
@@ -22,7 +22,7 @@ func TestDefaults(t *testing.T) {
|
||||
{"server.host", cfg.Server.Host, "0.0.0.0"},
|
||||
{"server.port", cfg.Server.Port, 10086},
|
||||
{"database.driver", cfg.Database.Driver, "sqlite3"},
|
||||
{"database.path", cfg.Database.Path, "data/mygo.db"},
|
||||
{"database.sqlite.path", cfg.Database.SQLite.Path, "data/mygo.db"},
|
||||
{"storage.driver", cfg.Storage.Driver, "local"},
|
||||
{"storage.local.path", cfg.Storage.Local.Path, "data/files"},
|
||||
{"jwt.access_ttl", cfg.JWT.AccessTTL, "15m"},
|
||||
@@ -49,7 +49,8 @@ server:
|
||||
|
||||
database:
|
||||
driver: sqlite3
|
||||
path: /tmp/mygo.db
|
||||
sqlite:
|
||||
path: /tmp/mygo.db
|
||||
|
||||
storage:
|
||||
driver: local
|
||||
@@ -77,8 +78,8 @@ jwt:
|
||||
if cfg.Server.Port != 9090 {
|
||||
t.Errorf("server.port = %d, want %d", cfg.Server.Port, 9090)
|
||||
}
|
||||
if cfg.Database.Path != "/tmp/mygo.db" {
|
||||
t.Errorf("database.path = %q, want %q", cfg.Database.Path, "/tmp/mygo.db")
|
||||
if cfg.Database.SQLite.Path != "/tmp/mygo.db" {
|
||||
t.Errorf("database.sqlite.path = %q, want %q", cfg.Database.SQLite.Path, "/tmp/mygo.db")
|
||||
}
|
||||
if cfg.Storage.Local.Path != "/tmp/mygo-storage" {
|
||||
t.Errorf("storage.local.path = %q, want %q", cfg.Storage.Local.Path, "/tmp/mygo-storage")
|
||||
@@ -98,7 +99,7 @@ func TestEnvOverride(t *testing.T) {
|
||||
t.Setenv("MYGO_SERVER_PORT", "8080")
|
||||
t.Setenv("MYGO_SERVER_HOST", "192.168.1.1")
|
||||
t.Setenv("MYGO_JWT_SECRET", "env-secret")
|
||||
t.Setenv("MYGO_DATABASE_PATH", "/env/path/db.sqlite")
|
||||
t.Setenv("MYGO_DATABASE_SQLITE_PATH", "/env/path/db.sqlite")
|
||||
|
||||
v := New()
|
||||
cfg, err := Load(v, "")
|
||||
@@ -115,8 +116,8 @@ func TestEnvOverride(t *testing.T) {
|
||||
if cfg.JWT.Secret != "env-secret" {
|
||||
t.Errorf("jwt.secret = %q, want %q", cfg.JWT.Secret, "env-secret")
|
||||
}
|
||||
if cfg.Database.Path != "/env/path/db.sqlite" {
|
||||
t.Errorf("database.path = %q, want %q", cfg.Database.Path, "/env/path/db.sqlite")
|
||||
if cfg.Database.SQLite.Path != "/env/path/db.sqlite" {
|
||||
t.Errorf("database.sqlite.path = %q, want %q", cfg.Database.SQLite.Path, "/env/path/db.sqlite")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user