feat: backend core - auth, user, role, permission, device, webhook, monitoring, cache, repository, service, middleware, API handlers

This commit is contained in:
2026-04-02 11:19:50 +08:00
parent e59a77bc49
commit dcc1f186f8
298 changed files with 62603 additions and 0 deletions

47
internal/testdb/testdb.go Normal file
View File

@@ -0,0 +1,47 @@
// Package testdb provides a pure-Go SQLite helper for tests.
// It uses modernc.org/sqlite (CGO-free) via gorm.io/driver/sqlite's DriverName override.
package testdb
import (
"testing"
_ "modernc.org/sqlite" // 注册纯Go SQLite驱动驱动名 "sqlite"
gormsqlite "gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
// Open 使用 modernc.org/sqlite纯Go无需CGO打开内存测试数据库。
// 驱动名必须是 "sqlite"modernc 注册),而非 gorm 默认的 "sqlite3"mattn/CGO
func Open(t testing.TB) *gorm.DB {
t.Helper()
db, err := gorm.Open(gormsqlite.New(gormsqlite.Config{
DriverName: "sqlite",
DSN: "file::memory:?cache=shared&mode=memory",
}), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
})
if err != nil {
t.Skipf("跳过数据库测试SQLite不可用: %v", err)
}
return db
}
// OpenWith 使用自定义DSN
func OpenWith(t testing.TB, dsn string) *gorm.DB {
t.Helper()
db, err := gorm.Open(gormsqlite.New(gormsqlite.Config{
DriverName: "sqlite",
DSN: dsn,
}), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
})
if err != nil {
t.Skipf("跳过数据库测试SQLite不可用: %v", err)
}
return db
}