refactor(repository): 收敛 model/repository 分层为唯一持久化入口

将 OpenFlare 与平台业务的数据访问从 model 与 apps 直连迁入 repository,
model 仅保留实体与无 IO 规则;补充 code-check 架构守卫与开发规范。
This commit is contained in:
ryan
2026-07-24 17:00:17 +08:00
parent 23a5488203
commit 943818f7d4
184 changed files with 5592 additions and 4364 deletions
@@ -11,6 +11,8 @@ import (
"testing"
"time"
"github.com/Rain-kl/Wavelet/internal/repository"
db "github.com/Rain-kl/Wavelet/internal/infra/persistence"
"github.com/Rain-kl/Wavelet/internal/model"
"github.com/glebarez/sqlite"
@@ -32,7 +34,7 @@ func setupIPGroupSyncTestDB(t *testing.T) func() {
))
db.SetDB(sqliteDB)
resetAccessLogStore := model.SetAccessLogStoreForTest(model.NewMemoryAccessLogStore())
resetAccessLogStore := repository.SetAccessLogStoreForTest(repository.NewMemoryAccessLogStore())
return func() {
resetAccessLogStore()
db.SetDB(nil)
@@ -161,28 +163,28 @@ func TestListDueOpenFlareWAFIPGroups(t *testing.T) {
Name: "due auto", Type: wafIPGroupTypeAutomatic, Enabled: true,
IPList: "[]", AutoConfig: "{}", ExtIPs: "[]", NextSyncAt: &past,
}
require.NoError(t, model.CreateOpenFlareWAFIPGroup(ctx, dueAuto))
require.NoError(t, repository.CreateOpenFlareWAFIPGroup(ctx, dueAuto))
futureAuto := &model.OpenFlareWAFIPGroup{
Name: "future auto", Type: wafIPGroupTypeAutomatic, Enabled: true,
IPList: "[]", AutoConfig: "{}", ExtIPs: "[]", NextSyncAt: &future,
}
require.NoError(t, model.CreateOpenFlareWAFIPGroup(ctx, futureAuto))
require.NoError(t, repository.CreateOpenFlareWAFIPGroup(ctx, futureAuto))
dueSub := &model.OpenFlareWAFIPGroup{
Name: "due sub", Type: wafIPGroupTypeSubscription, Enabled: true,
IPList: "[]", AutoConfig: "{}", ExtIPs: "[]",
SubscriptionURL: "https://example.com/list", NextSyncAt: &past,
}
require.NoError(t, model.CreateOpenFlareWAFIPGroup(ctx, dueSub))
require.NoError(t, repository.CreateOpenFlareWAFIPGroup(ctx, dueSub))
manual := &model.OpenFlareWAFIPGroup{
Name: "manual", Type: wafIPGroupTypeManual, Enabled: true,
IPList: "[]", AutoConfig: "{}", ExtIPs: "[]", NextSyncAt: &past,
}
require.NoError(t, model.CreateOpenFlareWAFIPGroup(ctx, manual))
require.NoError(t, repository.CreateOpenFlareWAFIPGroup(ctx, manual))
groups, err := model.ListDueOpenFlareWAFIPGroups(ctx, time.Now().UTC())
groups, err := repository.ListDueOpenFlareWAFIPGroups(ctx, time.Now().UTC())
require.NoError(t, err)
require.Len(t, groups, 2)
ids := []uint{groups[0].ID, groups[1].ID}
@@ -207,7 +209,7 @@ func seedWAFAccessLogs(t *testing.T, ctx context.Context, loggedAt time.Time, re
StatusCode: statusCode,
})
}
require.NoError(t, model.InsertOpenFlareAccessLogsBatch(ctx, records))
require.NoError(t, repository.InsertOpenFlareAccessLogsBatch(ctx, records))
}
func TestParseIPGroupAutoConfigLookback(t *testing.T) {