diff --git a/.agent/skills/cache-framework/SKILL.md b/.agent/skills/cache-framework/SKILL.md index cc4da7da..620409a4 100644 --- a/.agent/skills/cache-framework/SKILL.md +++ b/.agent/skills/cache-framework/SKILL.md @@ -125,7 +125,7 @@ func startThingCacheInvalidationListener() { | Auth Source | `repository/auth_source_cache.go` | Otter | Redis JSON | `oauth:auth_source_invalidation` ✅ | | OAuth 用户/Token | `apps/oauth/cache.go` | 自研 map | Redis JSON | ❌ 无 pub/sub(历史债) | | 推送渠道 | `repository/push_channel.go` | 无 | Redis JSON | ❌ 仅 Redis Del | -| Storage 驱动 | `internal/storage/storage.go` | RWMutex 快照 | — | `storage:config_invalidation` ✅ | +| Storage 驱动 | `internal/infra/objectstore/storage.go` | RWMutex 快照 | — | `storage:config_invalidation` ✅ | ## 新增缓存工作流 @@ -210,7 +210,7 @@ make code-check ## 相关文件 - L1 引擎:`pkg/cache/ram/cache.go` -- DB/Redis 助手:`internal/db/redis.go`(`GetJSON`, `SetJSON`, `HGetJSON`, `PrefixedKey`) +- DB/Redis 助手:`internal/infra/persistence/redis.go`(`GetJSON`, `SetJSON`, `HGetJSON`, `PrefixedKey`) - 金标准:`internal/repository/system_config_cache.go` - 上传元数据:`internal/apps/upload/cache/meta_cache.go` - Auth Source:`internal/repository/auth_source_cache.go` diff --git a/.agent/skills/clickhouse-batchwriter/SKILL.md b/.agent/skills/clickhouse-batchwriter/SKILL.md index a83c2120..5ae09a64 100644 --- a/.agent/skills/clickhouse-batchwriter/SKILL.md +++ b/.agent/skills/clickhouse-batchwriter/SKILL.md @@ -1,6 +1,6 @@ --- name: "clickhouse-batchwriter" -description: "Wavelet 项目专用:当新增或修改 ClickHouse 批量写入、接入 internal/db/batchwriter、将业务域异步 flush 到分析表、迁移 risk_control/节点访问日志/可观测时序写入、或评估 async_insert 与背压策略时必须使用。本技能指导分层职责、各域独立 Writer 实例、repository 批量 API 与禁止写法。" +description: "Wavelet 项目专用:当新增或修改 ClickHouse 批量写入、接入 internal/infra/persistence/batchwriter、将业务域异步 flush 到分析表、迁移 risk_control/节点访问日志/可观测时序写入、或评估 async_insert 与背压策略时必须使用。本技能指导分层职责、各域独立 Writer 实例、repository 批量 API 与禁止写法。" --- # ClickHouse 批量写入开发 @@ -13,13 +13,13 @@ DDL 与表结构变更见 `database-migration` 技能;本技能只覆盖**运 | 层级 | 路径 | 职责 | | :--- | :--- | :--- | -| 连接 | `internal/db/clickhouse.go` | `ChConn`(原生批量写)、`ChDB`(GORM 查询);禁止在业务包直接 `clickhouse.Open` | -| 批量框架 | `internal/db/batchwriter/` | 泛型队列 + 按条数/时间 flush + 非阻塞入队 + 优雅停机;**各业务域独立实例** | +| 连接 | `internal/infra/persistence/clickhouse.go` | `ChConn`(原生批量写)、`ChDB`(GORM 查询);禁止在业务包直接 `clickhouse.Open` | +| 批量框架 | `internal/infra/persistence/batchwriter/` | 泛型队列 + 按条数/时间 flush + 非阻塞入队 + 优雅停机;**各业务域独立实例** | | Model | `internal/model/analytics/` | 列定义、`TableName()`、`BatchInsertSQL()`(及可选 `InsertColumns()`) | | Repository | `internal/repository/analytics/` | `BatchInsert*` / `BatchInsertNodeAccessLogs` 等;`PrepareBatch` + 多行 `Append` + 一次 `Send` | | Apps | `internal/apps//` | 采集、入队、背压;`FlushFunc` 只调 repository,不写 SQL、不 `PrepareBatch` | -| 装配 | `internal/bootstrap/bootstrap.go` | 进程启动时调用 `Writer.Start`;初始化时需调用 `lifecycle.OnShutdown` 挂载停机钩子 | -| 生命周期 | `internal/lifecycle/lifecycle.go` | 统一协调全局并发优雅停机,业务包无需在 `bootstrap.go` 中硬编码 `Stop` 逻辑 | +| 装配 | `internal/platform/bootstrap/bootstrap.go` | 进程启动时调用 `Writer.Start`;初始化时需调用 `lifecycle.OnShutdown` 挂载停机钩子 | +| 生命周期 | `internal/platform/lifecycle/lifecycle.go` | 统一协调全局并发优雅停机,业务包无需在 `bootstrap.go` 中硬编码 `Stop` 逻辑 | **禁止**在 Handler / middleware 内直接 `db.ChConn.PrepareBatch`;**禁止**在 repository 内启动 goroutine 或维护全局 channel(队列生命周期由 apps + bootstrap 或专用 writer 包负责)。 @@ -68,7 +68,7 @@ writer.Stop(stopCtx) // close 队列 + drain + 最终 flush ## 新增 ClickHouse 写入工作流 1. **Model**:在 `internal/model/analytics/` 定义 struct 与 `BatchInsertSQL()`(列顺序与 goose DDL 一致)。 -2. **Goose DDL**:在 `internal/db/migrator/goose/clickhouse/` 新增迁移(见 `database-migration`)。 +2. **Goose DDL**:在 `internal/infra/persistence/migrator/goose/clickhouse/` 新增迁移(见 `database-migration`)。 3. **Repository**:实现 `BatchInsertX(ctx, []analyticsmodel.X) error`: - `len(items)==0` 直接返回 - `db.ChConn == nil` 返回明确错误 @@ -78,7 +78,7 @@ writer.Stop(stopCtx) // close 队列 + drain + 最终 flush - 业务路径 `TryEnqueue`;HTTP 背压用 `IsFull()` 5. **测试**: - repository:mock `ChConn` 验证 `BatchInsertSQL` 与 append 列数 - - batchwriter:`go test ./internal/db/batchwriter` + - batchwriter:`go test ./internal/infra/persistence/batchwriter` 6. 运行 `make code-check`;有 API 变更时 `make swagger`。 ## 背压与丢弃策略 @@ -110,7 +110,7 @@ var globalChan chan any ## async_insert(补充,非主方案) -可在 `internal/db/clickhouse.go` 的 `Settings` 增加服务端异步写入作为第二层防护: +可在 `internal/infra/persistence/clickhouse.go` 的 `Settings` 增加服务端异步写入作为第二层防护: ```go "async_insert": 1, @@ -122,7 +122,7 @@ var globalChan chan any ## Bootstrap 装配示例 ```go -// internal/bootstrap/bootstrap.go(示意) +// internal/platform/bootstrap/bootstrap.go(示意) var userAccessLogWriter *batchwriter.Writer[*analytics.UserAccessLog] func RegisterAPI(ctx context.Context) { @@ -141,7 +141,7 @@ func RegisterAPI(ctx context.Context) { ## 验证清单 ```bash -go test ./internal/db/batchwriter +go test ./internal/infra/persistence/batchwriter go test ./internal/repository/analytics make code-check ``` @@ -153,11 +153,11 @@ make code-check ## 相关文件速查 -- 框架:`internal/db/batchwriter/{config,writer,errs}.go` -- 连接:`internal/db/clickhouse.go` +- 框架:`internal/infra/persistence/batchwriter/{config,writer,errs}.go` +- 连接:`internal/infra/persistence/clickhouse.go` - 审计写入:`internal/apps/risk_control/logics.go` - OpenFlare 写入胶水:`internal/apps/openflare/chwriter/writer.go` - 节点访问日志 repository:`internal/repository/analytics/node_access_log_writer.go` - 可观测 repository:`internal/repository/analytics/node_observability_writer.go` -- 生命周期管理器:`internal/lifecycle/lifecycle.go` -- Bootstrap:`internal/bootstrap/bootstrap.go` \ No newline at end of file +- 生命周期管理器:`internal/platform/lifecycle/lifecycle.go` +- Bootstrap:`internal/platform/bootstrap/bootstrap.go` \ No newline at end of file diff --git a/.agent/skills/database-migration/SKILL.md b/.agent/skills/database-migration/SKILL.md index 43852c7b..238aaafd 100644 --- a/.agent/skills/database-migration/SKILL.md +++ b/.agent/skills/database-migration/SKILL.md @@ -1,17 +1,17 @@ --- name: "database-migration" -description: "Wavelet 项目专用:当新增或修改数据库表结构、索引、初始化数据、系统配置 seed、模板 seed、默认管理员、goose SQL 迁移、internal/db/migrator、ClickHouse 分析库 DDL 或数据库升级流程时必须使用。本技能指导在 internal/db/migrator/goose 下编写 PostgreSQL/SQLite 双方言 SQL 迁移,以及在 goose/clickhouse 下编写 ClickHouse 单方言分析表迁移,并完成验证。" +description: "Wavelet 项目专用:当新增或修改数据库表结构、索引、初始化数据、系统配置 seed、模板 seed、默认管理员、goose SQL 迁移、internal/infra/persistence/migrator、ClickHouse 分析库 DDL 或数据库升级流程时必须使用。本技能指导在 internal/infra/persistence/migrator/goose 下编写 PostgreSQL/SQLite 双方言 SQL 迁移,以及在 goose/clickhouse 下编写 ClickHouse 单方言分析表迁移,并完成验证。" --- # Wavelet 数据库升级操作指南 -Wavelet 使用 `github.com/pressly/goose/v3` 执行 SQL 迁移。迁移入口是 `internal/db/migrator.Migrate()`,SQL 文件嵌入在二进制中。 +Wavelet 使用 `github.com/pressly/goose/v3` 执行 SQL 迁移。迁移入口是 `internal/infra/persistence/migrator.Migrate()`,SQL 文件嵌入在二进制中。 ## 基本规则 - SQL 迁移文件放在: - - `internal/db/migrator/goose/postgres/` - - `internal/db/migrator/goose/sqlite/` + - `internal/infra/persistence/migrator/goose/postgres/` + - `internal/infra/persistence/migrator/goose/sqlite/` - PostgreSQL 和 SQLite 必须使用同一个版本号、同一个语义文件名。 - 迁移文件使用 goose SQL 标记: @@ -51,7 +51,7 @@ Wavelet 使用 `github.com/pressly/goose/v3` 执行 SQL 迁移。迁移入口是 7. 至少运行: ```bash -go test ./internal/db/migrator +go test ./internal/infra/persistence/migrator go test ./internal/model ./internal/apps/config ./internal/apps/admin/system_config make code-check ``` @@ -89,10 +89,10 @@ ClickHouse 是**辅助 OLAP 存储**,与 PostgreSQL/SQLite 主库**完全独 | 路径 | 职责 | | :--- | :--- | -| `internal/db/migrator/goose/clickhouse/` | **唯一** ClickHouse DDL 来源(goose SQL,嵌入二进制) | +| `internal/infra/persistence/migrator/goose/clickhouse/` | **唯一** ClickHouse DDL 来源(goose SQL,嵌入二进制) | | `internal/model/analytics/` | 分析表 Go model,列名须与 goose DDL 一致 | | `internal/repository/analytics/` | 所有 ClickHouse 读写(批量写入、查询、聚合) | -| `internal/db/clickhouse.go` | 连接初始化(`ChConn` 原生批量、`ChDB` GORM 查询) | +| `internal/infra/persistence/clickhouse.go` | 连接初始化(`ChConn` 原生批量、`ChDB` GORM 查询) | ### 迁移入口与版本表 @@ -116,16 +116,16 @@ ClickHouse 是**辅助 OLAP 存储**,与 PostgreSQL/SQLite 主库**完全独 按以下顺序落地,避免列名或类型漂移: 1. **Model**:在 `internal/model/analytics/` 定义 struct,`gorm:"column:..."` 与 DDL 列名一一对应;实现 `TableName()`,批量写入表可提供 `InsertColumns()` / `BatchInsertSQL()`。 -2. **Goose SQL**:在 `internal/db/migrator/goose/clickhouse/` 新增递增版本文件(格式同主库,如 `YYYYMMDDNNNN_create_xxx.sql`),编写 `-- +goose Up` / `-- +goose Down`。 +2. **Goose SQL**:在 `internal/infra/persistence/migrator/goose/clickhouse/` 新增递增版本文件(格式同主库,如 `YYYYMMDDNNNN_create_xxx.sql`),编写 `-- +goose Up` / `-- +goose Down`。 3. **Repository**:在 `internal/repository/analytics/` 实现 `BatchInsert*`(`db.ChConn` 一次 `PrepareBatch` + 多行 `Append` + 一次 `Send`)与查询(`db.ChDB`);连接未初始化时返回明确错误,**不要**在 handler 写 SQL,**不要**在 repository 内维护 channel/goroutine。 -4. **Apps**:在 `internal/apps//` 编排采集与入队;高频写入通过 `internal/db/batchwriter` 各域独立实例异步 flush(详见 `clickhouse-batchwriter` 技能),`FlushFunc` 只调 repository `BatchInsert*`;管理端统计 API 只读 repository,不触达 DDL。 +4. **Apps**:在 `internal/apps//` 编排采集与入队;高频写入通过 `internal/infra/persistence/batchwriter` 各域独立实例异步 flush(详见 `clickhouse-batchwriter` 技能),`FlushFunc` 只调 repository `BatchInsert*`;管理端统计 API 只读 repository,不触达 DDL。 ### ClickHouse 验证 至少运行: ```bash -go test ./internal/db/migrator +go test ./internal/infra/persistence/migrator go test ./internal/repository/analytics make code-check ``` diff --git a/.agent/skills/file-upload/SKILL.md b/.agent/skills/file-upload/SKILL.md index e0ec144e..a2d5aae3 100644 --- a/.agent/skills/file-upload/SKILL.md +++ b/.agent/skills/file-upload/SKILL.md @@ -15,7 +15,7 @@ Wavelet 将「对象存储」与「上传业务」分为两层,**禁止混用 | 层级 | 包路径 | 职责 | 业务是否直接调用 | | :--- | :--- | :--- | :--- | -| **对象存储引擎** | `internal/storage` | `Backend` 接口:`Put` / `Get` / `Delete` / `Test`;按配置切换 Local / S3 / R2 / OSS / WebDAV | **禁止**(仅 upload 域内部使用) | +| **对象存储引擎** | `internal/infra/objectstore` | `Backend` 接口:`Put` / `Get` / `Delete` / `Test`;按配置切换 Local / S3 / R2 / OSS / WebDAV | **禁止**(仅 upload 域内部使用) | | **上传域服务** | `internal/apps/upload` | `w_uploads` 记录、权限、秒传、统计、文件服务、`upload.Ingest` | **必须** | | **上传 HTTP 入口** | `internal/apps/upload/handler` | `POST /api/v1/upload` 等 multipart 接口 | 前端 / 用户侧上传 | | **文件访问** | `internal/apps/upload/filesrv` | `GET /f/:id` 流式响应、访问控制、图片 WebP 压缩 | 展示 / 下载 | diff --git a/.agent/skills/new-api/SKILL.md b/.agent/skills/new-api/SKILL.md index 6d829fba..38034e18 100644 --- a/.agent/skills/new-api/SKILL.md +++ b/.agent/skills/new-api/SKILL.md @@ -115,19 +115,19 @@ internal/ ## 核心开发步骤 (Step-by-Step Flow) ### 步骤 1:数据库定义与迁移 -如果自定义功能涉及新表或字段,请参考 [database-migration](../database-migration/SKILL.md) 技能,在 `internal/db/migrator/goose/` 目录下编写迁移文件并在 `internal/model/` 中定义 GORM 数据模型。 +如果自定义功能涉及新表或字段,请参考 [database-migration](../database-migration/SKILL.md) 技能,在 `internal/infra/persistence/migrator/goose/` 目录下编写迁移文件并在 `internal/model/` 中定义 GORM 数据模型。 ### 步骤 2:在模块内实现业务逻辑 (`logics.go` / `service.go`) 业务逻辑逻辑应当实现于 `internal/apps/custom/` 目录下: - **优先使用纯函数(`logics.go`)**:定义接收 `context.Context` 且不依赖 `*gin.Context` 的函数,易于单元测试与 Worker 复用。参考 `internal/apps/user/logics.go`。 - **有状态服务(`service.go`)**:若需注入依赖(如 DB 连接、外部客户端等),可定义 Service 结构体和构造函数。 -- **跨模块副作用(推送、任务监听等)**:核心业务代码通过 `internal/listener` 发射域事件,禁止直接 `import` push 模块;装配在 `internal/bootstrap` 完成(参见 `push-notification` skill)。 +- **跨模块副作用(推送、任务监听等)**:核心业务代码通过 `internal/listener` 发射域事件,禁止直接 `import` push 模块;装配在 `internal/platform/bootstrap` 完成(参见 `push-notification` skill)。 ### 步骤 3:编写 HTTP Handler (`routers.go`) 在 `internal/apps/custom/routers.go` 中编写 Handler: - 负责请求参数绑定与校验(使用 `ShouldBindJSON`/`ShouldBindQuery`)。 - 负责提取 Session / 用户身份。 -- 调用业务逻辑层,并使用 `github.com/Rain-kl/Wavelet/internal/common/response` 统一返回响应: +- 调用业务逻辑层,并使用 `github.com/Rain-kl/Wavelet/internal/shared/response` 统一返回响应: - 成功时返回:`response.OK(data)` 或 `response.OKNil()` - 失败时返回:`response.Err(msg)` - 编写规范的 Swagger 注释。 diff --git a/.agent/skills/new-async-task/SKILL.md b/.agent/skills/new-async-task/SKILL.md index 99f2b42e..c59e5268 100644 --- a/.agent/skills/new-async-task/SKILL.md +++ b/.agent/skills/new-async-task/SKILL.md @@ -11,13 +11,13 @@ description: "Wavelet 项目专用:新增或修改 Asynq 异步任务、后台 按任务范围检查当前实现: -- `internal/task/handler.go`:`TaskHandler`、`TaskResult`、`PayloadValidator` -- `internal/task/meta.go`:`TaskMeta`、`TaskParam` -- `internal/task/executor.go`:下发、执行、日志、重试、`OnTaskCompleted` 订阅 -- `internal/task/handlers/register.go`:Handler 和元数据注册(由 bootstrap 调用) -- `internal/bootstrap/bootstrap.go`:任务注册与进程级装配入口 -- `internal/task/worker/worker.go`:Worker 路由和队列 -- `internal/task/scheduler/scheduler.go`:定时调度 +- `internal/infra/task/handler.go`:`TaskHandler`、`TaskResult`、`PayloadValidator` +- `internal/infra/task/meta.go`:`TaskMeta`、`TaskParam` +- `internal/infra/task/executor.go`:下发、执行、日志、重试、`OnTaskCompleted` 订阅 +- `internal/infra/task/handlers/register.go`:Handler 和元数据注册(由 bootstrap 调用) +- `internal/platform/bootstrap/bootstrap.go`:任务注册与进程级装配入口 +- `internal/infra/task/worker/worker.go`:Worker 路由和队列 +- `internal/infra/task/scheduler/scheduler.go`:定时调度 - `internal/apps/admin/task/routers.go`:Admin 任务 API - `internal/model/task_execution.go`:执行记录和日志持久化 @@ -46,7 +46,7 @@ description: "Wavelet 项目专用:新增或修改 Asynq 异步任务、后台 ### 注册 -- 在 `internal/task/handlers/register.go` 同时注册 Handler 和 `TaskMeta`。 +- 在 `internal/infra/task/handlers/register.go` 同时注册 Handler 和 `TaskMeta`。 - 不要在其他位置单独注册任务。 - **禁止**在业务包 `routers.go` 或 `init()` 中调用 `task.RegisterHandler`;统一由 `bootstrap.RegisterTasks()` → `taskhandlers.Register()` 在进程启动时装配。 - 任务完成钩子(如 push 通知)通过 `task.OnTaskCompleted` 注册,在 `bootstrap.RegisterTaskListeners()` 中装配(Worker/`all` 进程)。 @@ -92,7 +92,7 @@ description: "Wavelet 项目专用:新增或修改 Asynq 异步任务、后台 - `Retryable=true` - `RetryCount < MaxRetry` - 修改重试行为时同时检查: - - `internal/task/executor.go` + - `internal/infra/task/executor.go` - `internal/model/task_execution.go` - `internal/apps/admin/task/routers.go` - 前端任务执行列表 diff --git a/.agent/skills/new-async-task/references/CODE-EXAMPLES.md b/.agent/skills/new-async-task/references/CODE-EXAMPLES.md index ffa77c0f..718d4b3b 100644 --- a/.agent/skills/new-async-task/references/CODE-EXAMPLES.md +++ b/.agent/skills/new-async-task/references/CODE-EXAMPLES.md @@ -10,7 +10,7 @@ package upload import ( - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/infra/task" ) // 异步任务类型标识。格式建议为 "{module}:{action}"。 @@ -83,7 +83,7 @@ package upload import ( "context" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/infra/task" ) type CleanupUnusedUploadsHandler struct{} @@ -114,7 +114,7 @@ import ( "fmt" "strings" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/infra/task" ) type SendEmailPayload struct { @@ -163,7 +163,7 @@ func (h *SendEmailHandler) Execute(ctx context.Context, payload []byte) (*task.T ## 统一注册 -在 `internal/task/handlers/register.go` 注册。Admin dispatch 的 `ValidateAndNormalizePayload` 和 Worker 执行都依赖这里。 +在 `internal/infra/task/handlers/register.go` 注册。Admin dispatch 的 `ValidateAndNormalizePayload` 和 Worker 执行都依赖这里。 ```go package handlers @@ -171,7 +171,7 @@ package handlers import ( "github.com/Rain-kl/Wavelet/internal/apps/upload" "github.com/Rain-kl/Wavelet/internal/apps/user" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/infra/task" ) func Register() { @@ -184,7 +184,7 @@ func Register() { 系统默认的定时任务必须通过 Goose SQL 迁移初始化插入到 `schedules` 表。 -在 `internal/db/migrator/goose/postgres` 下的示例: +在 `internal/infra/persistence/migrator/goose/postgres` 下的示例: ```sql -- +goose Up @@ -274,4 +274,4 @@ func TestDispatchTaskValidatesPayload(t *testing.T) { } ``` -需要 Redis/Asynq 时优先复用项目现有测试模式;没有现成依赖时可用 `miniredis` 初始化 `task.AsynqClient`。不要把 `internal/task` 依赖塞进通用 testhelper 造成 import cycle。 +需要 Redis/Asynq 时优先复用项目现有测试模式;没有现成依赖时可用 `miniredis` 初始化 `task.AsynqClient`。不要把 `internal/infra/task` 依赖塞进通用 testhelper 造成 import cycle。 diff --git a/.agent/skills/new-setting/SKILL.md b/.agent/skills/new-setting/SKILL.md index 34c4c80b..99b9d60e 100644 --- a/.agent/skills/new-setting/SKILL.md +++ b/.agent/skills/new-setting/SKILL.md @@ -31,8 +31,8 @@ Wavelet 当前有两套设置入口: 修改前快速查看这些文件,确认当前实现没有漂移: - `internal/model/system_configs.go`: 配置 key 常量、`SystemConfig` 模型、`GetByKey`、`GetBoolByKey`、`GetIntByKey`、`GetDecimalByKey` 等读取方法。 -- `internal/db/migrator/goose/postgres/*.sql` 和 `internal/db/migrator/goose/sqlite/*.sql`: `system_configs` 表结构、初始化 seed、后续升级迁移。 -- `internal/db/migrator/migrator.go`: goose 迁移入口和 PostgreSQL/SQLite 方言选择。 +- `internal/infra/persistence/migrator/goose/postgres/*.sql` 和 `internal/infra/persistence/migrator/goose/sqlite/*.sql`: `system_configs` 表结构、初始化 seed、后续升级迁移。 +- `internal/infra/persistence/migrator/migrator.go`: goose 迁移入口和 PostgreSQL/SQLite 方言选择。 - `internal/testhelper/test_helper.go`: Go 测试用默认系统配置 seed。 - `internal/apps/admin/system_config/routers.go`: `/api/v1/admin/system-configs` 参数表 API。 - `internal/apps/config/routers.go`: `/api/v1/config/public` 公共配置响应。 @@ -52,7 +52,7 @@ Wavelet 当前有两套设置入口: - 值仍存为字符串;布尔值用 `"true"` / `"false"`,数值用十进制字符串,复杂结构用 JSON 字符串。 2. 初始化默认配置。 - - 如果修改初始 schema,必须同步 `internal/db/migrator/goose/postgres/` 和 `internal/db/migrator/goose/sqlite/` 中的 goose SQL。 + - 如果修改初始 schema,必须同步 `internal/infra/persistence/migrator/goose/postgres/` 和 `internal/infra/persistence/migrator/goose/sqlite/` 中的 goose SQL。 - 既有库新增配置时,新增一组时间戳递增的双 SQL 迁移文件,分别放在 PostgreSQL 和 SQLite 目录;不要回到 GORM AutoMigrate 或 Go 代码 seed。 - 新库初始化也需要包含同一个默认 key:当前初始 seed 在 `202606090001_initial_schema.sql` 的 `INSERT INTO system_configs (...) VALUES ... ON CONFLICT (key) DO NOTHING`。 - 设置正确的 `Type`:只能是 `"system"` 或 `"business"`。 @@ -62,7 +62,7 @@ Wavelet 当前有两套设置入口: 3. 读取配置。 - 后端业务代码优先使用 `model.GetBoolByKey`、`model.GetIntByKey`、`model.GetDecimalByKey` 或 `SystemConfig.GetByKey`。 - - 运行时可热更新的规则不要放进 `config.Config`;启动时设置才走 `internal/config/model.go` 和 `config.example.yaml`。 + - 运行时可热更新的规则不要放进 `config.Config`;启动时设置才走 `internal/infra/config/model.go` 和 `config.example.yaml`。 - 不要在 handler 或业务代码里直接读 `os.Getenv()`。 4. 如果前端需要未登录或全局消费,暴露为公共可见配置。 @@ -89,7 +89,7 @@ Wavelet 当前有两套设置入口: 只有在配置必须随进程启动确定、不能或不应热更新时,才走启动时设置。 -1. 在 `internal/config/model.go` 添加配置字段。 +1. 在 `internal/infra/config/model.go` 添加配置字段。 2. 在 `config.example.yaml` 添加示例值和说明。 3. 确认 Viper 现有加载逻辑能绑定该字段;需要环境变量时沿用当前命名和绑定方式。 4. 运行时代码从 `config.Config.
.` 读取。 diff --git a/.agent/skills/push-notification/SKILL.md b/.agent/skills/push-notification/SKILL.md index 4e4e0f12..4de0cccb 100644 --- a/.agent/skills/push-notification/SKILL.md +++ b/.agent/skills/push-notification/SKILL.md @@ -19,7 +19,7 @@ Wavelet 的消息推送机制采用了**元数据驱动 + 统一触发器 + 异 | **`internal/apps/admin/push/`** | 通知服务与后台任务层 | 包含以下核心文件:
1. [events.go](file:///Users/ryan/DEV/Go/Wavelet/internal/apps/admin/push/events.go):定义通知事件的结构模型(`NotificationMessage`, `EventMetadata`)、内置事件的动态注册中心(`BuiltInEvents` 及 `RegisterBuiltInEvent` 函数)以及统一触发器类 `EventTrigger`(包括其底层的派发引擎逻辑)。
2. [tasks.go](file:///Users/ryan/DEV/Go/Wavelet/internal/apps/admin/push/tasks.go):定义 Asynq 后台异步发送任务、处理器 `PushHandler` 及其校验逻辑,并记录推送历史审计。
3. [routers.go](file:///Users/ryan/DEV/Go/Wavelet/internal/apps/admin/push/routers.go):管理端接口,负责获取事件配置列表和更新配置。 | | **`internal/apps/admin/push/custom_events/`** | 自定义通知事件包 | 事件元数据定义与 push 侧处理逻辑;**一个 Go 文件代表一个事件**。在 [register.go](file:///Users/ryan/DEV/Go/Wavelet/internal/apps/admin/push/custom_events/register.go) 统一装配,禁止 `init()` 副作用。 | | **`internal/listener/`** | 域事件分发层 | 核心域发射事件(如 `EmitAdminLoggedIn`),push 在 bootstrap 阶段通过 `OnAdminLoggedIn` 订阅,避免 auth/user 直接依赖 push。 | -| **`internal/bootstrap/`** | 应用装配根 | `RegisterPushDomainEvents()` 调用 `custom_events.Register()`;`Init` 中执行 `SyncEvents` 将内置事件元数据同步到数据库。 | +| **`internal/platform/bootstrap/`** | 应用装配根 | `RegisterPushDomainEvents()` 调用 `custom_events.Register()`;`Init` 中执行 `SyncEvents` 将内置事件元数据同步到数据库。 | | **数据库审计表** | 状态与历史审计 | `w_push_events` 存放每个通知事件的启用状态、启用渠道、发送目标和自定义渲染模板。
`w_push_histories` 存放消息发送记录用于审计。 | --- @@ -168,4 +168,4 @@ func Register(c *gin.Context) { ### 3. 禁止 init() 与 router 副作用注册 (Explicit Bootstrap) - 不得在 `init()` 中调用 `RegisterBuiltInEvent` 或订阅 listener。 - 不得在 `router.go` 空白导入 `custom_events` 触发注册。 -- 统一在 `internal/bootstrap` + `internal/cmd` 入口显式装配。 +- 统一在 `internal/platform/bootstrap` + `internal/cmd` 入口显式装配。 diff --git a/AGENTS.md b/AGENTS.md index b05374cf..7a6c5b63 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -40,7 +40,7 @@ | `new-async-task` | 添加或修改 Asynq 任务、定时任务、TaskHandler、任务元数据 | | `new-setting` | 添加或修改系统/业务/公开设置、`/admin/system` 参数或 `/admin/settings` 图形化设置 | | `database-migration` | 数据库表结构变更、goose SQL 迁移(PG/SQLite/ClickHouse)、seed 数据 | -| `clickhouse-batchwriter` | ClickHouse 批量写入、`internal/db/batchwriter` 接入、分析表异步 flush、背压与写入路径改造 | +| `clickhouse-batchwriter` | ClickHouse 批量写入、`internal/infra/persistence/batchwriter` 接入、分析表异步 flush、背压与写入路径改造 | | `file-upload` | 业务上传文件、Worker 程序化摄取、`upload.Ingest` 策略选型、文件访问与 `w_uploads` / 统计排查 | | `cache-framework` | 新增或修改业务缓存(RAM/Redis/DB 三层读路径)、缓存失效、多节点 pub/sub 同步、评估高频读是否应接入缓存 | | `push-notification` | 系统通知推送事件、统一触发器投递、带消息推送的业务功能 | @@ -59,7 +59,7 @@ - 在完成代码开发后或者 git 提交前必须运行 `make format` 格式化代码。 - 需要缓存或文件管理能力时,必须复用现有平台实现,禁止在业务包中自行创建缓存目录、直接管理缓存文件或重复封装存储后端。 - 文件摄取必须通过 `upload.Ingest`(`upload.PolicyCreate` / `PolicyDedupNewRecord` / `PolicyResolveExisting`);删除必须通过 `upload.Remove` 或 `upload.RemoveOwned`。禁止业务模块直接调用 `repository.CreateUpload` / `repository.SoftDeleteUpload`,禁止 `db.Create(&model.Upload{})` 旁路写 `w_uploads`。 -- 禁止在 `init()` 中注册跨模块集成(任务 Handler、推送内置事件、域事件监听器、任务完成钩子)。统一通过 `internal/bootstrap` 在 `internal/cmd` 入口显式装配。 +- 禁止在 `init()` 中注册跨模块集成(任务 Handler、推送内置事件、域事件监听器、任务完成钩子)。统一通过 `internal/platform/bootstrap` 在 `internal/cmd` 入口显式装配。 - `internal/router/router.go` 的 `Serve()` 仅负责 HTTP 路由与中间件,禁止在其中执行 `SyncEvents`、`InitLogWriter` 等进程级运行时初始化。 - 核心业务模块(如 `oauth`、`user`)禁止直接 `import` `internal/apps/admin/push` 或 `custom_events` 触发通知;应通过 `internal/listener` 发射域事件,由 push 模块在 bootstrap 阶段订阅。 - 编写依赖任务注册或推送事件同步的测试时,必须在测试 setup 中显式调用 `bootstrap.RegisterTasks()`、`bootstrap.RegisterPushDomainEvents()` 等,不得依赖 `init()` 副作用。 @@ -110,17 +110,17 @@ 后端目录: - `internal/cmd/`:用于 API、worker、scheduler、root init 的 Cobra 命令。进程启动时在此调用 `bootstrap.Register*` 与 `bootstrap.Init`,再启动 router / worker / scheduler。 -- `internal/bootstrap/`:应用装配根(composition root)。集中注册任务 Handler、推送域事件订阅、任务完成监听器,并执行 `SyncEvents`、ClickHouse 访问日志写入等进程级初始化;所有注册函数使用 `sync.Once` 保证幂等。 -- `internal/config/`:Viper 加载和配置结构体。运行时代码应使用 `config.Config.
.`。 +- `internal/platform/bootstrap/`:应用装配根(composition root)。集中注册任务 Handler、推送域事件订阅、任务完成监听器,并执行 `SyncEvents`、ClickHouse 访问日志写入等进程级初始化;所有注册函数使用 `sync.Once` 保证幂等。 +- `internal/infra/config/`:Viper 加载和配置结构体。运行时代码应使用 `config.Config.
.`。 - `internal/router/`:唯一的 HTTP 路由注册点。 - `internal/apps/`:按功能(Feature-based)组织的 HTTP Handler、中间件、内部服务与模块逻辑。移除全局 service 层,模块内部业务逻辑(如验证码业务逻辑管理器 `internal/apps/cap/manager.go`)均收敛于各自模块中;管理端模块位于 `internal/apps/admin/`。 - `internal/apps/upload/`:上传记录、文件访问控制、本地/S3 文件响应、下载及图片 WebP 压缩。业务应复用 `upload.Ingest` / `upload.Remove` 与 `GET /f/:id` 文件服务,不直接操作底层 storage 或旁路写 `w_uploads`。 - `internal/model/`:GORM 实体和模型级业务方法。 -- `internal/db/`:PostgreSQL、Redis、ClickHouse、GORM 日志、ID 生成和 goose SQL 迁移的布线。 -- `internal/diskcache/`:平台级磁盘字节缓存,通过 `diskcache.GetGlobalCache()` 提供 TTL、最大空间限制、LRU 淘汰、清空、状态统计和配置热更新。写入时使用 `DefaultExpiration`(全局默认 TTL)、正数 `time.Duration`(业务 TTL)或 `NoExpiration`(无 TTL,仍受空间限制和 LRU 淘汰)。 -- `internal/storage/`:S3 兼容对象存储适配,提供对象上传、读取、删除、CDN/代理读取及远端对象本地缓存。 -- `internal/task/`:Asynq 任务框架;参见 `new-async-task` 了解变更。 -- `internal/common/`:共享的通用模型及响应(如 `internal/common/response`)、绑定(bind)、常量以及通用错误。 +- `internal/infra/persistence/`:PostgreSQL、Redis、ClickHouse、GORM 日志、ID 生成和 goose SQL 迁移的布线。 +- `internal/infra/diskcache/`:平台级磁盘字节缓存,通过 `diskcache.GetGlobalCache()` 提供 TTL、最大空间限制、LRU 淘汰、清空、状态统计和配置热更新。写入时使用 `DefaultExpiration`(全局默认 TTL)、正数 `time.Duration`(业务 TTL)或 `NoExpiration`(无 TTL,仍受空间限制和 LRU 淘汰)。 +- `internal/infra/objectstore/`:S3 兼容对象存储适配,提供对象上传、读取、删除、CDN/代理读取及远端对象本地缓存。 +- `internal/infra/task/`:Asynq 任务框架;参见 `new-async-task` 了解变更。 +- `internal/shared/`:共享的通用模型及响应(如 `internal/shared/response`)、绑定(bind)、常量以及通用错误。 - `internal/util/`:纯底层工具包,无任何 HTTP/数据库框架依赖。 - `internal/listener/`:域事件分发层。核心域(auth、user 等)在此定义并发射事件(如 `EmitAdminLoggedIn`);运维模块(push、webhook 等)在 bootstrap 阶段订阅,实现跨模块解耦。 - `internal/otel_trace/`:链路追踪(tracing)助手。 @@ -187,7 +187,7 @@ Handler 规范: ```go import ( "net/http" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) @@ -202,7 +202,7 @@ c.JSON(http.StatusOK, response.OKNil()) 失败时**禁止**在 Handler / 中间件中直接调用 `c.JSON(..., response.Err(msg))`,也**禁止**用 HTTP `200` 携带非空 `error_msg` 表示失败。 -统一通过 `internal/common/response` 的 **Abort 系列函数**中断请求。这些函数会将 `*response.APIError` 挂载到 Gin 的 `c.Errors` 链并 `c.Abort()`;请求结束后由全局 `response.ErrorHandlerMiddleware()`(在 `internal/router/middlewares.go` 中注册)统一写出 JSON,并记录到 OpenTelemetry Trace/Jaeger。 +统一通过 `internal/shared/response` 的 **Abort 系列函数**中断请求。这些函数会将 `*response.APIError` 挂载到 Gin 的 `c.Errors` 链并 `c.Abort()`;请求结束后由全局 `response.ErrorHandlerMiddleware()`(在 `internal/router/middlewares.go` 中注册)统一写出 JSON,并记录到 OpenTelemetry Trace/Jaeger。 **推荐使用的便捷函数(优先于手写状态码):** @@ -287,7 +287,7 @@ func doSomething(c *gin.Context) { response.AbortBadRequest(c, "...") } 应用装配与跨模块集成: -- 新增跨模块副作用(任务注册、推送订阅、后台监听器)时,在 `internal/bootstrap/bootstrap.go` 增加 `Register*` 函数,并在对应 `internal/cmd/*.go` 入口调用;参考现有 `RegisterAPI` / `RegisterWorker` / `RegisterAll` 分工。 +- 新增跨模块副作用(任务注册、推送订阅、后台监听器)时,在 `internal/platform/bootstrap/bootstrap.go` 增加 `Register*` 函数,并在对应 `internal/cmd/*.go` 入口调用;参考现有 `RegisterAPI` / `RegisterWorker` / `RegisterAll` 分工。 - `bootstrap.Init` 必须在 `RegisterPushDomainEvents()` 之后调用(API/`all` 模式),以确保 `SyncEvents` 能同步内置推送事件元数据。 - Handler 与业务逻辑分离:HTTP Handler 负责绑定与响应;可复用逻辑放入 `logics.go`(接受 `context.Context`,不依赖 `*gin.Context`),便于 Worker 与单元测试复用。参考 `internal/apps/user/logics.go`。 @@ -300,14 +300,14 @@ func doSomething(c *gin.Context) { response.AbortBadRequest(c, "...") } 配置管理: - 运行时代码从 `config.Config` 中读取配置,绝对不要直接从 `os.Getenv()` 中读取。 -- 当添加配置时,同时更新 `config.example.yaml` and `internal/config/model.go`。 +- 当添加配置时,同时更新 `config.example.yaml` and `internal/infra/config/model.go`。 数据库操作: - 简单查询可以直接从 model 层使用 GORM。 - 管理员代码应首选 `db.DB(ctx)` 以获得链路追踪感知的 DB 访问。 - 不要在 Handler 中放置复杂的 SQL;将其移至 `internal/model/` 或模块内的业务服务层(如 `internal/apps//service.go` 或 `logics.go`)。 -- 在 `internal/db/migrator/goose/` 下使用 goose SQL 迁移;不要添加基于 GORM AutoMigrate 的 Schema 升级。 +- 在 `internal/infra/persistence/migrator/goose/` 下使用 goose SQL 迁移;不要添加基于 GORM AutoMigrate 的 Schema 升级。 - 不要创建物理数据库外键。改为关系字段添加显式索引。 - 数据库默认值必须与 Go 模型零值(`nil`、`0`、`false`、`""`)匹配,以避免意外的插入。 diff --git a/config.example.yaml b/config.example.yaml index 2f91aa11..c774a9e4 100644 --- a/config.example.yaml +++ b/config.example.yaml @@ -114,4 +114,4 @@ clickhouse: dial_timeout: 5 block_buffer_size: 32 # rows buffered per block; 32 is enough for our batch sizes # Runtime client also enables async_insert (wait_for_async_insert=1, busy_timeout≈2s) - # in internal/db/clickhouse.go — not configured via YAML. + # in internal/infra/persistence/clickhouse.go — not configured via YAML. diff --git a/docs/design/index.md b/docs/design/index.md index 7ad3e985..ffb78642 100644 --- a/docs/design/index.md +++ b/docs/design/index.md @@ -88,18 +88,18 @@ OpenFlare 已收敛为**单 monorepo**(Go 模块 `github.com/Rain-kl/Wavelet` | --- | --- | | `main.go` | Server 启动入口 | | `internal/cmd/` | Cobra 子命令:`api`、`worker`、`scheduler`、`all`(默认融合模式) | -| `internal/bootstrap/` | 跨模块装配:任务 Handler、推送域事件、进程级初始化 | +| `internal/platform/bootstrap/` | 跨模块装配:任务 Handler、推送域事件、进程级初始化 | | `internal/router/` | HTTP 路由注册与全局中间件 | | `internal/router/v1/openflare/` | OpenFlare 路由注册器(`register_*.go`) | | `internal/apps/openflare/` | OpenFlare 控制面业务域(`routers.go` + `logics.go`) | | `internal/apps/{admin,user,oauth,upload,cap,...}/` | Wavelet 平台能力(用户、认证、任务、推送等) | | `internal/apps/openflare/{agent,relay,flared}/` | **Server 侧**边缘协议处理器(鉴权、心跳、WS) | | `internal/model/` | GORM 实体(`openflare_*.go` + 平台模型) | -| `internal/db/migrator/goose/` | goose SQL 迁移(PostgreSQL / SQLite / ClickHouse) | +| `internal/infra/persistence/migrator/goose/` | goose SQL 迁移(PostgreSQL / SQLite / ClickHouse) | | `internal/repository/` | 平台域数据访问层 | -| `internal/task/` | Asynq 异步任务(Worker + Scheduler) | -| `internal/config/` | Viper 配置加载 | -| `internal/common/` | 统一 API 响应封装(`response/`) | +| `internal/infra/task/` | Asynq 异步任务(Worker + Scheduler) | +| `internal/infra/config/` | Viper 配置加载 | +| `internal/shared/` | 统一 API 响应封装(`response/`) | | `pkg/protocol/` | Relay / Tunnel 共享 HTTP/WS 协议结构 | | `pkg/render/`、`pkg/geoip/`、`pkg/wsclient/` | OpenResty 配置渲染、GeoIP、WebSocket 客户端 | diff --git a/docs/design/zone-design.md b/docs/design/zone-design.md index 2f314870..2193982e 100644 --- a/docs/design/zone-design.md +++ b/docs/design/zone-design.md @@ -90,7 +90,7 @@ WAF、Pages、上游与发布版本仍属于 `proxy_routes`。Zone 概览只聚 * 持久化:域名与证书只存在于 `of_zone_domains`;`of_proxy_routes` 仅保存路由策略(上游、缓存、限流、WAF 绑定键等)。 * 渲染:配置快照在内存中组装临时 `Domains` / `DomainCertIDs` 供 OpenResty 渲染,不写回数据库。 -* 结构迁移仅使用 `internal/db/migrator/goose/{postgres,sqlite}/*.sql`;启动时自动导入历史域名,第二阶段后旧列不存在则为空操作。 +* 结构迁移仅使用 `internal/infra/persistence/migrator/goose/{postgres,sqlite}/*.sql`;启动时自动导入历史域名,第二阶段后旧列不存在则为空操作。 ## 验证 diff --git a/docs/plan/20260712-zone-domain-refactor.md b/docs/plan/20260712-zone-domain-refactor.md index e3403068..3e5a6368 100644 --- a/docs/plan/20260712-zone-domain-refactor.md +++ b/docs/plan/20260712-zone-domain-refactor.md @@ -25,7 +25,7 @@ | 路径 | 职责 | | --- | --- | -| `internal/db/migrator/goose/{postgres,sqlite}/202607120001_create_zone_domain_tables.sql` | 第一阶段 Zone/ZoneDomain DDL 与索引。 | +| `internal/infra/persistence/migrator/goose/{postgres,sqlite}/202607120001_create_zone_domain_tables.sql` | 第一阶段 Zone/ZoneDomain DDL 与索引。 | | `internal/model/openflare_zone.go` | Zone、ZoneDomain 模型及数据访问。 | | `internal/apps/openflare/zone/{logics.go,routers.go,errs.go,legacy_import.go}` | Zone CRUD、概览、输入验证和历史导入。 | | `internal/cmd/migrate_zones.go` | 显式、可重复运行的历史 Zone 数据导入命令。 | @@ -36,17 +36,17 @@ | `frontend/vitest.config.ts`、`frontend/tests/zone/*.test.tsx` | Zone 页面与域名选择器的最小前端测试运行环境。 | | `frontend/app/(main)/websites/*` | Zone 列表、`[zoneId]` 动态详情页和局部组件。 | | `frontend/app/(main)/proxy-routes/*` | Zone 域名选择器替换旧域名/证书编辑器。 | -| `internal/db/migrator/goose/{postgres,sqlite}/202607130001_drop_legacy_route_domain_columns.sql` | 第二阶段删除旧表、列与索引。 | +| `internal/infra/persistence/migrator/goose/{postgres,sqlite}/202607130001_drop_legacy_route_domain_columns.sql` | 第二阶段删除旧表、列与索引。 | ### Task 1: 第一阶段 Schema、模型与迁移测试 **Files:** -- Create: `internal/db/migrator/goose/postgres/202607120001_create_zone_domain_tables.sql` -- Create: `internal/db/migrator/goose/sqlite/202607120001_create_zone_domain_tables.sql` +- Create: `internal/infra/persistence/migrator/goose/postgres/202607120001_create_zone_domain_tables.sql` +- Create: `internal/infra/persistence/migrator/goose/sqlite/202607120001_create_zone_domain_tables.sql` - Create: `internal/model/openflare_zone.go` - Create: `internal/model/openflare_zone_test.go` - Modify: `internal/model/openflare_proxy_route.go` -- Test: `internal/db/migrator/migrator_test.go` +- Test: `internal/infra/persistence/migrator/migrator_test.go` **Interfaces:** - Produces: `model.Zone`, `model.ZoneDomain`, `ListZoneDomainsByRouteID(ctx, routeID)`, `ReplaceZoneDomainRouteBindings(ctx, routeID, domainIDs)`. @@ -60,7 +60,7 @@ func TestReplaceZoneDomainRouteBindingsRejectsForeignDomain(t *testing.T) { } ``` -Run: `go test ./internal/model ./internal/db/migrator -run 'Zone|Migrat' -count=1` +Run: `go test ./internal/model ./internal/infra/persistence/migrator -run 'Zone|Migrat' -count=1` Expected: FAIL,因为 Zone 模型和 goose 文件尚不存在。 @@ -107,14 +107,14 @@ func ReplaceZoneDomainRouteBindings(ctx context.Context, routeID uint, domainIDs - [x] **Step 4: 运行模型与迁移测试** -Run: `go test ./internal/model ./internal/db/migrator -run 'Zone|Migrat' -count=1` +Run: `go test ./internal/model ./internal/infra/persistence/migrator -run 'Zone|Migrat' -count=1` Expected: PASS,空 SQLite 库可应用迁移,唯一域名和绑定排他性受保护。 - [x] **Step 5: Commit** ```bash -git add internal/db/migrator/goose internal/model +git add internal/infra/persistence/migrator/goose internal/model git commit -m "feat(zone): add normalized zone domain schema" ``` @@ -448,8 +448,8 @@ git commit -m "docs(zone): add migration and release verification guide" **Precondition:** 已在生产环境完成 Task 7 的导入、预览对比和至少一次发布/回滚验证;`migrate-zones` 报告无冲突。 **Files:** -- Create: `internal/db/migrator/goose/postgres/202607130001_drop_legacy_route_domain_columns.sql` -- Create: `internal/db/migrator/goose/sqlite/202607130001_drop_legacy_route_domain_columns.sql` +- Create: `internal/infra/persistence/migrator/goose/postgres/202607130001_drop_legacy_route_domain_columns.sql` +- Create: `internal/infra/persistence/migrator/goose/sqlite/202607130001_drop_legacy_route_domain_columns.sql` - Delete: `internal/model/openflare_managed_domain.go` - Delete: `internal/apps/openflare/tls/managed_domain.go` - Delete: `internal/apps/openflare/tls/helpers.go` 中仅用于旧路由证书数组的函数 @@ -473,14 +473,14 @@ PostgreSQL 删除旧唯一索引和 `domain`、`domains`、`cert_id`、`cert_ids - [x] **Step 4: 验证升级和完整回归** -Run: `go test ./internal/db/migrator ./internal/model ./internal/apps/openflare/... ./pkg/render/openresty -count=1 && make code-check` +Run: `go test ./internal/infra/persistence/migrator ./internal/model ./internal/apps/openflare/... ./pkg/render/openresty -count=1 && make code-check` Expected: PASS;全仓搜索不再发现旧 `ManagedDomain` 业务代码、`ProxyRoute` 持久化字段或管理端 API;渲染快照中的临时 `DomainCertIDs` 类型允许保留。 - [x] **Step 5: Commit** ```bash -git add internal/db/migrator internal/model internal/apps frontend docs +git add internal/infra/persistence/migrator internal/model internal/apps frontend docs git commit -m "refactor(zone): remove legacy route domain storage" ``` diff --git a/docs/plan/20260713-waf-orchestration.md b/docs/plan/20260713-waf-orchestration.md index d3bbfd46..5b832759 100644 --- a/docs/plan/20260713-waf-orchestration.md +++ b/docs/plan/20260713-waf-orchestration.md @@ -65,10 +65,10 @@ flowchart LR ### Task 1: 数据库迁移与持久化模型 **Files:** -- Create: `internal/db/migrator/goose/postgres/202607150001_orchestrate_waf_rules.sql` -- Create: `internal/db/migrator/goose/sqlite/202607150001_orchestrate_waf_rules.sql` -- Create: `internal/db/migrator/goose/postgres/202607150002_reset_waf_rule_graphs.sql` -- Create: `internal/db/migrator/goose/sqlite/202607150002_reset_waf_rule_graphs.sql` +- Create: `internal/infra/persistence/migrator/goose/postgres/202607150001_orchestrate_waf_rules.sql` +- Create: `internal/infra/persistence/migrator/goose/sqlite/202607150001_orchestrate_waf_rules.sql` +- Create: `internal/infra/persistence/migrator/goose/postgres/202607150002_reset_waf_rule_graphs.sql` +- Create: `internal/infra/persistence/migrator/goose/sqlite/202607150002_reset_waf_rule_graphs.sql` - Modify: `internal/model/openflare_waf.go` - Create: `internal/model/openflare_waf_graph_test.go` @@ -115,7 +115,7 @@ func UpdateOpenFlareWAFRuleGraph(ctx context.Context, id uint, revision uint64, - [ ] **Step 5: 运行测试并提交** -Run: `go test ./internal/model ./internal/db/migrator/... -count=1` +Run: `go test ./internal/model ./internal/infra/persistence/migrator/... -count=1` Expected: PASS。 @@ -571,8 +571,8 @@ Commit: `refactor(frontend): order waf bindings and remove legacy editor` ### Task 11: 旧后端字段清理、Swagger、中文文档与端到端验证 **Files:** -- Create: `internal/db/migrator/goose/postgres/202607150003_drop_legacy_waf_rule_fields.sql` -- Create: `internal/db/migrator/goose/sqlite/202607150003_drop_legacy_waf_rule_fields.sql` +- Create: `internal/infra/persistence/migrator/goose/postgres/202607150003_drop_legacy_waf_rule_fields.sql` +- Create: `internal/infra/persistence/migrator/goose/sqlite/202607150003_drop_legacy_waf_rule_fields.sql` - Modify: `internal/model/openflare_waf.go` - Modify: `internal/apps/openflare/waf/logics_test.go` - Modify: `docs/design/waf-design.md` diff --git a/docs/plan/20260718-observability-ch-migrate-runbook.md b/docs/plan/20260718-observability-ch-migrate-runbook.md index 61e63929..7ee38f22 100644 --- a/docs/plan/20260718-observability-ch-migrate-runbook.md +++ b/docs/plan/20260718-observability-ch-migrate-runbook.md @@ -37,7 +37,7 @@ make run # 以项目实际入口为准 clickhouse-client --host 127.0.0.1 --port 9000 \ --user default --password "$CLICKHOUSE_PASSWORD" \ --database openflare \ - --multiquery < internal/db/migrator/goose/clickhouse/202607180003_backfill_access_log_hourly.sql + --multiquery < internal/infra/persistence/migrator/goose/clickhouse/202607180003_backfill_access_log_hourly.sql ``` (goose 文件含 `+goose Up` 注释,若 client 报错可去掉注释行后执行 INSERT 主体。) diff --git a/docs/plan/20260719-http-default-rate-limit.md b/docs/plan/20260719-http-default-rate-limit.md index 9140ef87..c2966122 100644 --- a/docs/plan/20260719-http-default-rate-limit.md +++ b/docs/plan/20260719-http-default-rate-limit.md @@ -23,7 +23,7 @@ | 文件 | 职责 | |------|------| | `internal/model/system_configs.go` | 三个 ConfigKey 常量 | -| `internal/db/migrator/goose/{postgres,sqlite}/202607190001_add_openresty_default_rate_limits.sql` | seed 默认值 | +| `internal/infra/persistence/migrator/goose/{postgres,sqlite}/202607190001_add_openresty_default_rate_limits.sql` | seed 默认值 | | `internal/apps/openflare/option/openresty_validators.go` + `validate.go` | 全局默认校验 | | `internal/apps/openflare/config_version/snapshot.go` | 快照字段 + 读取 | | `internal/apps/openflare/config_version/logics.go` | option diff keys | @@ -273,8 +273,8 @@ git commit -m "feat(openresty): merge global default limits at route render" **Files:** - Modify: `internal/model/system_configs.go` -- Create: `internal/db/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql` -- Create: `internal/db/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql` +- Create: `internal/infra/persistence/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql` +- Create: `internal/infra/persistence/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql` - Modify: `internal/apps/openflare/option/validate.go` - Modify: `internal/apps/openflare/option/openresty_validators.go` - Modify: `internal/apps/openflare/config_version/snapshot.go` @@ -407,8 +407,8 @@ Expected: PASS ```bash git add internal/model/system_configs.go \ - internal/db/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql \ - internal/db/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql \ + internal/infra/persistence/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql \ + internal/infra/persistence/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql \ internal/apps/openflare/option/validate.go \ internal/apps/openflare/option/openresty_validators.go \ internal/apps/openflare/config_version/snapshot.go \ diff --git a/docs/plan/20260719-pages-source-sync-v2.md b/docs/plan/20260719-pages-source-sync-v2.md index 237eaa80..09fe265f 100644 --- a/docs/plan/20260719-pages-source-sync-v2.md +++ b/docs/plan/20260719-pages-source-sync-v2.md @@ -396,7 +396,7 @@ PostgreSQL 与 SQLite 均创建同语义的部分唯一索引。禁止用空字 | `of_pages_source_scan` | `openflare:pages_source_scan` | 恢复过期 lease/orphan record;串行检查一批到期 GitHub latest source;必要时投递 sync action | | `of_pages_source_action` | `openflare:pages_source_action` | 执行管理员 check/sync 或 scanner 触发的 sync | -两者都在 `internal/task/handlers/register.go` 显式注册 Handler 与 TaskMeta。现有 `bootstrap.RegisterTasks()` 已覆盖 API、worker、scheduler 和 all 入口,不新增 `init()`,也不修改 `internal/router/router.go`、`internal/bootstrap/bootstrap.go` 或 `internal/cmd` 的装配职责。 +两者都在 `internal/infra/task/handlers/register.go` 显式注册 Handler 与 TaskMeta。现有 `bootstrap.RegisterTasks()` 已覆盖 API、worker、scheduler 和 all 入口,不新增 `init()`,也不修改 `internal/router/router.go`、`internal/platform/bootstrap/bootstrap.go` 或 `internal/cmd` 的装配职责。 两类任务都标记为 `TaskMeta.InternalOnly=true`。通用 Admin Task 类型列表、手工 dispatch 与 schedule 创建/更新必须隐藏或拒绝 internal-only meta;scheduler 与 Pages 内部 dispatch 仍使用完整 registry。这样客户端不能绕过 Pages Handler 自行伪造 `source_id`、`config_version` 或 `actor`。 @@ -1103,7 +1103,7 @@ scanner TaskResult 和结构化日志至少记录: * 注册 5 条 source 路由;不在顶层 router 直接挂业务 Handler。 -#### [MODIFY] `internal/task/handlers/register.go` +#### [MODIFY] `internal/infra/task/handlers/register.go` * 显式注册 scanner/action Handler 与 TaskMeta。 @@ -1143,13 +1143,13 @@ scanner TaskResult 和结构化日志至少记录: #### [NEW] PostgreSQL -* `internal/db/migrator/goose/postgres/202607190002_add_pages_source_runtime.sql` -* `internal/db/migrator/goose/postgres/202607190003_seed_pages_source_scan.sql` +* `internal/infra/persistence/migrator/goose/postgres/202607190002_add_pages_source_runtime.sql` +* `internal/infra/persistence/migrator/goose/postgres/202607190003_seed_pages_source_scan.sql` #### [NEW] SQLite -* `internal/db/migrator/goose/sqlite/202607190002_add_pages_source_runtime.sql` -* `internal/db/migrator/goose/sqlite/202607190003_seed_pages_source_scan.sql` +* `internal/infra/persistence/migrator/goose/sqlite/202607190002_add_pages_source_runtime.sql` +* `internal/infra/persistence/migrator/goose/sqlite/202607190003_seed_pages_source_scan.sql` 版本号若已被其它分支占用,实施时只顺延编号,不改变 DDL/DML 拆分。 @@ -1257,7 +1257,7 @@ API 实现后运行 `make swagger` 更新 `docs/docs.go`、`docs/swagger.json` 建议: ```bash -go test ./internal/db/migrator ./internal/model +go test ./internal/infra/persistence/migrator ./internal/model ``` ### 4.2 source、Provider 与 API @@ -1482,7 +1482,7 @@ make code-check * Pages、Agent、GitHub Release integration、归档、上传和迁移相关 Go 定向测试通过;关键并发路径的 race 测试通过。 * SQLite Pages source 与 scanner schedule migration 的 Up/Down/Up 通过。 * 前端 Pages 四个测试文件共 34 条用例全部通过,相关 TypeScript 与 ESLint 检查通过。 -* 全仓 Go 测试中 `internal/apps/openflare/pages`、`internal/apps/openflare/agent`、`internal/integration/githubrelease`、`internal/db/migrator`、`internal/apps/upload/*` 与 `pkg/pagesarchive` 均通过。 +* 全仓 Go 测试中 `internal/apps/openflare/pages`、`internal/apps/openflare/agent`、`internal/integration/githubrelease`、`internal/infra/persistence/migrator`、`internal/apps/upload/*` 与 `pkg/pagesarchive` 均通过。 ### 7.3 全仓测试中仍存在的范围外失败 diff --git a/docs/plan/clickhouse-cpu-optimization.md b/docs/plan/clickhouse-cpu-optimization.md index 16df5483..ba828bcb 100644 --- a/docs/plan/clickhouse-cpu-optimization.md +++ b/docs/plan/clickhouse-cpu-optimization.md @@ -13,13 +13,13 @@ ClickHouse CPU 偏高由写入侧(小 part 频繁 flush、心跳同步 DELETE ### PR 1: 写入路径 P0 优化 - **Description:** 移除心跳路径同步 `ALTER DELETE`;为 `batchwriter` 增加 `MinBatchSize`;调大可观测 writer 批次与 flush 间隔;为 openresty/frps/frpc 补全去重。 -- **Files/components affected:** `internal/apps/openflare/agent/observability.go`, `internal/db/batchwriter/`, `internal/apps/openflare/chwriter/`, `internal/db/batchwriter/*_test.go` +- **Files/components affected:** `internal/apps/openflare/agent/observability.go`, `internal/infra/persistence/batchwriter/`, `internal/apps/openflare/chwriter/`, `internal/infra/persistence/batchwriter/*_test.go` - **Dependencies:** None ### PR 2: ClickHouse 客户端与配置 P1 - **Description:** 启用 `async_insert` 等写入优化 settings;提高 `block_buffer_size` 默认值;更新 `config.example.yaml` 与配置模型注释。 -- **Files/components affected:** `internal/db/clickhouse.go`, `internal/config/model.go`, `internal/config/config.go`, `config.example.yaml` +- **Files/components affected:** `internal/infra/persistence/clickhouse.go`, `internal/infra/config/model.go`, `internal/infra/config/config.go`, `config.example.yaml` - **Dependencies:** None ### PR 3: Dashboard 与可观测查询 P0 @@ -37,7 +37,7 @@ ClickHouse CPU 偏高由写入侧(小 part 频繁 flush、心跳同步 DELETE ### PR 5: ClickHouse DDL 与数据规范化 P1 - **Description:** 为 7 张分析表添加 TTL;收窄 `of_node_access_logs` ORDER BY;插入时规范化 `remote_addr`(去 trim 查询);将可观测 obs 三表纳入自动清理。 -- **Files/components affected:** `internal/db/migrator/goose/clickhouse/`, `internal/repository/analytics/node_access_log_writer.go`, `internal/apps/openflare/tasks/database_cleanup.go`, `internal/model/analytics/` +- **Files/components affected:** `internal/infra/persistence/migrator/goose/clickhouse/`, `internal/repository/analytics/node_access_log_writer.go`, `internal/apps/openflare/tasks/database_cleanup.go`, `internal/model/analytics/` - **Dependencies:** PR 1 ### PR 6: 基础设施与审计减负 P2 diff --git a/docs/superpowers/plans/2026-07-19-http-default-rate-limit.md b/docs/superpowers/plans/2026-07-19-http-default-rate-limit.md index 9140ef87..c2966122 100644 --- a/docs/superpowers/plans/2026-07-19-http-default-rate-limit.md +++ b/docs/superpowers/plans/2026-07-19-http-default-rate-limit.md @@ -23,7 +23,7 @@ | 文件 | 职责 | |------|------| | `internal/model/system_configs.go` | 三个 ConfigKey 常量 | -| `internal/db/migrator/goose/{postgres,sqlite}/202607190001_add_openresty_default_rate_limits.sql` | seed 默认值 | +| `internal/infra/persistence/migrator/goose/{postgres,sqlite}/202607190001_add_openresty_default_rate_limits.sql` | seed 默认值 | | `internal/apps/openflare/option/openresty_validators.go` + `validate.go` | 全局默认校验 | | `internal/apps/openflare/config_version/snapshot.go` | 快照字段 + 读取 | | `internal/apps/openflare/config_version/logics.go` | option diff keys | @@ -273,8 +273,8 @@ git commit -m "feat(openresty): merge global default limits at route render" **Files:** - Modify: `internal/model/system_configs.go` -- Create: `internal/db/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql` -- Create: `internal/db/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql` +- Create: `internal/infra/persistence/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql` +- Create: `internal/infra/persistence/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql` - Modify: `internal/apps/openflare/option/validate.go` - Modify: `internal/apps/openflare/option/openresty_validators.go` - Modify: `internal/apps/openflare/config_version/snapshot.go` @@ -407,8 +407,8 @@ Expected: PASS ```bash git add internal/model/system_configs.go \ - internal/db/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql \ - internal/db/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql \ + internal/infra/persistence/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql \ + internal/infra/persistence/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql \ internal/apps/openflare/option/validate.go \ internal/apps/openflare/option/openresty_validators.go \ internal/apps/openflare/config_version/snapshot.go \ diff --git a/frontend/lib/api-envelope.ts b/frontend/lib/api-envelope.ts index f6fdd07a..8b8fec90 100644 --- a/frontend/lib/api-envelope.ts +++ b/frontend/lib/api-envelope.ts @@ -1,6 +1,6 @@ /** * OpenFlare 统一 API 响应信封解析。 - * 与后端 internal/common/response.Response 及 axios api-client 约定一致。 + * 与后端 internal/shared/response.Response 及 axios api-client 约定一致。 */ export interface ApiEnvelope { diff --git a/internal/apps/admin/auth_source/routers.go b/internal/apps/admin/auth_source/routers.go index fc0339ba..0366af08 100644 --- a/internal/apps/admin/auth_source/routers.go +++ b/internal/apps/admin/auth_source/routers.go @@ -16,7 +16,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/repository" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // AuthSourceRequest 创建或更新认证源的请求参数 diff --git a/internal/apps/admin/auth_source/routers_test.go b/internal/apps/admin/auth_source/routers_test.go index bd7e2489..3d05bf49 100644 --- a/internal/apps/admin/auth_source/routers_test.go +++ b/internal/apps/admin/auth_source/routers_test.go @@ -16,7 +16,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) func setupTestRouter(authUser *model.User) *gin.Engine { diff --git a/internal/apps/admin/cache/routers.go b/internal/apps/admin/cache/routers.go index 12003c26..b9b1c799 100644 --- a/internal/apps/admin/cache/routers.go +++ b/internal/apps/admin/cache/routers.go @@ -8,11 +8,11 @@ import ( "net/http" "strconv" - "github.com/Rain-kl/Wavelet/internal/diskcache" + "github.com/Rain-kl/Wavelet/internal/infra/diskcache" "github.com/Rain-kl/Wavelet/internal/model" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) type updateCacheConfigRequest struct { diff --git a/internal/apps/admin/db_manage/routers.go b/internal/apps/admin/db_manage/routers.go index 3f7086c9..a6381fbb 100644 --- a/internal/apps/admin/db_manage/routers.go +++ b/internal/apps/admin/db_manage/routers.go @@ -15,12 +15,12 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) const ( diff --git a/internal/apps/admin/logs/routers.go b/internal/apps/admin/logs/routers.go index d85e004b..7f77d520 100644 --- a/internal/apps/admin/logs/routers.go +++ b/internal/apps/admin/logs/routers.go @@ -14,14 +14,14 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/admin" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" analyticsrepo "github.com/Rain-kl/Wavelet/internal/repository/analytics" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) const ( diff --git a/internal/apps/admin/logs/utils_test.go b/internal/apps/admin/logs/utils_test.go index 2d99129a..2d66b6b9 100644 --- a/internal/apps/admin/logs/utils_test.go +++ b/internal/apps/admin/logs/utils_test.go @@ -11,7 +11,7 @@ import ( "gorm.io/driver/sqlite" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/apps/admin/middlewares.go b/internal/apps/admin/middlewares.go index 61fc86bf..c40215cb 100644 --- a/internal/apps/admin/middlewares.go +++ b/internal/apps/admin/middlewares.go @@ -5,8 +5,8 @@ package admin import ( - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" otel_trace "github.com/Rain-kl/Wavelet/pkg/trace" diff --git a/internal/apps/admin/push/channels.go b/internal/apps/admin/push/channels.go index 6a21577d..0b205734 100644 --- a/internal/apps/admin/push/channels.go +++ b/internal/apps/admin/push/channels.go @@ -14,8 +14,8 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // ListChannelDefinitions 获取各种消息通道的表单配置定义列表 diff --git a/internal/apps/admin/push/custom_events/admin_login_test.go b/internal/apps/admin/push/custom_events/admin_login_test.go index a7687b07..9ab14e8c 100644 --- a/internal/apps/admin/push/custom_events/admin_login_test.go +++ b/internal/apps/admin/push/custom_events/admin_login_test.go @@ -11,10 +11,10 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/admin/push" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/listener" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/hibiken/asynq" "github.com/stretchr/testify/assert" diff --git a/internal/apps/admin/push/events.go b/internal/apps/admin/push/events.go index 7b896279..6cc26bc2 100644 --- a/internal/apps/admin/push/events.go +++ b/internal/apps/admin/push/events.go @@ -11,9 +11,9 @@ import ( "fmt" "strings" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/pkg/logger" pkgpush "github.com/Rain-kl/Wavelet/pkg/push" "gorm.io/gorm" diff --git a/internal/apps/admin/push/logics.go b/internal/apps/admin/push/logics.go index 0425c1a9..713797e9 100644 --- a/internal/apps/admin/push/logics.go +++ b/internal/apps/admin/push/logics.go @@ -10,9 +10,9 @@ import ( "strconv" "strings" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/task" pkgpush "github.com/Rain-kl/Wavelet/pkg/push" "gorm.io/gorm" ) diff --git a/internal/apps/admin/push/push_test.go b/internal/apps/admin/push/push_test.go index 705c4cb7..61673270 100644 --- a/internal/apps/admin/push/push_test.go +++ b/internal/apps/admin/push/push_test.go @@ -14,8 +14,8 @@ import ( "testing" "time" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/internal/testhelper" pkgpush "github.com/Rain-kl/Wavelet/pkg/push" "github.com/alicebob/miniredis/v2" @@ -26,8 +26,8 @@ import ( "gorm.io/gorm" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/repository" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) var adminLoginEvent = EventMetadata{ diff --git a/internal/apps/admin/push/routers.go b/internal/apps/admin/push/routers.go index b03f37c6..d7e0df0f 100644 --- a/internal/apps/admin/push/routers.go +++ b/internal/apps/admin/push/routers.go @@ -17,7 +17,7 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // UpdateEventRequest 更新事件请求参数 diff --git a/internal/apps/admin/push/task_listener.go b/internal/apps/admin/push/task_listener.go index 9736c317..ec119710 100644 --- a/internal/apps/admin/push/task_listener.go +++ b/internal/apps/admin/push/task_listener.go @@ -9,8 +9,8 @@ import ( "strconv" "time" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/pkg/logger" ) diff --git a/internal/apps/admin/push/tasks.go b/internal/apps/admin/push/tasks.go index 235bf673..2d4ad7ca 100644 --- a/internal/apps/admin/push/tasks.go +++ b/internal/apps/admin/push/tasks.go @@ -10,7 +10,7 @@ import ( "errors" "fmt" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/pkg/push" ) diff --git a/internal/apps/admin/status/clickhouse.go b/internal/apps/admin/status/clickhouse.go index f84c2d5a..485b03d3 100644 --- a/internal/apps/admin/status/clickhouse.go +++ b/internal/apps/admin/status/clickhouse.go @@ -8,11 +8,11 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/chwriter" "github.com/Rain-kl/Wavelet/internal/apps/risk_control" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/batchwriter" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/batchwriter" analyticsrepo "github.com/Rain-kl/Wavelet/internal/repository/analytics" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/admin/status/routers.go b/internal/apps/admin/status/routers.go index 633319df..c5ad700a 100644 --- a/internal/apps/admin/status/routers.go +++ b/internal/apps/admin/status/routers.go @@ -16,11 +16,11 @@ import ( "runtime" "time" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // startTime 记录服务启动时间 diff --git a/internal/apps/admin/system_config/logics.go b/internal/apps/admin/system_config/logics.go index d161e894..cabba62f 100644 --- a/internal/apps/admin/system_config/logics.go +++ b/internal/apps/admin/system_config/logics.go @@ -9,10 +9,10 @@ import ( "errors" "time" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/storage" "github.com/Rain-kl/Wavelet/pkg/logger" "gorm.io/gorm" ) @@ -58,9 +58,9 @@ func updateSystemConfig(ctx context.Context, key string, req UpdateSystemConfigR return err } - var originalDriver storage.Driver + var originalDriver objectstore.Driver if key == model.ConfigKeyStorageConfig { - var currentCfg storage.Config + var currentCfg objectstore.Config if err := json.Unmarshal([]byte(config.Value), ¤tCfg); err == nil { originalDriver = currentCfg.Driver } @@ -101,14 +101,14 @@ func resolveStorageMigrationTasksOnDirectDriverUpdate( ctx context.Context, tx *gorm.DB, key string, - originalDriver storage.Driver, + originalDriver objectstore.Driver, newValue string, ) { if key != model.ConfigKeyStorageConfig || originalDriver == "" { return } - var newCfg storage.Config + var newCfg objectstore.Config if err := json.Unmarshal([]byte(newValue), &newCfg); err != nil { return } diff --git a/internal/apps/admin/system_config/routers.go b/internal/apps/admin/system_config/routers.go index 996f685b..4a5ca3b2 100644 --- a/internal/apps/admin/system_config/routers.go +++ b/internal/apps/admin/system_config/routers.go @@ -17,11 +17,11 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/cap" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/storage" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" mail "github.com/Rain-kl/Wavelet/pkg/mail" ) @@ -187,8 +187,8 @@ func invalidateCachesAfterConfigUpdate(ctx context.Context, key string) { if key == model.ConfigKeyStorageConfig { upload.ResetAccessCaches() upload.PublishAccessCacheInvalidation(ctx) - storage.ResetCache() - storage.PublishCacheInvalidation(ctx) + objectstore.ResetCache() + objectstore.PublishCacheInvalidation(ctx) } if key == model.ConfigKeyFileAccessWhitelist { upload.ResetAccessCaches() @@ -284,9 +284,9 @@ func maskSensitiveConfig(key, value string) string { case model.ConfigKeySMTPPassword: return maskedConfigValue case model.ConfigKeyStorageConfig: - var cfg storage.Config + var cfg objectstore.Config if err := json.Unmarshal([]byte(value), &cfg); err == nil { - masked := storage.MaskSecrets(cfg) + masked := objectstore.MaskSecrets(cfg) if val, err := json.Marshal(masked); err == nil { return string(val) } @@ -298,18 +298,18 @@ func maskSensitiveConfig(key, value string) string { // validateAndMergeStorageConfig parses, merges unmasked secrets, validates parameter values, // and tests connectivity of the new storage configuration. func validateAndMergeStorageConfig(ctx context.Context, value string, currentConfig string) (string, error) { - var currentCfg storage.Config + var currentCfg objectstore.Config if err := json.Unmarshal([]byte(currentConfig), ¤tCfg); err != nil { return "", fmt.Errorf("解析当前存储配置失败: %w", err) } - var newCfg storage.Config + var newCfg objectstore.Config if err := json.Unmarshal([]byte(value), &newCfg); err != nil { return "", fmt.Errorf("解析目标存储配置失败: %w", err) } // 合并被掩码屏蔽的敏感信息,获取完整的真实配置 - targetCfg := storage.MergeMaskedSecrets(newCfg, currentCfg) + targetCfg := objectstore.MergeMaskedSecrets(newCfg, currentCfg) if err := validateMergedStorageConfig(ctx, currentCfg, newCfg, targetCfg); err != nil { return "", err } @@ -323,7 +323,7 @@ func validateAndMergeStorageConfig(ctx context.Context, value string, currentCon return string(unmaskedVal), nil } -func validateMergedStorageConfig(ctx context.Context, currentCfg, newCfg, targetCfg storage.Config) error { +func validateMergedStorageConfig(ctx context.Context, currentCfg, newCfg, targetCfg objectstore.Config) error { if newCfg.Driver != "" && newCfg.Driver != currentCfg.Driver { var uploadCount int64 if err := db.DB(ctx).Model(&model.Upload{}). @@ -342,19 +342,19 @@ func validateMergedStorageConfig(ctx context.Context, currentCfg, newCfg, target return testStorageBackend(ctx, pendingCfg, newCfg.Driver) } - if err := storage.ValidateConfig(targetCfg); err != nil { + if err := objectstore.ValidateConfig(targetCfg); err != nil { return fmt.Errorf("验证存储配置参数失败: %w", err) } return testStorageBackend(ctx, targetCfg, targetCfg.Driver) } -func validateDriverConfig(cfg storage.Config, driver storage.Driver) error { +func validateDriverConfig(cfg objectstore.Config, driver objectstore.Driver) error { cfg.Driver = driver - return storage.ValidateConfig(cfg) + return objectstore.ValidateConfig(cfg) } -func testStorageBackend(ctx context.Context, cfg storage.Config, driver storage.Driver) error { - testBackend, err := storage.NewBackend(ctx, cfg, driver) +func testStorageBackend(ctx context.Context, cfg objectstore.Config, driver objectstore.Driver) error { + testBackend, err := objectstore.NewBackend(ctx, cfg, driver) if err != nil { return fmt.Errorf("初始化测试存储实例失败: %w", err) } diff --git a/internal/apps/admin/system_config/routers_test.go b/internal/apps/admin/system_config/routers_test.go index 49ee1f71..cd30b1c3 100644 --- a/internal/apps/admin/system_config/routers_test.go +++ b/internal/apps/admin/system_config/routers_test.go @@ -17,17 +17,17 @@ import ( "testing" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/storage" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) -const expectedDefaultConfigsCount = 32 +const expectedDefaultConfigsCount = 34 func setupTestRouter(authUser *model.User) *gin.Engine { r := testhelper.NewTestGinEngine() @@ -168,8 +168,8 @@ func TestListSystemConfigs(t *testing.T) { var configs []model.SystemConfig _ = json.Unmarshal(dataBytes, &configs) - if len(configs) != 3 { - t.Errorf("expected 3 business configs, got %d: %v", len(configs), configs) + if len(configs) != 5 { + t.Errorf("expected 5 business configs, got %d: %v", len(configs), configs) } }) } @@ -394,7 +394,7 @@ func TestUpdateStorageConfigValidation(t *testing.T) { t.Run("update storage config successfully", func(t *testing.T) { tempDir := t.TempDir() - cfg := storage.DefaultConfig() + cfg := objectstore.DefaultConfig() cfg.Local.Root = tempDir cfgBytes, _ := json.Marshal(cfg) @@ -414,7 +414,7 @@ func TestUpdateStorageConfigValidation(t *testing.T) { // Verify database var dbCfg model.SystemConfig dbConn.Where("key = ?", "storage_config").First(&dbCfg) - var savedCfg storage.Config + var savedCfg objectstore.Config _ = json.Unmarshal([]byte(dbCfg.Value), &savedCfg) if savedCfg.Local.Root != tempDir { t.Errorf("expected local root to be updated to %s, got %s", tempDir, savedCfg.Local.Root) @@ -422,8 +422,8 @@ func TestUpdateStorageConfigValidation(t *testing.T) { }) t.Run("update storage config failed connectivity check", func(t *testing.T) { - cfg := storage.DefaultConfig() - cfg.Driver = storage.DriverS3 + cfg := objectstore.DefaultConfig() + cfg.Driver = objectstore.DriverS3 cfg.S3.Bucket = "non-existent-bucket" cfg.S3.Endpoint = "http://127.0.0.1:9999" // Will fail connectivity check @@ -459,8 +459,8 @@ func TestUpdateStorageConfigValidation(t *testing.T) { } tempDir := t.TempDir() - cfg := storage.DefaultConfig() - cfg.Driver = storage.DriverS3 + cfg := objectstore.DefaultConfig() + cfg.Driver = objectstore.DriverS3 cfg.S3.Endpoint = "http://127.0.0.1:19998" cfg.S3.Region = "us-east-1" cfg.S3.Bucket = "wavelet" @@ -489,8 +489,8 @@ func TestUpdateStorageConfigValidation(t *testing.T) { t.Fatalf("clear uploads failed: %v", err) } - activeCfg := storage.DefaultConfig() - activeCfg.Driver = storage.DriverS3 + activeCfg := objectstore.DefaultConfig() + activeCfg.Driver = objectstore.DriverS3 activeCfg.S3.Endpoint = "http://127.0.0.1:9999" activeCfg.S3.Region = "us-east-1" activeCfg.S3.Bucket = "wavelet" @@ -510,7 +510,7 @@ func TestUpdateStorageConfigValidation(t *testing.T) { tempDir := t.TempDir() stagedCfg := activeCfg - stagedCfg.Driver = storage.DriverLocal + stagedCfg.Driver = objectstore.DriverLocal stagedCfg.Local.Root = tempDir cfgBytes, _ := json.Marshal(stagedCfg) @@ -529,12 +529,12 @@ func TestUpdateStorageConfigValidation(t *testing.T) { if err := dbConn.Where("key = ?", "storage_config").First(&dbCfg).Error; err != nil { t.Fatalf("load saved storage config failed: %v", err) } - var savedCfg storage.Config + var savedCfg objectstore.Config if err := json.Unmarshal([]byte(dbCfg.Value), &savedCfg); err != nil { t.Fatalf("parse saved storage config failed: %v", err) } - if savedCfg.Driver != storage.DriverLocal { - t.Fatalf("active driver = %q, want %q after save", savedCfg.Driver, storage.DriverLocal) + if savedCfg.Driver != objectstore.DriverLocal { + t.Fatalf("active driver = %q, want %q after save", savedCfg.Driver, objectstore.DriverLocal) } if savedCfg.Local.Root != tempDir { t.Fatalf("staged local root = %q, want %q", savedCfg.Local.Root, tempDir) diff --git a/internal/apps/admin/task/routers.go b/internal/apps/admin/task/routers.go index 78d391a5..f631c469 100644 --- a/internal/apps/admin/task/routers.go +++ b/internal/apps/admin/task/routers.go @@ -12,14 +12,14 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/admin" + "github.com/Rain-kl/Wavelet/internal/infra/task" + "github.com/Rain-kl/Wavelet/internal/infra/task/scheduler" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" - "github.com/Rain-kl/Wavelet/internal/task/scheduler" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-gonic/gin" "github.com/robfig/cron/v3" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // ListTaskTypes 获取支持的任务类型列表 diff --git a/internal/apps/admin/task/routers_test.go b/internal/apps/admin/task/routers_test.go index 3cd63fb9..ee7b7283 100644 --- a/internal/apps/admin/task/routers_test.go +++ b/internal/apps/admin/task/routers_test.go @@ -17,16 +17,16 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/oauth" uploadtask "github.com/Rain-kl/Wavelet/internal/apps/upload/task" "github.com/Rain-kl/Wavelet/internal/apps/user" - "github.com/Rain-kl/Wavelet/internal/bootstrap" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" "github.com/hibiken/asynq" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) const ( diff --git a/internal/apps/admin/template/routers.go b/internal/apps/admin/template/routers.go index 6a1e455f..d4958dd6 100644 --- a/internal/apps/admin/template/routers.go +++ b/internal/apps/admin/template/routers.go @@ -10,7 +10,7 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // CreateTemplateRequest 创建模板请求 diff --git a/internal/apps/admin/template/routers_test.go b/internal/apps/admin/template/routers_test.go index 4561ffb5..e615a8a5 100644 --- a/internal/apps/admin/template/routers_test.go +++ b/internal/apps/admin/template/routers_test.go @@ -15,7 +15,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) func setupTestRouter(authUser *model.User) *gin.Engine { diff --git a/internal/apps/admin/updater/routers.go b/internal/apps/admin/updater/routers.go index 0c4e7767..2439a10f 100644 --- a/internal/apps/admin/updater/routers.go +++ b/internal/apps/admin/updater/routers.go @@ -11,7 +11,7 @@ import ( "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // GetUpdateStatus 获取应用更新状态 diff --git a/internal/apps/admin/user/logics.go b/internal/apps/admin/user/logics.go index 158a5b17..fe278b1a 100644 --- a/internal/apps/admin/user/logics.go +++ b/internal/apps/admin/user/logics.go @@ -10,8 +10,8 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" ) diff --git a/internal/apps/admin/user/routers.go b/internal/apps/admin/user/routers.go index 24d41e49..c4009424 100644 --- a/internal/apps/admin/user/routers.go +++ b/internal/apps/admin/user/routers.go @@ -16,7 +16,7 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // minPasswordLength 密码最小长度 diff --git a/internal/apps/admin/user/routers_test.go b/internal/apps/admin/user/routers_test.go index 5fe5e290..91e8a880 100644 --- a/internal/apps/admin/user/routers_test.go +++ b/internal/apps/admin/user/routers_test.go @@ -17,7 +17,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) func setupTestRouter(authUser *model.User) *gin.Engine { diff --git a/internal/apps/cap/manager.go b/internal/apps/cap/manager.go index a9c40e01..b99fff24 100644 --- a/internal/apps/cap/manager.go +++ b/internal/apps/cap/manager.go @@ -13,8 +13,8 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" pkgcap "github.com/Rain-kl/Wavelet/pkg/cap" ) diff --git a/internal/apps/cap/middleware.go b/internal/apps/cap/middleware.go index c05d4d64..5b04cd9e 100644 --- a/internal/apps/cap/middleware.go +++ b/internal/apps/cap/middleware.go @@ -6,7 +6,7 @@ package cap import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // VerifyMiddleware returns a Gin middleware that checks and consumes the X-Cap-Token header. diff --git a/internal/apps/cap/routers.go b/internal/apps/cap/routers.go index 9eafba5a..a6ed7c4b 100644 --- a/internal/apps/cap/routers.go +++ b/internal/apps/cap/routers.go @@ -6,7 +6,7 @@ package cap import ( "net/http" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" pkgcap "github.com/Rain-kl/Wavelet/pkg/cap" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/cap/routers_test.go b/internal/apps/cap/routers_test.go index 64cec8a5..de9fdd7d 100644 --- a/internal/apps/cap/routers_test.go +++ b/internal/apps/cap/routers_test.go @@ -13,9 +13,9 @@ import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/internal/testhelper" pkgcap "github.com/Rain-kl/Wavelet/pkg/cap" ) diff --git a/internal/apps/cap/runtime_settings.go b/internal/apps/cap/runtime_settings.go index 55966dac..76399342 100644 --- a/internal/apps/cap/runtime_settings.go +++ b/internal/apps/cap/runtime_settings.go @@ -14,7 +14,7 @@ import ( "golang.org/x/sync/singleflight" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" ) diff --git a/internal/apps/cap/runtime_settings_test.go b/internal/apps/cap/runtime_settings_test.go index f04ca5ee..3d04bf6d 100644 --- a/internal/apps/cap/runtime_settings_test.go +++ b/internal/apps/cap/runtime_settings_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/internal/testhelper" diff --git a/internal/apps/config/routers.go b/internal/apps/config/routers.go index 8664a549..031b0080 100644 --- a/internal/apps/config/routers.go +++ b/internal/apps/config/routers.go @@ -12,7 +12,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/repository" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // GetPublicConfig 获取公共配置 diff --git a/internal/apps/config/routers_test.go b/internal/apps/config/routers_test.go index 2a65d1e6..d05aaa25 100644 --- a/internal/apps/config/routers_test.go +++ b/internal/apps/config/routers_test.go @@ -14,7 +14,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) func TestGetPublicConfigUsesVisibility(t *testing.T) { diff --git a/internal/apps/config/system_config_cache_test.go b/internal/apps/config/system_config_cache_test.go index a538b2f1..560de8af 100644 --- a/internal/apps/config/system_config_cache_test.go +++ b/internal/apps/config/system_config_cache_test.go @@ -11,7 +11,7 @@ import ( "github.com/redis/go-redis/v9" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/internal/testhelper" diff --git a/internal/apps/health/routers.go b/internal/apps/health/routers.go index 1559688f..d0d26bab 100644 --- a/internal/apps/health/routers.go +++ b/internal/apps/health/routers.go @@ -10,7 +10,7 @@ import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // Health 健康检查 diff --git a/internal/apps/oauth/cache.go b/internal/apps/oauth/cache.go index f16210ed..266f29e2 100644 --- a/internal/apps/oauth/cache.go +++ b/internal/apps/oauth/cache.go @@ -10,7 +10,7 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/cache/ram" ) diff --git a/internal/apps/oauth/cache_test.go b/internal/apps/oauth/cache_test.go index 2a90ad16..cddcc3fe 100644 --- a/internal/apps/oauth/cache_test.go +++ b/internal/apps/oauth/cache_test.go @@ -12,7 +12,7 @@ import ( "github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9/maintnotifications" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/apps/oauth/handler_authorize.go b/internal/apps/oauth/handler_authorize.go index 6277f6c2..925eb9e1 100644 --- a/internal/apps/oauth/handler_authorize.go +++ b/internal/apps/oauth/handler_authorize.go @@ -9,10 +9,10 @@ import ( "net/http" "strings" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/coreos/go-oidc/v3/oidc" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" @@ -134,7 +134,7 @@ func Authorize(c *gin.Context) { session := sessions.Default(c) userID := GetUserIDFromSession(session) if purpose == OAuthPurposeBind && userID == 0 { - response.AbortUnauthorized(c, common.UnAuthorized) + response.AbortUnauthorized(c, shared.UnAuthorized) return } diff --git a/internal/apps/oauth/handler_callback.go b/internal/apps/oauth/handler_callback.go index 9e1a46eb..f7ee72da 100644 --- a/internal/apps/oauth/handler_callback.go +++ b/internal/apps/oauth/handler_callback.go @@ -10,12 +10,12 @@ import ( "net/http" "time" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/listener" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" + "github.com/Rain-kl/Wavelet/internal/shared" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" @@ -60,7 +60,7 @@ func Callback(c *gin.Context) { currentUserID := GetUserIDFromSession(session) if payload.Purpose == OAuthPurposeBind && currentUserID == 0 { - response.AbortUnauthorized(c, common.UnAuthorized) + response.AbortUnauthorized(c, shared.UnAuthorized) return } @@ -127,7 +127,7 @@ func Callback(c *gin.Context) { func handleCallbackBind(ctx context.Context, c *gin.Context, source *model.AuthSource, userInfo *model.OAuthUserInfo) { userID := GetUserIDFromContext(c) if userID == 0 { - response.AbortUnauthorized(c, common.UnAuthorized) + response.AbortUnauthorized(c, shared.UnAuthorized) return } var user model.User diff --git a/internal/apps/oauth/handler_external_accounts.go b/internal/apps/oauth/handler_external_accounts.go index 367275d9..bd7f9b02 100644 --- a/internal/apps/oauth/handler_external_accounts.go +++ b/internal/apps/oauth/handler_external_accounts.go @@ -8,9 +8,9 @@ import ( "strconv" "strings" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) @@ -48,7 +48,7 @@ func ListExternalAccounts(c *gin.Context) { func DeleteExternalAccount(c *gin.Context) { userID := GetUserIDFromContext(c) if userID == 0 { - response.AbortUnauthorized(c, common.UnAuthorized) + response.AbortUnauthorized(c, shared.UnAuthorized) return } rawID := strings.TrimSpace(c.Param("id")) diff --git a/internal/apps/oauth/handler_sources.go b/internal/apps/oauth/handler_sources.go index fa1c628a..2cefa790 100644 --- a/internal/apps/oauth/handler_sources.go +++ b/internal/apps/oauth/handler_sources.go @@ -6,7 +6,7 @@ package oauth import ( "net/http" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/oauth/middlewares.go b/internal/apps/oauth/middlewares.go index 6e341543..d15d5e8b 100644 --- a/internal/apps/oauth/middlewares.go +++ b/internal/apps/oauth/middlewares.go @@ -8,10 +8,10 @@ import ( "context" "errors" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared" + "github.com/Rain-kl/Wavelet/internal/shared/response" otel_trace "github.com/Rain-kl/Wavelet/pkg/trace" "github.com/gin-contrib/sessions" @@ -127,7 +127,7 @@ func LoginRequired() gin.HandlerFunc { user, err := GetUserFromRequest(c) if err != nil { - response.AbortUnauthorized(c, common.UnAuthorized) + response.AbortUnauthorized(c, shared.UnAuthorized) return } diff --git a/internal/apps/oauth/oauth_test.go b/internal/apps/oauth/oauth_test.go index 9ff0badd..5f05a700 100644 --- a/internal/apps/oauth/oauth_test.go +++ b/internal/apps/oauth/oauth_test.go @@ -32,8 +32,8 @@ import ( "gorm.io/driver/sqlite" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/internal/testhelper" diff --git a/internal/apps/oauth/oauth_userinfo.go b/internal/apps/oauth/oauth_userinfo.go index 84ae7124..3eb45ea5 100644 --- a/internal/apps/oauth/oauth_userinfo.go +++ b/internal/apps/oauth/oauth_userinfo.go @@ -9,7 +9,7 @@ import ( "fmt" "strings" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/coreos/go-oidc/v3/oidc" "golang.org/x/oauth2" diff --git a/internal/apps/oauth/routers.go b/internal/apps/oauth/routers.go index 8d2e13f6..a5a44799 100644 --- a/internal/apps/oauth/routers.go +++ b/internal/apps/oauth/routers.go @@ -12,7 +12,7 @@ import ( "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) // BasicUserInfo 用户基本信息结构体 diff --git a/internal/apps/oauth/session.go b/internal/apps/oauth/session.go index fe653b42..0aeb1486 100644 --- a/internal/apps/oauth/session.go +++ b/internal/apps/oauth/session.go @@ -8,7 +8,7 @@ import ( "net/http" "strings" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/gin-contrib/sessions" ) diff --git a/internal/apps/oauth/session_context.go b/internal/apps/oauth/session_context.go index 672d514d..45237375 100644 --- a/internal/apps/oauth/session_context.go +++ b/internal/apps/oauth/session_context.go @@ -8,7 +8,7 @@ import ( "crypto/sha256" "encoding/hex" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/gin-contrib/sessions" diff --git a/internal/apps/openflare/agent/logics.go b/internal/apps/openflare/agent/logics.go index d2cac1a7..b982f61d 100644 --- a/internal/apps/openflare/agent/logics.go +++ b/internal/apps/openflare/agent/logics.go @@ -11,7 +11,7 @@ import ( ofgeoip "github.com/Rain-kl/Wavelet/internal/apps/openflare/geoip" "github.com/Rain-kl/Wavelet/internal/apps/openflare/node" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/agent/middleware.go b/internal/apps/openflare/agent/middleware.go index a8f12e45..9a076fec 100644 --- a/internal/apps/openflare/agent/middleware.go +++ b/internal/apps/openflare/agent/middleware.go @@ -6,8 +6,8 @@ package agent import ( "strings" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/agent/middleware_test.go b/internal/apps/openflare/agent/middleware_test.go index 8be37b83..eb29a4da 100644 --- a/internal/apps/openflare/agent/middleware_test.go +++ b/internal/apps/openflare/agent/middleware_test.go @@ -11,10 +11,10 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" "github.com/glebarez/sqlite" diff --git a/internal/apps/openflare/agent/observability.go b/internal/apps/openflare/agent/observability.go index 4ea87180..0fbcdf0e 100644 --- a/internal/apps/openflare/agent/observability.go +++ b/internal/apps/openflare/agent/observability.go @@ -10,7 +10,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "go.uber.org/zap" "gorm.io/gorm" diff --git a/internal/apps/openflare/agent/routers.go b/internal/apps/openflare/agent/routers.go index dd840a63..7ea38574 100644 --- a/internal/apps/openflare/agent/routers.go +++ b/internal/apps/openflare/agent/routers.go @@ -10,7 +10,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" "github.com/Rain-kl/Wavelet/internal/apps/openflare/pages" "github.com/Rain-kl/Wavelet/internal/apps/openflare/websocket" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/protocol" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/agent/waf_ip_group_test.go b/internal/apps/openflare/agent/waf_ip_group_test.go index f1ea210d..661055b4 100644 --- a/internal/apps/openflare/agent/waf_ip_group_test.go +++ b/internal/apps/openflare/agent/waf_ip_group_test.go @@ -10,7 +10,7 @@ import ( "strings" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/protocol" "github.com/glebarez/sqlite" diff --git a/internal/apps/openflare/apiutil/bind.go b/internal/apps/openflare/apiutil/bind.go index 15bd05dc..52da29ee 100644 --- a/internal/apps/openflare/apiutil/bind.go +++ b/internal/apps/openflare/apiutil/bind.go @@ -7,7 +7,7 @@ package apiutil import ( "strconv" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/apiutil/errors.go b/internal/apps/openflare/apiutil/errors.go index 5ca3a8aa..3a1dc0ee 100644 --- a/internal/apps/openflare/apiutil/errors.go +++ b/internal/apps/openflare/apiutil/errors.go @@ -6,7 +6,7 @@ package apiutil import ( "errors" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/apiutil/middleware_test.go b/internal/apps/openflare/apiutil/middleware_test.go index 3f60f689..44133f91 100644 --- a/internal/apps/openflare/apiutil/middleware_test.go +++ b/internal/apps/openflare/apiutil/middleware_test.go @@ -11,11 +11,11 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/admin" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" diff --git a/internal/apps/openflare/apply_log/logics_test.go b/internal/apps/openflare/apply_log/logics_test.go index 6f14220a..c8462bf8 100644 --- a/internal/apps/openflare/apply_log/logics_test.go +++ b/internal/apps/openflare/apply_log/logics_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/apply_log/routers.go b/internal/apps/openflare/apply_log/routers.go index 9cef5ec9..68a36068 100644 --- a/internal/apps/openflare/apply_log/routers.go +++ b/internal/apps/openflare/apply_log/routers.go @@ -8,7 +8,7 @@ import ( "strconv" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/async_tasks.go b/internal/apps/openflare/async_tasks.go index 87df194a..36a19cbb 100644 --- a/internal/apps/openflare/async_tasks.go +++ b/internal/apps/openflare/async_tasks.go @@ -10,9 +10,9 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/tasks" "github.com/Rain-kl/Wavelet/internal/apps/openflare/uptimekuma" "github.com/Rain-kl/Wavelet/internal/apps/openflare/waf" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/task" ) const ( diff --git a/internal/apps/openflare/async_tasks_test.go b/internal/apps/openflare/async_tasks_test.go index 05bf376c..a8ecc9ae 100644 --- a/internal/apps/openflare/async_tasks_test.go +++ b/internal/apps/openflare/async_tasks_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/glebarez/sqlite" diff --git a/internal/apps/openflare/chwriter/dedup_test.go b/internal/apps/openflare/chwriter/dedup_test.go index a89187de..8b817e78 100644 --- a/internal/apps/openflare/chwriter/dedup_test.go +++ b/internal/apps/openflare/chwriter/dedup_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db/batchwriter" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/batchwriter" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" ) diff --git a/internal/apps/openflare/chwriter/live_ch_test.go b/internal/apps/openflare/chwriter/live_ch_test.go index 88d0f0f7..85e1f920 100644 --- a/internal/apps/openflare/chwriter/live_ch_test.go +++ b/internal/apps/openflare/chwriter/live_ch_test.go @@ -11,7 +11,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/chwriter" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/apps/openflare/chwriter/writer.go b/internal/apps/openflare/chwriter/writer.go index af12bf3d..772d42f5 100644 --- a/internal/apps/openflare/chwriter/writer.go +++ b/internal/apps/openflare/chwriter/writer.go @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // Package chwriter queues OpenFlare ClickHouse writes and flushes them through -// internal/db/batchwriter with per-table writer instances. +// internal/infra/persistence/batchwriter with per-table writer instances. package chwriter import ( @@ -11,11 +11,11 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/batchwriter" - "github.com/Rain-kl/Wavelet/internal/lifecycle" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/batchwriter" "github.com/Rain-kl/Wavelet/internal/model" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" + "github.com/Rain-kl/Wavelet/internal/platform/lifecycle" analyticsrepo "github.com/Rain-kl/Wavelet/internal/repository/analytics" "github.com/Rain-kl/Wavelet/pkg/logger" ) diff --git a/internal/apps/openflare/config_version/certificate_snapshot_test.go b/internal/apps/openflare/config_version/certificate_snapshot_test.go index 519e55aa..8a3b5647 100644 --- a/internal/apps/openflare/config_version/certificate_snapshot_test.go +++ b/internal/apps/openflare/config_version/certificate_snapshot_test.go @@ -16,8 +16,8 @@ import ( "time" oftls "github.com/Rain-kl/Wavelet/internal/apps/openflare/tls" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/apps/openflare/config_version/logics_test.go b/internal/apps/openflare/config_version/logics_test.go index e1daf6f5..bbdf2afe 100644 --- a/internal/apps/openflare/config_version/logics_test.go +++ b/internal/apps/openflare/config_version/logics_test.go @@ -11,7 +11,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/waf" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" openrestyrender "github.com/Rain-kl/Wavelet/pkg/render/openresty" "github.com/glebarez/sqlite" diff --git a/internal/apps/openflare/config_version/pages_snapshot_test.go b/internal/apps/openflare/config_version/pages_snapshot_test.go index 476a9ed5..fe99a138 100644 --- a/internal/apps/openflare/config_version/pages_snapshot_test.go +++ b/internal/apps/openflare/config_version/pages_snapshot_test.go @@ -8,7 +8,7 @@ import ( "encoding/json" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" openrestyrender "github.com/Rain-kl/Wavelet/pkg/render/openresty" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/config_version/routers.go b/internal/apps/openflare/config_version/routers.go index 82c71109..786fbc7d 100644 --- a/internal/apps/openflare/config_version/routers.go +++ b/internal/apps/openflare/config_version/routers.go @@ -7,7 +7,7 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/config_version/waf_graph_snapshot_test.go b/internal/apps/openflare/config_version/waf_graph_snapshot_test.go index 98d20697..572de5d8 100644 --- a/internal/apps/openflare/config_version/waf_graph_snapshot_test.go +++ b/internal/apps/openflare/config_version/waf_graph_snapshot_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/Rain-kl/Wavelet/internal/apps/openflare/waf" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/apps/openflare/dashboard/logics_test.go b/internal/apps/openflare/dashboard/logics_test.go index 2bf744c2..9fbc6328 100644 --- a/internal/apps/openflare/dashboard/logics_test.go +++ b/internal/apps/openflare/dashboard/logics_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/dashboard/routers.go b/internal/apps/openflare/dashboard/routers.go index 6795924f..99191c3c 100644 --- a/internal/apps/openflare/dashboard/routers.go +++ b/internal/apps/openflare/dashboard/routers.go @@ -7,7 +7,7 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/flared/logics.go b/internal/apps/openflare/flared/logics.go index 924f41a6..19a4d011 100644 --- a/internal/apps/openflare/flared/logics.go +++ b/internal/apps/openflare/flared/logics.go @@ -11,7 +11,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/agent" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/flared/middleware.go b/internal/apps/openflare/flared/middleware.go index 7c04109c..89a8b53c 100644 --- a/internal/apps/openflare/flared/middleware.go +++ b/internal/apps/openflare/flared/middleware.go @@ -8,8 +8,8 @@ import ( "errors" "strings" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/flared/middleware_test.go b/internal/apps/openflare/flared/middleware_test.go index 8dbe26d4..a8122e78 100644 --- a/internal/apps/openflare/flared/middleware_test.go +++ b/internal/apps/openflare/flared/middleware_test.go @@ -9,9 +9,9 @@ import ( "net/http/httptest" "testing" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/flared/observability.go b/internal/apps/openflare/flared/observability.go index 499dd214..ea9b5bb3 100644 --- a/internal/apps/openflare/flared/observability.go +++ b/internal/apps/openflare/flared/observability.go @@ -10,7 +10,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/agent" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "go.uber.org/zap" ) diff --git a/internal/apps/openflare/flared/observability_test.go b/internal/apps/openflare/flared/observability_test.go index bbdb5625..9a78ee14 100644 --- a/internal/apps/openflare/flared/observability_test.go +++ b/internal/apps/openflare/flared/observability_test.go @@ -8,7 +8,7 @@ import ( "testing" "github.com/Rain-kl/Wavelet/internal/apps/openflare/agent" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/flared/routers.go b/internal/apps/openflare/flared/routers.go index 3f77908e..8e5c81da 100644 --- a/internal/apps/openflare/flared/routers.go +++ b/internal/apps/openflare/flared/routers.go @@ -8,8 +8,8 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" ofws "github.com/Rain-kl/Wavelet/internal/apps/openflare/websocket" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/geoip/runtime_test.go b/internal/apps/openflare/geoip/runtime_test.go index 81ff99bf..130ae2c9 100644 --- a/internal/apps/openflare/geoip/runtime_test.go +++ b/internal/apps/openflare/geoip/runtime_test.go @@ -4,7 +4,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" pkggeoip "github.com/Rain-kl/Wavelet/pkg/geoip" "github.com/glebarez/sqlite" diff --git a/internal/apps/openflare/integration/agent_protocol_test.go b/internal/apps/openflare/integration/agent_protocol_test.go index 0e83d634..674c4f67 100644 --- a/internal/apps/openflare/integration/agent_protocol_test.go +++ b/internal/apps/openflare/integration/agent_protocol_test.go @@ -10,7 +10,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/agent" ofnode "github.com/Rain-kl/Wavelet/internal/apps/openflare/node" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" diff --git a/internal/apps/openflare/integration/auth_option_test.go b/internal/apps/openflare/integration/auth_option_test.go index 6212dd01..b99d813b 100644 --- a/internal/apps/openflare/integration/auth_option_test.go +++ b/internal/apps/openflare/integration/auth_option_test.go @@ -13,8 +13,8 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/admin" "github.com/Rain-kl/Wavelet/internal/apps/cap" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/internal/testhelper" diff --git a/internal/apps/openflare/integration/core_chain_test.go b/internal/apps/openflare/integration/core_chain_test.go index 23f6e394..99cc8e01 100644 --- a/internal/apps/openflare/integration/core_chain_test.go +++ b/internal/apps/openflare/integration/core_chain_test.go @@ -10,7 +10,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/agent" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" diff --git a/internal/apps/openflare/integration/helpers_test.go b/internal/apps/openflare/integration/helpers_test.go index 76a8758a..140a44dc 100644 --- a/internal/apps/openflare/integration/helpers_test.go +++ b/internal/apps/openflare/integration/helpers_test.go @@ -10,9 +10,9 @@ import ( "net/http/httptest" "testing" - "github.com/Rain-kl/Wavelet/internal/common/response" v1 "github.com/Rain-kl/Wavelet/internal/router/v1" ofrouter "github.com/Rain-kl/Wavelet/internal/router/v1/openflare" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" "github.com/stretchr/testify/require" ) diff --git a/internal/apps/openflare/integration/security_test.go b/internal/apps/openflare/integration/security_test.go index 238c92fb..b81d8617 100644 --- a/internal/apps/openflare/integration/security_test.go +++ b/internal/apps/openflare/integration/security_test.go @@ -16,8 +16,8 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" diff --git a/internal/apps/openflare/node/logics_test.go b/internal/apps/openflare/node/logics_test.go index c3b6f7d1..1147ef4d 100644 --- a/internal/apps/openflare/node/logics_test.go +++ b/internal/apps/openflare/node/logics_test.go @@ -11,7 +11,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/glebarez/sqlite" diff --git a/internal/apps/openflare/node/routers.go b/internal/apps/openflare/node/routers.go index 1f4e6893..7ca318d7 100644 --- a/internal/apps/openflare/node/routers.go +++ b/internal/apps/openflare/node/routers.go @@ -10,7 +10,7 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/observability/routers.go b/internal/apps/openflare/observability/routers.go index 8bd61d56..e6e0fe7b 100644 --- a/internal/apps/openflare/observability/routers.go +++ b/internal/apps/openflare/observability/routers.go @@ -8,7 +8,7 @@ import ( "strconv" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/option/logics_test.go b/internal/apps/openflare/option/logics_test.go index a6b224ca..c19d34db 100644 --- a/internal/apps/openflare/option/logics_test.go +++ b/internal/apps/openflare/option/logics_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/glebarez/sqlite" diff --git a/internal/apps/openflare/option/routers.go b/internal/apps/openflare/option/routers.go index a46d0664..e52eb7d6 100644 --- a/internal/apps/openflare/option/routers.go +++ b/internal/apps/openflare/option/routers.go @@ -10,8 +10,8 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/origin/logics.go b/internal/apps/openflare/origin/logics.go index cfdf332f..6e676c61 100644 --- a/internal/apps/openflare/origin/logics.go +++ b/internal/apps/openflare/origin/logics.go @@ -11,7 +11,7 @@ import ( "sort" "strings" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/origin/logics_test.go b/internal/apps/openflare/origin/logics_test.go index 95203e86..ba918721 100644 --- a/internal/apps/openflare/origin/logics_test.go +++ b/internal/apps/openflare/origin/logics_test.go @@ -7,7 +7,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/origin/routers.go b/internal/apps/openflare/origin/routers.go index 2bf9b392..1ecd0dcb 100644 --- a/internal/apps/openflare/origin/routers.go +++ b/internal/apps/openflare/origin/routers.go @@ -7,7 +7,7 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/pages/github_source.go b/internal/apps/openflare/pages/github_source.go index 2a7832f8..05a6f3c3 100644 --- a/internal/apps/openflare/pages/github_source.go +++ b/internal/apps/openflare/pages/github_source.go @@ -17,7 +17,7 @@ import ( "unicode" "unicode/utf8" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/logger" "gorm.io/gorm" diff --git a/internal/apps/openflare/pages/github_source_action.go b/internal/apps/openflare/pages/github_source_action.go index 6aaea778..93e8d950 100644 --- a/internal/apps/openflare/pages/github_source_action.go +++ b/internal/apps/openflare/pages/github_source_action.go @@ -13,10 +13,10 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/integration/githubrelease" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/Rain-kl/Wavelet/pkg/pagesarchive" "gorm.io/gorm" diff --git a/internal/apps/openflare/pages/github_source_identity_test.go b/internal/apps/openflare/pages/github_source_identity_test.go index c577dc41..d1cccba9 100644 --- a/internal/apps/openflare/pages/github_source_identity_test.go +++ b/internal/apps/openflare/pages/github_source_identity_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/apps/openflare/pages/github_source_test.go b/internal/apps/openflare/pages/github_source_test.go index 46a39a37..58e4f75d 100644 --- a/internal/apps/openflare/pages/github_source_test.go +++ b/internal/apps/openflare/pages/github_source_test.go @@ -16,7 +16,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/integration/githubrelease" "github.com/Rain-kl/Wavelet/internal/model" "github.com/hibiken/asynq" diff --git a/internal/apps/openflare/pages/helpers.go b/internal/apps/openflare/pages/helpers.go index 8d1b2f69..b6020a6f 100644 --- a/internal/apps/openflare/pages/helpers.go +++ b/internal/apps/openflare/pages/helpers.go @@ -19,7 +19,7 @@ import ( "strings" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/pkg/logger" diff --git a/internal/apps/openflare/pages/logics.go b/internal/apps/openflare/pages/logics.go index b154456b..13b12eab 100644 --- a/internal/apps/openflare/pages/logics.go +++ b/internal/apps/openflare/pages/logics.go @@ -17,7 +17,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/Rain-kl/Wavelet/pkg/pagesarchive" diff --git a/internal/apps/openflare/pages/logics_test.go b/internal/apps/openflare/pages/logics_test.go index 346aba55..6300e939 100644 --- a/internal/apps/openflare/pages/logics_test.go +++ b/internal/apps/openflare/pages/logics_test.go @@ -18,10 +18,10 @@ import ( "testing" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/storage" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -82,7 +82,7 @@ func setupPagesTestDB(t *testing.T) func() { func setupPagesStorageMock(t *testing.T) (restore func(), disable func()) { t.Helper() mockFiles := make(map[string][]byte) - restore = storage.MockStorage( + restore = objectstore.MockStorage( func(_ context.Context, key string, body io.Reader, _ int64, _ string) error { data, err := io.ReadAll(body) if err != nil { @@ -91,12 +91,12 @@ func setupPagesStorageMock(t *testing.T) (restore func(), disable func()) { mockFiles[key] = data return nil }, - func(_ context.Context, key string) (*storage.Object, error) { + func(_ context.Context, key string) (*objectstore.Object, error) { data, ok := mockFiles[key] if !ok { return nil, os.ErrNotExist } - return &storage.Object{ + return &objectstore.Object{ Body: io.NopCloser(bytes.NewReader(data)), ContentLength: int64(len(data)), ContentType: "application/zip", @@ -107,11 +107,11 @@ func setupPagesStorageMock(t *testing.T) (restore func(), disable func()) { return nil }, ) - storage.IsEnabledFunc = func() bool { return true } - storage.ResetCache() + objectstore.IsEnabledFunc = func() bool { return true } + objectstore.ResetCache() disable = func() { - storage.IsEnabledFunc = func() bool { return false } - storage.ResetCache() + objectstore.IsEnabledFunc = func() bool { return false } + objectstore.ResetCache() restore() } return restore, disable diff --git a/internal/apps/openflare/pages/package_metadata_test.go b/internal/apps/openflare/pages/package_metadata_test.go index d192a8c9..46ef3ccd 100644 --- a/internal/apps/openflare/pages/package_metadata_test.go +++ b/internal/apps/openflare/pages/package_metadata_test.go @@ -10,7 +10,7 @@ import ( "fmt" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/apps/openflare/pages/rebind_test.go b/internal/apps/openflare/pages/rebind_test.go index 94dfed4d..acd40c4b 100644 --- a/internal/apps/openflare/pages/rebind_test.go +++ b/internal/apps/openflare/pages/rebind_test.go @@ -8,7 +8,7 @@ import ( "encoding/json" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/apps/openflare/pages/routers.go b/internal/apps/openflare/pages/routers.go index 143a38d3..e07cd496 100644 --- a/internal/apps/openflare/pages/routers.go +++ b/internal/apps/openflare/pages/routers.go @@ -13,8 +13,8 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/oauth" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-gonic/gin" "gorm.io/gorm" diff --git a/internal/apps/openflare/pages/routers_source_test.go b/internal/apps/openflare/pages/routers_source_test.go index 01bc64c7..b558d61c 100644 --- a/internal/apps/openflare/pages/routers_source_test.go +++ b/internal/apps/openflare/pages/routers_source_test.go @@ -14,9 +14,9 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/alicebob/miniredis/v2" "github.com/gin-gonic/gin" diff --git a/internal/apps/openflare/pages/source.go b/internal/apps/openflare/pages/source.go index e5f3df23..3b206821 100644 --- a/internal/apps/openflare/pages/source.go +++ b/internal/apps/openflare/pages/source.go @@ -15,7 +15,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" "gorm.io/gorm/clause" diff --git a/internal/apps/openflare/pages/source_orphan_cleanup.go b/internal/apps/openflare/pages/source_orphan_cleanup.go index 6f80380f..843d55ae 100644 --- a/internal/apps/openflare/pages/source_orphan_cleanup.go +++ b/internal/apps/openflare/pages/source_orphan_cleanup.go @@ -11,7 +11,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/pkg/logger" diff --git a/internal/apps/openflare/pages/source_orphan_cleanup_test.go b/internal/apps/openflare/pages/source_orphan_cleanup_test.go index 2919c299..57d655c6 100644 --- a/internal/apps/openflare/pages/source_orphan_cleanup_test.go +++ b/internal/apps/openflare/pages/source_orphan_cleanup_test.go @@ -11,7 +11,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" "gorm.io/gorm/clause" diff --git a/internal/apps/openflare/pages/source_runtime.go b/internal/apps/openflare/pages/source_runtime.go index f10c447a..f3f1467b 100644 --- a/internal/apps/openflare/pages/source_runtime.go +++ b/internal/apps/openflare/pages/source_runtime.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" "gorm.io/gorm/clause" diff --git a/internal/apps/openflare/pages/source_runtime_test.go b/internal/apps/openflare/pages/source_runtime_test.go index 9a7e1e1a..c1f44d29 100644 --- a/internal/apps/openflare/pages/source_runtime_test.go +++ b/internal/apps/openflare/pages/source_runtime_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/apps/openflare/pages/source_scanner.go b/internal/apps/openflare/pages/source_scanner.go index 1c753d74..c6389b65 100644 --- a/internal/apps/openflare/pages/source_scanner.go +++ b/internal/apps/openflare/pages/source_scanner.go @@ -11,9 +11,9 @@ import ( "fmt" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/pkg/logger" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/pages/source_scanner_test.go b/internal/apps/openflare/pages/source_scanner_test.go index 8fdd9646..161be65c 100644 --- a/internal/apps/openflare/pages/source_scanner_test.go +++ b/internal/apps/openflare/pages/source_scanner_test.go @@ -16,7 +16,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/integration/githubrelease" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" diff --git a/internal/apps/openflare/pages/source_sync.go b/internal/apps/openflare/pages/source_sync.go index 1e53f584..19b00e25 100644 --- a/internal/apps/openflare/pages/source_sync.go +++ b/internal/apps/openflare/pages/source_sync.go @@ -16,9 +16,9 @@ import ( "unicode/utf8" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/pkg/logger" "gorm.io/gorm" "gorm.io/gorm/clause" diff --git a/internal/apps/openflare/pages/source_sync_test.go b/internal/apps/openflare/pages/source_sync_test.go index 32cb0104..8cf2b6e0 100644 --- a/internal/apps/openflare/pages/source_sync_test.go +++ b/internal/apps/openflare/pages/source_sync_test.go @@ -18,7 +18,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/pagesarchive" "gorm.io/gorm" diff --git a/internal/apps/openflare/pages/source_tasks.go b/internal/apps/openflare/pages/source_tasks.go index 048e5bb5..7ddb8a6d 100644 --- a/internal/apps/openflare/pages/source_tasks.go +++ b/internal/apps/openflare/pages/source_tasks.go @@ -13,9 +13,9 @@ import ( "strconv" "strings" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/pkg/logger" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/pages/source_test.go b/internal/apps/openflare/pages/source_test.go index 28d9c89b..e888c83a 100644 --- a/internal/apps/openflare/pages/source_test.go +++ b/internal/apps/openflare/pages/source_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/apps/openflare/proxy_route/logics.go b/internal/apps/openflare/proxy_route/logics.go index 6f5f2801..7c9ddb18 100644 --- a/internal/apps/openflare/proxy_route/logics.go +++ b/internal/apps/openflare/proxy_route/logics.go @@ -10,7 +10,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" "gorm.io/gorm/clause" diff --git a/internal/apps/openflare/proxy_route/logics_test.go b/internal/apps/openflare/proxy_route/logics_test.go index 2267a089..f63a2f01 100644 --- a/internal/apps/openflare/proxy_route/logics_test.go +++ b/internal/apps/openflare/proxy_route/logics_test.go @@ -7,7 +7,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/proxy_route/routers.go b/internal/apps/openflare/proxy_route/routers.go index cef9f52a..c5e8b119 100644 --- a/internal/apps/openflare/proxy_route/routers.go +++ b/internal/apps/openflare/proxy_route/routers.go @@ -7,7 +7,7 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/relay/logics.go b/internal/apps/openflare/relay/logics.go index 7e02a177..5b196652 100644 --- a/internal/apps/openflare/relay/logics.go +++ b/internal/apps/openflare/relay/logics.go @@ -11,7 +11,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/agent" ofgeoip "github.com/Rain-kl/Wavelet/internal/apps/openflare/geoip" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/apps/openflare/relay/logics_test.go b/internal/apps/openflare/relay/logics_test.go index 08060e68..b93acb79 100644 --- a/internal/apps/openflare/relay/logics_test.go +++ b/internal/apps/openflare/relay/logics_test.go @@ -10,7 +10,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/agent" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/relay/middleware.go b/internal/apps/openflare/relay/middleware.go index 69c449fb..efbcf13f 100644 --- a/internal/apps/openflare/relay/middleware.go +++ b/internal/apps/openflare/relay/middleware.go @@ -8,8 +8,8 @@ import ( "errors" "strings" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/relay/middleware_test.go b/internal/apps/openflare/relay/middleware_test.go index 58298fb3..840ad6e3 100644 --- a/internal/apps/openflare/relay/middleware_test.go +++ b/internal/apps/openflare/relay/middleware_test.go @@ -9,9 +9,9 @@ import ( "net/http/httptest" "testing" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/relay/observability.go b/internal/apps/openflare/relay/observability.go index 1417971e..ab281bc7 100644 --- a/internal/apps/openflare/relay/observability.go +++ b/internal/apps/openflare/relay/observability.go @@ -8,7 +8,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/agent" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "go.uber.org/zap" "gorm.io/gorm" diff --git a/internal/apps/openflare/relay/routers.go b/internal/apps/openflare/relay/routers.go index 59b86645..99edc5ac 100644 --- a/internal/apps/openflare/relay/routers.go +++ b/internal/apps/openflare/relay/routers.go @@ -8,8 +8,8 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" ofws "github.com/Rain-kl/Wavelet/internal/apps/openflare/websocket" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/tasks/database_cleanup_test.go b/internal/apps/openflare/tasks/database_cleanup_test.go index c3772ebb..19c02be6 100644 --- a/internal/apps/openflare/tasks/database_cleanup_test.go +++ b/internal/apps/openflare/tasks/database_cleanup_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" analyticsrepo "github.com/Rain-kl/Wavelet/internal/repository/analytics" diff --git a/internal/apps/openflare/tasks/ssl_renew_test.go b/internal/apps/openflare/tasks/ssl_renew_test.go index e0062224..822ac879 100644 --- a/internal/apps/openflare/tasks/ssl_renew_test.go +++ b/internal/apps/openflare/tasks/ssl_renew_test.go @@ -9,10 +9,10 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/tls" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/apps/openflare/tls/logics.go b/internal/apps/openflare/tls/logics.go index 36afe517..40987326 100644 --- a/internal/apps/openflare/tls/logics.go +++ b/internal/apps/openflare/tls/logics.go @@ -12,8 +12,8 @@ import ( "mime/multipart" "strings" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" ) // CertificateInput TLS 证书创建/更新请求。 diff --git a/internal/apps/openflare/tls/logics_test.go b/internal/apps/openflare/tls/logics_test.go index 89e2f24f..855632f9 100644 --- a/internal/apps/openflare/tls/logics_test.go +++ b/internal/apps/openflare/tls/logics_test.go @@ -16,10 +16,10 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/alicebob/miniredis/v2" "github.com/glebarez/sqlite" "github.com/hibiken/asynq" diff --git a/internal/apps/openflare/tls/obtain.go b/internal/apps/openflare/tls/obtain.go index f572fcdd..4012b920 100644 --- a/internal/apps/openflare/tls/obtain.go +++ b/internal/apps/openflare/tls/obtain.go @@ -10,8 +10,8 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/tls/acme" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" ) const ( diff --git a/internal/apps/openflare/tls/routers.go b/internal/apps/openflare/tls/routers.go index 2712fd7b..4838965a 100644 --- a/internal/apps/openflare/tls/routers.go +++ b/internal/apps/openflare/tls/routers.go @@ -7,7 +7,7 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/tls/sensitive.go b/internal/apps/openflare/tls/sensitive.go index 83a336d0..611d62ed 100644 --- a/internal/apps/openflare/tls/sensitive.go +++ b/internal/apps/openflare/tls/sensitive.go @@ -9,7 +9,7 @@ import ( "errors" "strings" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/Rain-kl/Wavelet/pkg/util" ) diff --git a/internal/apps/openflare/tls/tasks.go b/internal/apps/openflare/tls/tasks.go index dd65b6de..7d9eb2b6 100644 --- a/internal/apps/openflare/tls/tasks.go +++ b/internal/apps/openflare/tls/tasks.go @@ -9,8 +9,8 @@ import ( "errors" "fmt" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" ) const ( diff --git a/internal/apps/openflare/uptimekuma/sync_test.go b/internal/apps/openflare/uptimekuma/sync_test.go index 60411fe1..c06d1b0c 100644 --- a/internal/apps/openflare/uptimekuma/sync_test.go +++ b/internal/apps/openflare/uptimekuma/sync_test.go @@ -15,7 +15,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/glebarez/sqlite" diff --git a/internal/apps/openflare/waf/ip_group_sync_test.go b/internal/apps/openflare/waf/ip_group_sync_test.go index 7a1a8eb5..da67ae02 100644 --- a/internal/apps/openflare/waf/ip_group_sync_test.go +++ b/internal/apps/openflare/waf/ip_group_sync_test.go @@ -11,7 +11,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/waf/logics_test.go b/internal/apps/openflare/waf/logics_test.go index 79b1b2aa..fae99c64 100644 --- a/internal/apps/openflare/waf/logics_test.go +++ b/internal/apps/openflare/waf/logics_test.go @@ -7,7 +7,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" diff --git a/internal/apps/openflare/waf/routers.go b/internal/apps/openflare/waf/routers.go index cfc1c930..972e0387 100644 --- a/internal/apps/openflare/waf/routers.go +++ b/internal/apps/openflare/waf/routers.go @@ -8,7 +8,7 @@ import ( "strconv" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/openflare/waf/rule_logics_test.go b/internal/apps/openflare/waf/rule_logics_test.go index cf4be3b4..27807607 100644 --- a/internal/apps/openflare/waf/rule_logics_test.go +++ b/internal/apps/openflare/waf/rule_logics_test.go @@ -13,9 +13,9 @@ import ( "strconv" "testing" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/apps/openflare/waf/rule_routers.go b/internal/apps/openflare/waf/rule_routers.go index f6c8aa72..cf3fd1f4 100644 --- a/internal/apps/openflare/waf/rule_routers.go +++ b/internal/apps/openflare/waf/rule_routers.go @@ -8,8 +8,8 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-gonic/gin" "gorm.io/gorm" diff --git a/internal/apps/openflare/zone/legacy_import_test.go b/internal/apps/openflare/zone/legacy_import_test.go index 0b3c6e66..c15071d5 100644 --- a/internal/apps/openflare/zone/legacy_import_test.go +++ b/internal/apps/openflare/zone/legacy_import_test.go @@ -8,7 +8,7 @@ import ( "database/sql" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/apps/openflare/zone/logics.go b/internal/apps/openflare/zone/logics.go index cd5a81a3..146acc3a 100644 --- a/internal/apps/openflare/zone/logics.go +++ b/internal/apps/openflare/zone/logics.go @@ -10,7 +10,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "golang.org/x/net/publicsuffix" "gorm.io/gorm" diff --git a/internal/apps/openflare/zone/logics_test.go b/internal/apps/openflare/zone/logics_test.go index b58b8cd0..d9a36aee 100644 --- a/internal/apps/openflare/zone/logics_test.go +++ b/internal/apps/openflare/zone/logics_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/glebarez/sqlite" "github.com/stretchr/testify/require" diff --git a/internal/apps/openflare/zone/routers.go b/internal/apps/openflare/zone/routers.go index 6005bec6..4201ee36 100644 --- a/internal/apps/openflare/zone/routers.go +++ b/internal/apps/openflare/zone/routers.go @@ -8,7 +8,7 @@ import ( "net/http" "github.com/Rain-kl/Wavelet/internal/apps/openflare/apiutil" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" "gorm.io/gorm" ) diff --git a/internal/apps/openflare/zone/stats.go b/internal/apps/openflare/zone/stats.go index 620bc143..23f3207a 100644 --- a/internal/apps/openflare/zone/stats.go +++ b/internal/apps/openflare/zone/stats.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/apps/risk_control/logics.go b/internal/apps/risk_control/logics.go index 84b1d083..2b776456 100644 --- a/internal/apps/risk_control/logics.go +++ b/internal/apps/risk_control/logics.go @@ -8,10 +8,10 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/batchwriter" - "github.com/Rain-kl/Wavelet/internal/lifecycle" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/batchwriter" "github.com/Rain-kl/Wavelet/internal/model/analytics" + "github.com/Rain-kl/Wavelet/internal/platform/lifecycle" analyticsrepo "github.com/Rain-kl/Wavelet/internal/repository/analytics" "github.com/Rain-kl/Wavelet/pkg/logger" ) diff --git a/internal/apps/risk_control/middleware.go b/internal/apps/risk_control/middleware.go index 237ff4e3..55248a1d 100644 --- a/internal/apps/risk_control/middleware.go +++ b/internal/apps/risk_control/middleware.go @@ -13,11 +13,11 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/model/analytics" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/risk_control/middleware_test.go b/internal/apps/risk_control/middleware_test.go index 5b68aecb..15641078 100644 --- a/internal/apps/risk_control/middleware_test.go +++ b/internal/apps/risk_control/middleware_test.go @@ -12,8 +12,8 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/batchwriter" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/batchwriter" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/model/analytics" "github.com/Rain-kl/Wavelet/internal/testhelper" diff --git a/internal/apps/upload/cache/access_cache.go b/internal/apps/upload/cache/access_cache.go index 5aab2a72..a8526cb0 100644 --- a/internal/apps/upload/cache/access_cache.go +++ b/internal/apps/upload/cache/access_cache.go @@ -13,10 +13,10 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstorage "github.com/Rain-kl/Wavelet/internal/apps/upload/storage" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/storage" ) const fileAccessInvalidationChannel = "upload:file_access_invalidation" @@ -59,7 +59,7 @@ func startAccessCacheInvalidationListener() { go func() { pubsub := db.Redis.Subscribe( context.Background(), - storage.ConfigInvalidationChannel, + objectstore.ConfigInvalidationChannel, fileAccessInvalidationChannel, ) defer func() { diff --git a/internal/apps/upload/cache/access_cache_test.go b/internal/apps/upload/cache/access_cache_test.go index 80b9180b..8c736803 100644 --- a/internal/apps/upload/cache/access_cache_test.go +++ b/internal/apps/upload/cache/access_cache_test.go @@ -10,7 +10,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstorage "github.com/Rain-kl/Wavelet/internal/apps/upload/storage" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/internal/testhelper" diff --git a/internal/apps/upload/cache/meta_cache.go b/internal/apps/upload/cache/meta_cache.go index b5b9d606..ff2b8691 100644 --- a/internal/apps/upload/cache/meta_cache.go +++ b/internal/apps/upload/cache/meta_cache.go @@ -9,7 +9,7 @@ import ( "fmt" "sync" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/cache/ram" ) diff --git a/internal/apps/upload/cache/meta_cache_test.go b/internal/apps/upload/cache/meta_cache_test.go index 01009b1a..1b812a05 100644 --- a/internal/apps/upload/cache/meta_cache_test.go +++ b/internal/apps/upload/cache/meta_cache_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/testhelper" "gorm.io/gorm" diff --git a/internal/apps/upload/exports.go b/internal/apps/upload/exports.go index 322acddf..cbc0dcc4 100644 --- a/internal/apps/upload/exports.go +++ b/internal/apps/upload/exports.go @@ -12,7 +12,7 @@ import ( uploadstats "github.com/Rain-kl/Wavelet/internal/apps/upload/stats" uploadtask "github.com/Rain-kl/Wavelet/internal/apps/upload/task" "github.com/Rain-kl/Wavelet/internal/apps/upload/util" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/infra/task" ) // HTTP handlers diff --git a/internal/apps/upload/filesrv/file_server.go b/internal/apps/upload/filesrv/file_server.go index 573b48cd..04d0ac34 100644 --- a/internal/apps/upload/filesrv/file_server.go +++ b/internal/apps/upload/filesrv/file_server.go @@ -20,10 +20,10 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstorage "github.com/Rain-kl/Wavelet/internal/apps/upload/storage" "github.com/Rain-kl/Wavelet/internal/apps/upload/util" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/diskcache" + "github.com/Rain-kl/Wavelet/internal/infra/diskcache" "github.com/Rain-kl/Wavelet/internal/model" + appshared "github.com/Rain-kl/Wavelet/internal/shared" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-gonic/gin" @@ -77,7 +77,7 @@ func ServeFileByID(c *gin.Context) { } if err := CheckFileAccessPermission(c, upload); err != nil { - response.AbortUnauthorized(c, common.UnAuthorized) + response.AbortUnauthorized(c, appshared.UnAuthorized) return } diff --git a/internal/apps/upload/filesrv/file_server_test.go b/internal/apps/upload/filesrv/file_server_test.go index b56cca3c..722d90a2 100644 --- a/internal/apps/upload/filesrv/file_server_test.go +++ b/internal/apps/upload/filesrv/file_server_test.go @@ -20,13 +20,13 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/cache" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" "github.com/Rain-kl/Wavelet/internal/apps/upload/util" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/diskcache" + "github.com/Rain-kl/Wavelet/internal/infra/diskcache" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/storage" + appshared "github.com/Rain-kl/Wavelet/internal/shared" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" @@ -138,8 +138,8 @@ func TestServeFileByIDAccessControl(t *testing.T) { if err := json.Unmarshal(w.Body.Bytes(), &body); err != nil { t.Fatalf("failed to parse JSON: %v", err) } - if body["error_msg"] != common.UnAuthorized { - t.Errorf("expected error_msg %q, got %v", common.UnAuthorized, body["error_msg"]) + if body["error_msg"] != appshared.UnAuthorized { + t.Errorf("expected error_msg %q, got %v", appshared.UnAuthorized, body["error_msg"]) } }) @@ -361,7 +361,7 @@ func configureLocalStorageRoot(t *testing.T, dbConn *gorm.DB, tempDir string) { if err := dbConn.Where("key = ?", model.ConfigKeyStorageConfig).First(&sc).Error; err != nil { t.Fatalf("failed to find storage config: %v", err) } - var cfg storage.Config + var cfg objectstore.Config if err := json.Unmarshal([]byte(sc.Value), &cfg); err != nil { t.Fatalf("failed to unmarshal storage config: %v", err) } @@ -376,5 +376,5 @@ func configureLocalStorageRoot(t *testing.T, dbConn *gorm.DB, tempDir string) { } _ = db.HSetJSON(context.Background(), repository.SystemConfigRedisHashKey, sc.Key, &sc) repository.ResetSystemConfigRAMCacheForTest() - storage.ResetCache() + objectstore.ResetCache() } diff --git a/internal/apps/upload/handler/file_management.go b/internal/apps/upload/handler/file_management.go index 6bb69d46..335f3202 100644 --- a/internal/apps/upload/handler/file_management.go +++ b/internal/apps/upload/handler/file_management.go @@ -12,9 +12,9 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/ingest" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstorage "github.com/Rain-kl/Wavelet/internal/apps/upload/storage" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/upload/handler/routers.go b/internal/apps/upload/handler/routers.go index 348f8f71..2667611f 100644 --- a/internal/apps/upload/handler/routers.go +++ b/internal/apps/upload/handler/routers.go @@ -28,9 +28,9 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstorage "github.com/Rain-kl/Wavelet/internal/apps/upload/storage" "github.com/Rain-kl/Wavelet/internal/apps/upload/util" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + appshared "github.com/Rain-kl/Wavelet/internal/shared" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-gonic/gin" "gorm.io/gorm" @@ -187,7 +187,7 @@ func DownloadFile(c *gin.Context) { } if err := filesrv.CheckFileAccessPermission(c, upload); err != nil { - response.AbortUnauthorized(c, common.UnAuthorized) + response.AbortUnauthorized(c, appshared.UnAuthorized) return } diff --git a/internal/apps/upload/handler/routers_test.go b/internal/apps/upload/handler/routers_test.go index 75459ff8..05f19501 100644 --- a/internal/apps/upload/handler/routers_test.go +++ b/internal/apps/upload/handler/routers_test.go @@ -23,11 +23,11 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/oauth" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstats "github.com/Rain-kl/Wavelet/internal/apps/upload/stats" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/storage" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/gin-gonic/gin" "gorm.io/gorm" @@ -117,7 +117,7 @@ func TestUploadFile(t *testing.T) { mockFiles := make(map[string][]byte) var putCount int - restoreStorage := storage.MockStorage( + restoreStorage := objectstore.MockStorage( func(ctx context.Context, key string, body io.Reader, size int64, contentType string) error { data, err := io.ReadAll(body) if err != nil { @@ -127,12 +127,12 @@ func TestUploadFile(t *testing.T) { putCount++ return nil }, - func(ctx context.Context, key string) (*storage.Object, error) { + func(ctx context.Context, key string) (*objectstore.Object, error) { data, ok := mockFiles[key] if !ok { return nil, os.ErrNotExist } - return &storage.Object{ + return &objectstore.Object{ Body: io.NopCloser(bytes.NewReader(data)), ContentLength: int64(len(data)), ContentType: "application/octet-stream", @@ -146,9 +146,9 @@ func TestUploadFile(t *testing.T) { defer restoreStorage() // 开启 S3 Storage - storage.IsEnabledFunc = func() bool { return true } + objectstore.IsEnabledFunc = func() bool { return true } defer func() { - storage.IsEnabledFunc = func() bool { return false } + objectstore.IsEnabledFunc = func() bool { return false } }() t.Run("upload allowed image file successfully", func(t *testing.T) { @@ -326,7 +326,7 @@ func TestUploadFile(t *testing.T) { t.Run("upload in local storage fallback mode", func(t *testing.T) { // Turn off S3 - storage.IsEnabledFunc = func() bool { return false } + objectstore.IsEnabledFunc = func() bool { return false } // Seed allowed extensions configuration to allow txt files var sc model.SystemConfig @@ -1090,7 +1090,7 @@ func configureLocalStorageRoot(t *testing.T, dbConn *gorm.DB, tempDir string) { if err := dbConn.Where("key = ?", model.ConfigKeyStorageConfig).First(&sc).Error; err != nil { t.Fatalf("failed to find storage config: %v", err) } - var cfg storage.Config + var cfg objectstore.Config if err := json.Unmarshal([]byte(sc.Value), &cfg); err != nil { t.Fatalf("failed to unmarshal storage config: %v", err) } @@ -1105,5 +1105,5 @@ func configureLocalStorageRoot(t *testing.T, dbConn *gorm.DB, tempDir string) { } _ = db.HSetJSON(context.Background(), repository.SystemConfigRedisHashKey, sc.Key, &sc) repository.ResetSystemConfigRAMCacheForTest() - storage.ResetCache() + objectstore.ResetCache() } diff --git a/internal/apps/upload/handler/stats.go b/internal/apps/upload/handler/stats.go index 0ef06bb9..e14536bc 100644 --- a/internal/apps/upload/handler/stats.go +++ b/internal/apps/upload/handler/stats.go @@ -8,8 +8,8 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" - "github.com/Rain-kl/Wavelet/internal/common/response" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/apps/upload/ingest/helpers.go b/internal/apps/upload/ingest/helpers.go index b4b094ed..3000cd8c 100644 --- a/internal/apps/upload/ingest/helpers.go +++ b/internal/apps/upload/ingest/helpers.go @@ -15,11 +15,11 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstats "github.com/Rain-kl/Wavelet/internal/apps/upload/stats" uploadstorage "github.com/Rain-kl/Wavelet/internal/apps/upload/storage" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/storage" "github.com/Rain-kl/Wavelet/pkg/logger" "gorm.io/gorm" ) @@ -84,7 +84,7 @@ func storeObject(ctx context.Context, objectKey string, reader io.Reader, size i return "", ErrStorageReadOnly } - driver, backend, err := storage.Active(ctx) + driver, backend, err := objectstore.Active(ctx) if err != nil { logger.ErrorF(ctx, "初始化活动存储失败: %v", err) return "", errors.New(shared.ErrSaveFileFailed) @@ -112,7 +112,7 @@ func persistUploadRecord(ctx context.Context, upload *model.Upload, objectKey st } func cleanupUnpersistedObject(ctx context.Context, objectKey string) { - _, backend, err := storage.Active(ctx) + _, backend, err := objectstore.Active(ctx) if err != nil { return } diff --git a/internal/apps/upload/ingest/ingest_test.go b/internal/apps/upload/ingest/ingest_test.go index 4853d926..5833938b 100644 --- a/internal/apps/upload/ingest/ingest_test.go +++ b/internal/apps/upload/ingest/ingest_test.go @@ -17,9 +17,9 @@ import ( uploadcache "github.com/Rain-kl/Wavelet/internal/apps/upload/cache" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/storage" "github.com/Rain-kl/Wavelet/internal/testhelper" "gorm.io/gorm" ) @@ -270,7 +270,7 @@ func TestDedupRecordFailureDoesNotDeleteSharedObject(t *testing.T) { t.Fatalf("shared object delete count = %d, want 0", deleteCount) } - _, backend, err := storage.Active(ctx) + _, backend, err := objectstore.Active(ctx) if err != nil { t.Fatalf("load active storage: %v", err) } @@ -519,7 +519,7 @@ func setupMockStorage(t *testing.T, putCount *int) (restore func(), disable func func setupMockStorageWithDeleteCount(t *testing.T, putCount, deleteCount *int) (restore func(), disable func()) { t.Helper() mockFiles := make(map[string][]byte) - restore = storage.MockStorage( + restore = objectstore.MockStorage( func(ctx context.Context, key string, body io.Reader, size int64, contentType string) error { data, err := io.ReadAll(body) if err != nil { @@ -531,12 +531,12 @@ func setupMockStorageWithDeleteCount(t *testing.T, putCount, deleteCount *int) ( } return nil }, - func(ctx context.Context, key string) (*storage.Object, error) { + func(ctx context.Context, key string) (*objectstore.Object, error) { data, ok := mockFiles[key] if !ok { return nil, os.ErrNotExist } - return &storage.Object{ + return &objectstore.Object{ Body: io.NopCloser(bytes.NewReader(data)), ContentLength: int64(len(data)), ContentType: "application/octet-stream", @@ -550,11 +550,11 @@ func setupMockStorageWithDeleteCount(t *testing.T, putCount, deleteCount *int) ( return nil }, ) - storage.IsEnabledFunc = func() bool { return true } - storage.ResetCache() + objectstore.IsEnabledFunc = func() bool { return true } + objectstore.ResetCache() disable = func() { - storage.IsEnabledFunc = func() bool { return false } - storage.ResetCache() + objectstore.IsEnabledFunc = func() bool { return false } + objectstore.ResetCache() } return restore, disable } diff --git a/internal/apps/upload/ingest/local_file.go b/internal/apps/upload/ingest/local_file.go index 0539dd51..91563eef 100644 --- a/internal/apps/upload/ingest/local_file.go +++ b/internal/apps/upload/ingest/local_file.go @@ -10,7 +10,7 @@ import ( "path/filepath" "strings" - "github.com/Rain-kl/Wavelet/internal/storage" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" ) // LocalFileCandidateRequest describes filesystem locations that may host a legacy blob. @@ -103,7 +103,7 @@ func buildLocalFileCandidates(ctx context.Context, req LocalFileCandidateRequest } func localStorageRoots(ctx context.Context) []string { - cfg, err := storage.LoadConfig(ctx) + cfg, err := objectstore.LoadConfig(ctx) if err != nil { return nil } diff --git a/internal/apps/upload/ingest/remove.go b/internal/apps/upload/ingest/remove.go index 05c6fb60..4a20100e 100644 --- a/internal/apps/upload/ingest/remove.go +++ b/internal/apps/upload/ingest/remove.go @@ -9,7 +9,7 @@ import ( uploadcache "github.com/Rain-kl/Wavelet/internal/apps/upload/cache" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstats "github.com/Rain-kl/Wavelet/internal/apps/upload/stats" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "gorm.io/gorm" diff --git a/internal/apps/upload/stats/stats_counter.go b/internal/apps/upload/stats/stats_counter.go index 810dc875..b43f631d 100644 --- a/internal/apps/upload/stats/stats_counter.go +++ b/internal/apps/upload/stats/stats_counter.go @@ -7,7 +7,7 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/logger" "gorm.io/gorm" diff --git a/internal/apps/upload/stats/stats_counter_test.go b/internal/apps/upload/stats/stats_counter_test.go index 02d6c7b4..5e197716 100644 --- a/internal/apps/upload/stats/stats_counter_test.go +++ b/internal/apps/upload/stats/stats_counter_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/testhelper" "gorm.io/gorm" diff --git a/internal/apps/upload/storage/access_state.go b/internal/apps/upload/storage/access_state.go index 7c88f355..dceda766 100644 --- a/internal/apps/upload/storage/access_state.go +++ b/internal/apps/upload/storage/access_state.go @@ -10,14 +10,14 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/storage" ) // MigrationAccessState captures cached migration maintenance state. type MigrationAccessState struct { ReadOnly bool - Target storage.Config + Target objectstore.Config HasTarget bool TargetErr error LoadErr error diff --git a/internal/apps/upload/storage/migration.go b/internal/apps/upload/storage/migration.go index f3fbe9dc..59f8c46d 100644 --- a/internal/apps/upload/storage/migration.go +++ b/internal/apps/upload/storage/migration.go @@ -10,9 +10,9 @@ import ( "fmt" "strings" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/storage" "gorm.io/gorm" ) @@ -36,20 +36,20 @@ func LatestMigrationExecution(ctx context.Context) (*model.TaskExecution, bool, } // ParseMigrationTargetConfig parses and validates a storage migration target payload. -func ParseMigrationTargetConfig(ctx context.Context, payload []byte) (storage.Config, error) { +func ParseMigrationTargetConfig(ctx context.Context, payload []byte) (objectstore.Config, error) { if strings.TrimSpace(string(payload)) == "" { - return storage.Config{}, errors.New("storage migration target payload is required") + return objectstore.Config{}, errors.New("storage migration target payload is required") } var raw struct { Target json.RawMessage `json:"target"` } if err := json.Unmarshal(payload, &raw); err != nil { - return storage.Config{}, fmt.Errorf("parse storage migration payload envelope: %w", err) + return objectstore.Config{}, fmt.Errorf("parse storage migration payload envelope: %w", err) } if len(raw.Target) == 0 { - return storage.Config{}, errors.New("storage migration target payload is required") + return objectstore.Config{}, errors.New("storage migration target payload is required") } var targetBytes []byte @@ -60,34 +60,34 @@ func ParseMigrationTargetConfig(ctx context.Context, payload []byte) (storage.Co targetBytes = raw.Target } - var target storage.Config + var target objectstore.Config if err := json.Unmarshal(targetBytes, &target); err != nil { - return storage.Config{}, fmt.Errorf("parse target storage config: %w", err) + return objectstore.Config{}, fmt.Errorf("parse target storage config: %w", err) } - current, err := storage.LoadConfig(ctx) + current, err := objectstore.LoadConfig(ctx) if err != nil { - return storage.Config{}, fmt.Errorf("load active storage config: %w", err) + return objectstore.Config{}, fmt.Errorf("load active storage config: %w", err) } - target = storage.MergeMaskedSecrets(target, current) - if err := storage.ValidateConfig(target); err != nil { - return storage.Config{}, fmt.Errorf("validate target storage config: %w", err) + target = objectstore.MergeMaskedSecrets(target, current) + if err := objectstore.ValidateConfig(target); err != nil { + return objectstore.Config{}, fmt.Errorf("validate target storage config: %w", err) } return target, nil } // NormalizeMigrationPayload validates and normalizes a storage migration payload. -func NormalizeMigrationPayload(ctx context.Context, payload []byte) ([]byte, storage.Config, error) { +func NormalizeMigrationPayload(ctx context.Context, payload []byte) ([]byte, objectstore.Config, error) { target, err := ParseMigrationTargetConfig(ctx, payload) if err != nil { - return nil, storage.Config{}, err + return nil, objectstore.Config{}, err } type storageMigrationPayload struct { - Target storage.Config `json:"target"` + Target objectstore.Config `json:"target"` } normalized, err := json.Marshal(storageMigrationPayload{Target: target}) if err != nil { - return nil, storage.Config{}, fmt.Errorf("marshal storage migration payload: %w", err) + return nil, objectstore.Config{}, fmt.Errorf("marshal storage migration payload: %w", err) } return normalized, target, nil } diff --git a/internal/apps/upload/storage/storage_ops.go b/internal/apps/upload/storage/storage_ops.go index cb09da9c..892691ef 100644 --- a/internal/apps/upload/storage/storage_ops.go +++ b/internal/apps/upload/storage/storage_ops.go @@ -6,8 +6,8 @@ package storage import ( "context" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/storage" "github.com/Rain-kl/Wavelet/pkg/logger" ) @@ -22,8 +22,8 @@ func ReadOnly(ctx context.Context) bool { } // OpenStoredObject opens a stored upload object from the active storage backend. -func OpenStoredObject(ctx context.Context, upload *model.Upload) (*storage.Object, error) { - _, backend, err := storage.Active(ctx) +func OpenStoredObject(ctx context.Context, upload *model.Upload) (*objectstore.Object, error) { + _, backend, err := objectstore.Active(ctx) if err != nil { return nil, err } diff --git a/internal/apps/upload/task/cleanup.go b/internal/apps/upload/task/cleanup.go index 36b3f5b1..f8220c8f 100644 --- a/internal/apps/upload/task/cleanup.go +++ b/internal/apps/upload/task/cleanup.go @@ -13,9 +13,9 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/ingest" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstorage "github.com/Rain-kl/Wavelet/internal/apps/upload/storage" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/pkg/logger" "gorm.io/gorm" "gorm.io/gorm/clause" diff --git a/internal/apps/upload/task/rebuild_stats.go b/internal/apps/upload/task/rebuild_stats.go index 018def05..e5a3a163 100644 --- a/internal/apps/upload/task/rebuild_stats.go +++ b/internal/apps/upload/task/rebuild_stats.go @@ -8,9 +8,9 @@ import ( "fmt" uploadstats "github.com/Rain-kl/Wavelet/internal/apps/upload/stats" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" ) const ( diff --git a/internal/apps/upload/task/rebuild_stats_test.go b/internal/apps/upload/task/rebuild_stats_test.go index e0e185be..1dc3a85e 100644 --- a/internal/apps/upload/task/rebuild_stats_test.go +++ b/internal/apps/upload/task/rebuild_stats_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/testhelper" ) diff --git a/internal/apps/upload/task/storage_migration.go b/internal/apps/upload/task/storage_migration.go index daabd390..bcf79f40 100644 --- a/internal/apps/upload/task/storage_migration.go +++ b/internal/apps/upload/task/storage_migration.go @@ -17,10 +17,10 @@ import ( uploadstats "github.com/Rain-kl/Wavelet/internal/apps/upload/stats" uploadstorage "github.com/Rain-kl/Wavelet/internal/apps/upload/storage" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/storage" - "github.com/Rain-kl/Wavelet/internal/task" "golang.org/x/sync/errgroup" ) @@ -117,7 +117,7 @@ func (h *MigrationHandler) Execute(ctx context.Context, payload []byte) (*task.T }() } - active, err := storage.LoadConfig(ctx) + active, err := objectstore.LoadConfig(ctx) if err != nil { return nil, fmt.Errorf("load active storage config: %w", err) } @@ -126,7 +126,7 @@ func (h *MigrationHandler) Execute(ctx context.Context, payload []byte) (*task.T return nil, err } if target.Driver == active.Driver { - if err := storage.SaveActiveConfig(ctx, target); err != nil { + if err := objectstore.SaveActiveConfig(ctx, target); err != nil { return nil, fmt.Errorf("activate same-driver storage config: %w", err) } message := fmt.Sprintf("存储配置已更新,活动存储保持为 %s", target.Driver) @@ -139,7 +139,7 @@ func (h *MigrationHandler) Execute(ctx context.Context, payload []byte) (*task.T return nil, fmt.Errorf("count source objects: %w", err) } if total == 0 { - if err := storage.SaveActiveConfig(ctx, target); err != nil { + if err := objectstore.SaveActiveConfig(ctx, target); err != nil { return nil, fmt.Errorf("activate empty storage config: %w", err) } message := fmt.Sprintf("当前存储没有需要迁移的对象,活动存储已切换为 %s", target.Driver) @@ -147,11 +147,11 @@ func (h *MigrationHandler) Execute(ctx context.Context, payload []byte) (*task.T return &task.TaskResult{Message: message}, nil } - sourceBackend, err := storage.NewBackend(ctx, active, active.Driver) + sourceBackend, err := objectstore.NewBackend(ctx, active, active.Driver) if err != nil { return nil, fmt.Errorf("create source storage: %w", err) } - targetBackend, err := storage.NewBackend(ctx, target, target.Driver) + targetBackend, err := objectstore.NewBackend(ctx, target, target.Driver) if err != nil { return nil, fmt.Errorf("create target storage: %w", err) } @@ -162,7 +162,7 @@ func (h *MigrationHandler) Execute(ctx context.Context, payload []byte) (*task.T return nil, err } - if err := storage.SaveActiveConfig(ctx, target); err != nil { + if err := objectstore.SaveActiveConfig(ctx, target); err != nil { return nil, fmt.Errorf("activate target storage: %w", err) } message := fmt.Sprintf("存储迁移完成,共迁移 %d 个对象,活动存储已切换为 %s", migrated, target.Driver) @@ -196,8 +196,8 @@ type migrationObject struct { func migrateObjects( ctx context.Context, - sourceBackend storage.Backend, - targetBackend storage.Backend, + sourceBackend objectstore.Backend, + targetBackend objectstore.Backend, total int64, ) (int64, error) { const batchSize = 50 @@ -258,8 +258,8 @@ func migrateObjects( func migrateSingleObject( ctx context.Context, - sourceBackend storage.Backend, - targetBackend storage.Backend, + sourceBackend objectstore.Backend, + targetBackend objectstore.Backend, obj migrationObject, sha256HexLength int, ) error { @@ -322,7 +322,7 @@ func migrateSingleObject( func shouldSkipMigration( ctx context.Context, - targetBackend storage.Backend, + targetBackend objectstore.Backend, obj migrationObject, ) bool { targetObj, err := targetBackend.Get(ctx, obj.FilePath) diff --git a/internal/apps/upload/task/storage_migration_task_test.go b/internal/apps/upload/task/storage_migration_task_test.go index 79bb4ba0..43a101d2 100644 --- a/internal/apps/upload/task/storage_migration_task_test.go +++ b/internal/apps/upload/task/storage_migration_task_test.go @@ -16,9 +16,9 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/storage" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/alicebob/miniredis/v2" "github.com/redis/go-redis/v9" @@ -39,21 +39,21 @@ func TestMigrationHandlerExecute(t *testing.T) { } ctx := context.Background() - active := storage.DefaultConfig() + active := objectstore.DefaultConfig() active.Local.Root = sourceRoot - if err := storage.SaveActiveConfig(ctx, active); err != nil { + if err := objectstore.SaveActiveConfig(ctx, active); err != nil { t.Fatalf("SaveActiveConfig() returned error: %v", err) } - target := storage.DefaultConfig() - target.Driver = storage.DriverS3 - target.S3 = storage.ObjectConfig{ + target := objectstore.DefaultConfig() + target.Driver = objectstore.DriverS3 + target.S3 = objectstore.ObjectConfig{ Region: "us-east-1", Bucket: "target", AccessKeyID: "key", SecretAccessKey: "secret", } payload, err := json.Marshal(struct { - Target storage.Config `json:"target"` + Target objectstore.Config `json:"target"` }{Target: target}) if err != nil { t.Fatalf("Marshal(storageMigrationPayload) returned error: %v", err) @@ -76,12 +76,12 @@ func TestMigrationHandlerExecute(t *testing.T) { } var copied bytes.Buffer - restore := storage.MockStorage( + restore := objectstore.MockStorage( func(_ context.Context, _ string, body io.Reader, _ int64, _ string) error { _, err := io.Copy(&copied, body) return err }, - func(context.Context, string) (*storage.Object, error) { + func(context.Context, string) (*objectstore.Object, error) { return nil, nil }, func(context.Context, string) error { @@ -105,12 +105,12 @@ func TestMigrationHandlerExecute(t *testing.T) { if err := dbConn.First(&migrated, upload.ID).Error; err != nil { t.Fatalf("First(upload) returned error: %v", err) } - current, err := storage.LoadConfig(ctx) + current, err := objectstore.LoadConfig(ctx) if err != nil { t.Fatalf("LoadConfig() returned error: %v", err) } - if current.Driver != storage.DriverS3 { - t.Errorf("active driver = %q, want %q", current.Driver, storage.DriverS3) + if current.Driver != objectstore.DriverS3 { + t.Errorf("active driver = %q, want %q", current.Driver, objectstore.DriverS3) } } @@ -134,22 +134,22 @@ func TestMigrationHandlerExecuteWithHashValidation(t *testing.T) { correctHash := hex.EncodeToString(h.Sum(nil)) ctx := context.Background() - active := storage.DefaultConfig() + active := objectstore.DefaultConfig() active.Local.Root = sourceRoot - if err := storage.SaveActiveConfig(ctx, active); err != nil { + if err := objectstore.SaveActiveConfig(ctx, active); err != nil { t.Fatalf("SaveActiveConfig() returned error: %v", err) } - target := storage.DefaultConfig() - target.Driver = storage.DriverS3 - target.S3 = storage.ObjectConfig{ + target := objectstore.DefaultConfig() + target.Driver = objectstore.DriverS3 + target.S3 = objectstore.ObjectConfig{ Region: "us-east-1", Bucket: "target", AccessKeyID: "key", SecretAccessKey: "secret", } payload, err := json.Marshal(struct { - Target storage.Config `json:"target"` + Target objectstore.Config `json:"target"` }{Target: target}) if err != nil { t.Fatalf("Marshal(storageMigrationPayload) returned error: %v", err) @@ -173,14 +173,14 @@ func TestMigrationHandlerExecuteWithHashValidation(t *testing.T) { } var copied bytes.Buffer - restore := storage.MockStorage( + restore := objectstore.MockStorage( func(_ context.Context, _ string, body io.Reader, _ int64, _ string) error { copied.Reset() _, err := io.Copy(&copied, body) return err }, - func(context.Context, string) (*storage.Object, error) { - return &storage.Object{ + func(context.Context, string) (*objectstore.Object, error) { + return &objectstore.Object{ Body: io.NopCloser(bytes.NewBuffer(copied.Bytes())), ContentLength: int64(copied.Len()), ContentType: "text/plain", @@ -253,13 +253,13 @@ func TestMigrationHandlerExecuteWithRedisLock(t *testing.T) { t.Fatalf("Failed to set manual lock in Redis: %v", err) } - active := storage.DefaultConfig() - if err := storage.SaveActiveConfig(ctx, active); err != nil { + active := objectstore.DefaultConfig() + if err := objectstore.SaveActiveConfig(ctx, active); err != nil { t.Fatalf("SaveActiveConfig() returned error: %v", err) } payload, err := json.Marshal(struct { - Target storage.Config `json:"target"` + Target objectstore.Config `json:"target"` }{Target: active}) if err != nil { t.Fatalf("Marshal payload failed: %v", err) diff --git a/internal/apps/upload/task/tasks.go b/internal/apps/upload/task/tasks.go index 59b1208f..a36a6a96 100644 --- a/internal/apps/upload/task/tasks.go +++ b/internal/apps/upload/task/tasks.go @@ -14,9 +14,9 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/filesrv" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" ) const ( diff --git a/internal/apps/upload/task/tasks_test.go b/internal/apps/upload/task/tasks_test.go index f75bec6b..adab09a0 100644 --- a/internal/apps/upload/task/tasks_test.go +++ b/internal/apps/upload/task/tasks_test.go @@ -20,11 +20,11 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/upload/filesrv" "github.com/Rain-kl/Wavelet/internal/apps/upload/shared" uploadstats "github.com/Rain-kl/Wavelet/internal/apps/upload/stats" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/diskcache" + "github.com/Rain-kl/Wavelet/internal/infra/diskcache" + "github.com/Rain-kl/Wavelet/internal/infra/objectstore" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/storage" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -36,20 +36,20 @@ func TestSystemCleanupHandler_Execute(t *testing.T) { deleteCount := 0 // Mock S3 存储并记录 Delete,cleanup 不应物理删除共享对象。 - storageMock := storage.MockStorage( + storageMock := objectstore.MockStorage( func(ctx context.Context, key string, body io.Reader, size int64, contentType string) error { return nil }, - func(ctx context.Context, key string) (*storage.Object, error) { return nil, nil }, + func(ctx context.Context, key string) (*objectstore.Object, error) { return nil, nil }, func(ctx context.Context, key string) error { deleteCount++ return nil }, ) defer storageMock() - storage.IsEnabledFunc = func() bool { return true } - defer func() { storage.IsEnabledFunc = func() bool { return false } }() - storage.ResetCache() + objectstore.IsEnabledFunc = func() bool { return true } + defer func() { objectstore.IsEnabledFunc = func() bool { return false } }() + objectstore.ResetCache() ctx := context.Background() err := db.DB(ctx).AutoMigrate(&model.PushHistory{}) @@ -195,11 +195,11 @@ func TestSystemCleanupHandler_ExecuteNoFiles(t *testing.T) { defer cleanup() // Mock S3 存储 - storageMock := storage.MockStorage( + storageMock := objectstore.MockStorage( func(ctx context.Context, key string, body io.Reader, size int64, contentType string) error { return nil }, - func(ctx context.Context, key string) (*storage.Object, error) { return nil, nil }, + func(ctx context.Context, key string) (*objectstore.Object, error) { return nil, nil }, func(ctx context.Context, key string) error { return nil }, ) defer storageMock() @@ -293,9 +293,9 @@ func TestWarmImageCacheHandlerExecute(t *testing.T) { testDir := t.TempDir() ctx := context.Background() - active := storage.DefaultConfig() + active := objectstore.DefaultConfig() active.Local.Root = testDir - if err := storage.SaveActiveConfig(ctx, active); err != nil { + if err := objectstore.SaveActiveConfig(ctx, active); err != nil { t.Fatalf("SaveActiveConfig() returned error: %v", err) } diff --git a/internal/apps/user/access_tokens.go b/internal/apps/user/access_tokens.go index 647cfbca..047ea420 100644 --- a/internal/apps/user/access_tokens.go +++ b/internal/apps/user/access_tokens.go @@ -15,7 +15,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/repository" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) type createTokenRequest struct { diff --git a/internal/apps/user/logics.go b/internal/apps/user/logics.go index a88c7c8e..bd97a277 100644 --- a/internal/apps/user/logics.go +++ b/internal/apps/user/logics.go @@ -13,10 +13,10 @@ import ( "strings" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/task" pkgu "github.com/Rain-kl/Wavelet/pkg/util" ) diff --git a/internal/apps/user/logics_test.go b/internal/apps/user/logics_test.go index fd8de420..f9a284c1 100644 --- a/internal/apps/user/logics_test.go +++ b/internal/apps/user/logics_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/internal/testhelper" diff --git a/internal/apps/user/routers.go b/internal/apps/user/routers.go index d2aa9a42..3f602553 100644 --- a/internal/apps/user/routers.go +++ b/internal/apps/user/routers.go @@ -10,13 +10,13 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" "github.com/Rain-kl/Wavelet/internal/listener" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" + "github.com/Rain-kl/Wavelet/internal/shared" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" @@ -124,7 +124,7 @@ func Login(c *gin.Context) { } if !user.IsActive { logger.WarnF(ctx, "[LoginAudit] banned user login attempt for username: %s, ID: %d, IP: %s", user.Username, user.ID, c.ClientIP()) - response.AbortBadRequest(c, common.BannedAccount) + response.AbortBadRequest(c, shared.BannedAccount) return } diff --git a/internal/apps/user/routers_test.go b/internal/apps/user/routers_test.go index 6699b6aa..4e6385ba 100644 --- a/internal/apps/user/routers_test.go +++ b/internal/apps/user/routers_test.go @@ -14,8 +14,8 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/internal/testhelper" @@ -23,7 +23,7 @@ import ( "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" ) func setupUserTestRouter(t *testing.T) *gin.Engine { diff --git a/internal/apps/user/tasks.go b/internal/apps/user/tasks.go index 01d9796c..167854a6 100644 --- a/internal/apps/user/tasks.go +++ b/internal/apps/user/tasks.go @@ -11,9 +11,9 @@ import ( "strconv" "strings" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" - "github.com/Rain-kl/Wavelet/internal/task" "github.com/Rain-kl/Wavelet/pkg/mail" ) diff --git a/internal/cmd/all.go b/internal/cmd/all.go index 06f35f76..db7f0799 100644 --- a/internal/cmd/all.go +++ b/internal/cmd/all.go @@ -9,10 +9,10 @@ import ( "log" "sync" - "github.com/Rain-kl/Wavelet/internal/bootstrap" + "github.com/Rain-kl/Wavelet/internal/infra/task/scheduler" + "github.com/Rain-kl/Wavelet/internal/infra/task/worker" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/Rain-kl/Wavelet/internal/router" - "github.com/Rain-kl/Wavelet/internal/task/scheduler" - "github.com/Rain-kl/Wavelet/internal/task/worker" "github.com/spf13/cobra" ) diff --git a/internal/cmd/api.go b/internal/cmd/api.go index 86604d08..1562cdf1 100644 --- a/internal/cmd/api.go +++ b/internal/cmd/api.go @@ -5,7 +5,7 @@ package cmd import ( - "github.com/Rain-kl/Wavelet/internal/bootstrap" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/Rain-kl/Wavelet/internal/router" "github.com/spf13/cobra" ) diff --git a/internal/cmd/banner.go b/internal/cmd/banner.go index d0f21152..f079be73 100644 --- a/internal/cmd/banner.go +++ b/internal/cmd/banner.go @@ -10,8 +10,8 @@ import ( "strings" "github.com/Rain-kl/Wavelet/internal/buildinfo" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/migrator" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/migrator" ) type startupState struct { diff --git a/internal/cmd/banner_test.go b/internal/cmd/banner_test.go index 6e0cd1b2..4b4797e7 100644 --- a/internal/cmd/banner_test.go +++ b/internal/cmd/banner_test.go @@ -8,8 +8,8 @@ import ( "testing" "github.com/Rain-kl/Wavelet/internal/buildinfo" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/migrator" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/migrator" ) func TestFormatStartupBanner(t *testing.T) { diff --git a/internal/cmd/bootstrap.go b/internal/cmd/bootstrap.go index 423aa461..2460cdaf 100644 --- a/internal/cmd/bootstrap.go +++ b/internal/cmd/bootstrap.go @@ -6,7 +6,7 @@ package cmd import ( "context" - "github.com/Rain-kl/Wavelet/internal/bootstrap" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/Rain-kl/Wavelet/pkg/trace" ) diff --git a/internal/cmd/reset_passwd.go b/internal/cmd/reset_passwd.go index 68b4ce74..2b8c39ed 100644 --- a/internal/cmd/reset_passwd.go +++ b/internal/cmd/reset_passwd.go @@ -14,10 +14,10 @@ import ( "strings" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/bootstrap" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/migrator" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/migrator" "github.com/Rain-kl/Wavelet/internal/model" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/spf13/cobra" "gorm.io/gorm" diff --git a/internal/cmd/root.go b/internal/cmd/root.go index c798d5af..d30ea4b7 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -10,8 +10,8 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/buildinfo" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db/migrator" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/migrator" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/Rain-kl/Wavelet/pkg/trace" "github.com/spf13/cobra" diff --git a/internal/cmd/scheduler.go b/internal/cmd/scheduler.go index f3ad56c4..75f0a022 100644 --- a/internal/cmd/scheduler.go +++ b/internal/cmd/scheduler.go @@ -7,8 +7,8 @@ package cmd import ( "log" - "github.com/Rain-kl/Wavelet/internal/bootstrap" - "github.com/Rain-kl/Wavelet/internal/task/scheduler" + "github.com/Rain-kl/Wavelet/internal/infra/task/scheduler" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/spf13/cobra" ) diff --git a/internal/cmd/worker.go b/internal/cmd/worker.go index 65705a37..0c4d42be 100644 --- a/internal/cmd/worker.go +++ b/internal/cmd/worker.go @@ -7,8 +7,8 @@ package cmd import ( "log" - "github.com/Rain-kl/Wavelet/internal/bootstrap" - "github.com/Rain-kl/Wavelet/internal/task/worker" + "github.com/Rain-kl/Wavelet/internal/infra/task/worker" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/spf13/cobra" ) diff --git a/internal/common/constants.go b/internal/common/constants.go deleted file mode 100644 index f317898a..00000000 --- a/internal/common/constants.go +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2025 linux.do -// Copyright 2026 Arctel.net -// SPDX-License-Identifier: Apache-2.0 - -// Package common 提供跨模块共享的常量、错误定义和通用工具函数。 -package common diff --git a/internal/config/config.go b/internal/infra/config/config.go similarity index 100% rename from internal/config/config.go rename to internal/infra/config/config.go diff --git a/internal/config/config_test.go b/internal/infra/config/config_test.go similarity index 100% rename from internal/config/config_test.go rename to internal/infra/config/config_test.go diff --git a/internal/config/model.go b/internal/infra/config/model.go similarity index 100% rename from internal/config/model.go rename to internal/infra/config/model.go diff --git a/internal/diskcache/cache.go b/internal/infra/diskcache/cache.go similarity index 97% rename from internal/diskcache/cache.go rename to internal/infra/diskcache/cache.go index c52bfaee..e791fb2d 100644 --- a/internal/diskcache/cache.go +++ b/internal/infra/diskcache/cache.go @@ -10,7 +10,7 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" pkgcache "github.com/Rain-kl/Wavelet/pkg/cache/disk" diff --git a/internal/diskcache/cache_test.go b/internal/infra/diskcache/cache_test.go similarity index 96% rename from internal/diskcache/cache_test.go rename to internal/infra/diskcache/cache_test.go index c995f989..416f0304 100644 --- a/internal/diskcache/cache_test.go +++ b/internal/infra/diskcache/cache_test.go @@ -8,7 +8,7 @@ import ( "os" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/Rain-kl/Wavelet/internal/testhelper" diff --git a/internal/storage/config.go b/internal/infra/objectstore/config.go similarity index 97% rename from internal/storage/config.go rename to internal/infra/objectstore/config.go index 2fe84811..0e90c4d3 100644 --- a/internal/storage/config.go +++ b/internal/infra/objectstore/config.go @@ -1,8 +1,8 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -// Package storage provides dynamically configured file storage backends. -package storage +// Package objectstore provides dynamically configured file storage backends. +package objectstore import ( "context" @@ -12,7 +12,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "gorm.io/gorm" diff --git a/internal/storage/http.go b/internal/infra/objectstore/http.go similarity index 98% rename from internal/storage/http.go rename to internal/infra/objectstore/http.go index f901ce7b..fe6698e2 100644 --- a/internal/storage/http.go +++ b/internal/infra/objectstore/http.go @@ -1,7 +1,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package storage +package objectstore import ( "context" diff --git a/internal/storage/local.go b/internal/infra/objectstore/local.go similarity index 99% rename from internal/storage/local.go rename to internal/infra/objectstore/local.go index 29591df7..3e172116 100644 --- a/internal/storage/local.go +++ b/internal/infra/objectstore/local.go @@ -1,7 +1,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package storage +package objectstore import ( "context" diff --git a/internal/storage/local_test.go b/internal/infra/objectstore/local_test.go similarity index 98% rename from internal/storage/local_test.go rename to internal/infra/objectstore/local_test.go index d8374543..8525f078 100644 --- a/internal/storage/local_test.go +++ b/internal/infra/objectstore/local_test.go @@ -1,7 +1,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package storage +package objectstore import ( "bytes" diff --git a/internal/storage/oss.go b/internal/infra/objectstore/oss.go similarity index 99% rename from internal/storage/oss.go rename to internal/infra/objectstore/oss.go index 9b4aea2b..356d14ef 100644 --- a/internal/storage/oss.go +++ b/internal/infra/objectstore/oss.go @@ -1,7 +1,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package storage +package objectstore import ( "context" diff --git a/internal/storage/s3.go b/internal/infra/objectstore/s3.go similarity index 99% rename from internal/storage/s3.go rename to internal/infra/objectstore/s3.go index 3203ee69..a314be48 100644 --- a/internal/storage/s3.go +++ b/internal/infra/objectstore/s3.go @@ -1,7 +1,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package storage +package objectstore import ( "context" diff --git a/internal/storage/storage.go b/internal/infra/objectstore/storage.go similarity index 98% rename from internal/storage/storage.go rename to internal/infra/objectstore/storage.go index 26a2560d..984a69bd 100644 --- a/internal/storage/storage.go +++ b/internal/infra/objectstore/storage.go @@ -1,7 +1,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package storage +package objectstore import ( "context" @@ -13,7 +13,7 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "gorm.io/gorm" diff --git a/internal/storage/storage_test.go b/internal/infra/objectstore/storage_test.go similarity index 97% rename from internal/storage/storage_test.go rename to internal/infra/objectstore/storage_test.go index 59a1dfec..f2881b82 100644 --- a/internal/storage/storage_test.go +++ b/internal/infra/objectstore/storage_test.go @@ -1,7 +1,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package storage +package objectstore import ( "context" @@ -11,7 +11,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/alicebob/miniredis/v2" "github.com/redis/go-redis/v9" ) diff --git a/internal/storage/webdav.go b/internal/infra/objectstore/webdav.go similarity index 99% rename from internal/storage/webdav.go rename to internal/infra/objectstore/webdav.go index 5e080e66..5d8e3e65 100644 --- a/internal/storage/webdav.go +++ b/internal/infra/objectstore/webdav.go @@ -1,7 +1,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package storage +package objectstore import ( "context" diff --git a/internal/db/batchwriter/config.go b/internal/infra/persistence/batchwriter/config.go similarity index 100% rename from internal/db/batchwriter/config.go rename to internal/infra/persistence/batchwriter/config.go diff --git a/internal/db/batchwriter/errs.go b/internal/infra/persistence/batchwriter/errs.go similarity index 100% rename from internal/db/batchwriter/errs.go rename to internal/infra/persistence/batchwriter/errs.go diff --git a/internal/db/batchwriter/writer.go b/internal/infra/persistence/batchwriter/writer.go similarity index 100% rename from internal/db/batchwriter/writer.go rename to internal/infra/persistence/batchwriter/writer.go diff --git a/internal/db/batchwriter/writer_test.go b/internal/infra/persistence/batchwriter/writer_test.go similarity index 100% rename from internal/db/batchwriter/writer_test.go rename to internal/infra/persistence/batchwriter/writer_test.go diff --git a/internal/db/clickhouse.go b/internal/infra/persistence/clickhouse.go similarity index 98% rename from internal/db/clickhouse.go rename to internal/infra/persistence/clickhouse.go index 260b5c67..81426917 100644 --- a/internal/db/clickhouse.go +++ b/internal/infra/persistence/clickhouse.go @@ -12,7 +12,7 @@ import ( "github.com/ClickHouse/clickhouse-go/v2" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" ) const ( diff --git a/internal/db/errs.go b/internal/infra/persistence/errs.go similarity index 100% rename from internal/db/errs.go rename to internal/infra/persistence/errs.go diff --git a/internal/db/idgen/snowflake.go b/internal/infra/persistence/idgen/snowflake.go similarity index 95% rename from internal/db/idgen/snowflake.go rename to internal/infra/persistence/idgen/snowflake.go index 98bef8bb..e828a578 100644 --- a/internal/db/idgen/snowflake.go +++ b/internal/infra/persistence/idgen/snowflake.go @@ -9,7 +9,7 @@ import ( "fmt" "log" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/bwmarrin/snowflake" ) diff --git a/internal/db/idgen/snowflake_test.go b/internal/infra/persistence/idgen/snowflake_test.go similarity index 100% rename from internal/db/idgen/snowflake_test.go rename to internal/infra/persistence/idgen/snowflake_test.go diff --git a/internal/db/migrator/clickhouse.go b/internal/infra/persistence/migrator/clickhouse.go similarity index 98% rename from internal/db/migrator/clickhouse.go rename to internal/infra/persistence/migrator/clickhouse.go index 78fa8cf8..170034fd 100644 --- a/internal/db/migrator/clickhouse.go +++ b/internal/infra/persistence/migrator/clickhouse.go @@ -13,7 +13,7 @@ import ( "time" "github.com/ClickHouse/clickhouse-go/v2" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/pressly/goose/v3" ) diff --git a/internal/db/migrator/clickhouse_test.go b/internal/infra/persistence/migrator/clickhouse_test.go similarity index 96% rename from internal/db/migrator/clickhouse_test.go rename to internal/infra/persistence/migrator/clickhouse_test.go index 69189b35..19361d0f 100644 --- a/internal/db/migrator/clickhouse_test.go +++ b/internal/infra/persistence/migrator/clickhouse_test.go @@ -6,7 +6,7 @@ package migrator import ( "testing" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/pressly/goose/v3" ) diff --git a/internal/db/migrator/goose/clickhouse/202606190001_create_user_access_logs.sql b/internal/infra/persistence/migrator/goose/clickhouse/202606190001_create_user_access_logs.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202606190001_create_user_access_logs.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202606190001_create_user_access_logs.sql diff --git a/internal/db/migrator/goose/clickhouse/202606200001_create_node_access_logs.sql b/internal/infra/persistence/migrator/goose/clickhouse/202606200001_create_node_access_logs.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202606200001_create_node_access_logs.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202606200001_create_node_access_logs.sql diff --git a/internal/db/migrator/goose/clickhouse/202606200002_create_node_observability_tables.sql b/internal/infra/persistence/migrator/goose/clickhouse/202606200002_create_node_observability_tables.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202606200002_create_node_observability_tables.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202606200002_create_node_observability_tables.sql diff --git a/internal/db/migrator/goose/clickhouse/202607020001_optimize_analytics_tables.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607020001_optimize_analytics_tables.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607020001_optimize_analytics_tables.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607020001_optimize_analytics_tables.sql diff --git a/internal/db/migrator/goose/clickhouse/202607020002_create_node_traffic_hourly_mv.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607020002_create_node_traffic_hourly_mv.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607020002_create_node_traffic_hourly_mv.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607020002_create_node_traffic_hourly_mv.sql diff --git a/internal/db/migrator/goose/clickhouse/202607100001_create_node_metric_openresty_hourly.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607100001_create_node_metric_openresty_hourly.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607100001_create_node_metric_openresty_hourly.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607100001_create_node_metric_openresty_hourly.sql diff --git a/internal/db/migrator/goose/clickhouse/202607100002_node_traffic_hourly_ttl_uv.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607100002_node_traffic_hourly_ttl_uv.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607100002_node_traffic_hourly_ttl_uv.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607100002_node_traffic_hourly_ttl_uv.sql diff --git a/internal/db/migrator/goose/clickhouse/202607100003_backfill_metric_openresty_hourly.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607100003_backfill_metric_openresty_hourly.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607100003_backfill_metric_openresty_hourly.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607100003_backfill_metric_openresty_hourly.sql diff --git a/internal/db/migrator/goose/clickhouse/202607120001_add_bytes_sent_to_node_access_logs.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607120001_add_bytes_sent_to_node_access_logs.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607120001_add_bytes_sent_to_node_access_logs.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607120001_add_bytes_sent_to_node_access_logs.sql diff --git a/internal/db/migrator/goose/clickhouse/202607180001_access_log_request_length.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607180001_access_log_request_length.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607180001_access_log_request_length.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607180001_access_log_request_length.sql diff --git a/internal/db/migrator/goose/clickhouse/202607180002_edge_health_access_log_hourly_drop_legacy.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607180002_edge_health_access_log_hourly_drop_legacy.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607180002_edge_health_access_log_hourly_drop_legacy.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607180002_edge_health_access_log_hourly_drop_legacy.sql diff --git a/internal/db/migrator/goose/clickhouse/202607180003_backfill_access_log_hourly.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607180003_backfill_access_log_hourly.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607180003_backfill_access_log_hourly.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607180003_backfill_access_log_hourly.sql diff --git a/internal/db/migrator/goose/clickhouse/202607180004_access_log_user_agent.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607180004_access_log_user_agent.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607180004_access_log_user_agent.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607180004_access_log_user_agent.sql diff --git a/internal/db/migrator/goose/clickhouse/202607180005_access_log_cache_status.sql b/internal/infra/persistence/migrator/goose/clickhouse/202607180005_access_log_cache_status.sql similarity index 100% rename from internal/db/migrator/goose/clickhouse/202607180005_access_log_cache_status.sql rename to internal/infra/persistence/migrator/goose/clickhouse/202607180005_access_log_cache_status.sql diff --git a/internal/db/migrator/goose/postgres/202606050001_bridge_legacy.sql b/internal/infra/persistence/migrator/goose/postgres/202606050001_bridge_legacy.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606050001_bridge_legacy.sql rename to internal/infra/persistence/migrator/goose/postgres/202606050001_bridge_legacy.sql diff --git a/internal/db/migrator/goose/postgres/202606090001_initial_schema.sql b/internal/infra/persistence/migrator/goose/postgres/202606090001_initial_schema.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606090001_initial_schema.sql rename to internal/infra/persistence/migrator/goose/postgres/202606090001_initial_schema.sql diff --git a/internal/db/migrator/goose/postgres/202606100001_create_schedules.sql b/internal/infra/persistence/migrator/goose/postgres/202606100001_create_schedules.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606100001_create_schedules.sql rename to internal/infra/persistence/migrator/goose/postgres/202606100001_create_schedules.sql diff --git a/internal/db/migrator/goose/postgres/202606100002_access_token_is_admin.sql b/internal/infra/persistence/migrator/goose/postgres/202606100002_access_token_is_admin.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606100002_access_token_is_admin.sql rename to internal/infra/persistence/migrator/goose/postgres/202606100002_access_token_is_admin.sql diff --git a/internal/db/migrator/goose/postgres/202606110001_remove_access_token_last_used_at.sql b/internal/infra/persistence/migrator/goose/postgres/202606110001_remove_access_token_last_used_at.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606110001_remove_access_token_last_used_at.sql rename to internal/infra/persistence/migrator/goose/postgres/202606110001_remove_access_token_last_used_at.sql diff --git a/internal/db/migrator/goose/postgres/202606110002_alter_schedules_id_auto_increment.sql b/internal/infra/persistence/migrator/goose/postgres/202606110002_alter_schedules_id_auto_increment.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606110002_alter_schedules_id_auto_increment.sql rename to internal/infra/persistence/migrator/goose/postgres/202606110002_alter_schedules_id_auto_increment.sql diff --git a/internal/db/migrator/goose/postgres/202606110003_rename_tables_to_w_prefix.sql b/internal/infra/persistence/migrator/goose/postgres/202606110003_rename_tables_to_w_prefix.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606110003_rename_tables_to_w_prefix.sql rename to internal/infra/persistence/migrator/goose/postgres/202606110003_rename_tables_to_w_prefix.sql diff --git a/internal/db/migrator/goose/postgres/202606110004_add_file_access_whitelist_config.sql b/internal/infra/persistence/migrator/goose/postgres/202606110004_add_file_access_whitelist_config.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606110004_add_file_access_whitelist_config.sql rename to internal/infra/persistence/migrator/goose/postgres/202606110004_add_file_access_whitelist_config.sql diff --git a/internal/db/migrator/goose/postgres/202606110005_add_disk_cache_configs.sql b/internal/infra/persistence/migrator/goose/postgres/202606110005_add_disk_cache_configs.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606110005_add_disk_cache_configs.sql rename to internal/infra/persistence/migrator/goose/postgres/202606110005_add_disk_cache_configs.sql diff --git a/internal/db/migrator/goose/postgres/202606120001_add_login_session_ttl_config.sql b/internal/infra/persistence/migrator/goose/postgres/202606120001_add_login_session_ttl_config.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606120001_add_login_session_ttl_config.sql rename to internal/infra/persistence/migrator/goose/postgres/202606120001_add_login_session_ttl_config.sql diff --git a/internal/db/migrator/goose/postgres/202606120002_add_update_upstream_repository_config.sql b/internal/infra/persistence/migrator/goose/postgres/202606120002_add_update_upstream_repository_config.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606120002_add_update_upstream_repository_config.sql rename to internal/infra/persistence/migrator/goose/postgres/202606120002_add_update_upstream_repository_config.sql diff --git a/internal/db/migrator/goose/postgres/202606130001_add_upload_access_mode.sql b/internal/infra/persistence/migrator/goose/postgres/202606130001_add_upload_access_mode.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606130001_add_upload_access_mode.sql rename to internal/infra/persistence/migrator/goose/postgres/202606130001_add_upload_access_mode.sql diff --git a/internal/db/migrator/goose/postgres/202606130002_expand_system_config_value.sql b/internal/infra/persistence/migrator/goose/postgres/202606130002_expand_system_config_value.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606130002_expand_system_config_value.sql rename to internal/infra/persistence/migrator/goose/postgres/202606130002_expand_system_config_value.sql diff --git a/internal/db/migrator/goose/postgres/202606130003_add_storage_config.sql b/internal/infra/persistence/migrator/goose/postgres/202606130003_add_storage_config.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606130003_add_storage_config.sql rename to internal/infra/persistence/migrator/goose/postgres/202606130003_add_storage_config.sql diff --git a/internal/db/migrator/goose/postgres/202606140001_create_push_tables.sql b/internal/infra/persistence/migrator/goose/postgres/202606140001_create_push_tables.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606140001_create_push_tables.sql rename to internal/infra/persistence/migrator/goose/postgres/202606140001_create_push_tables.sql diff --git a/internal/db/migrator/goose/postgres/202606140003_add_system_user.sql b/internal/infra/persistence/migrator/goose/postgres/202606140003_add_system_user.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606140003_add_system_user.sql rename to internal/infra/persistence/migrator/goose/postgres/202606140003_add_system_user.sql diff --git a/internal/db/migrator/goose/postgres/202606140004_create_push_channels.sql b/internal/infra/persistence/migrator/goose/postgres/202606140004_create_push_channels.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606140004_create_push_channels.sql rename to internal/infra/persistence/migrator/goose/postgres/202606140004_create_push_channels.sql diff --git a/internal/db/migrator/goose/postgres/202606140005_update_system_cleanup_schedule.sql b/internal/infra/persistence/migrator/goose/postgres/202606140005_update_system_cleanup_schedule.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606140005_update_system_cleanup_schedule.sql rename to internal/infra/persistence/migrator/goose/postgres/202606140005_update_system_cleanup_schedule.sql diff --git a/internal/db/migrator/goose/postgres/202606150001_add_task_type_to_push_events.sql b/internal/infra/persistence/migrator/goose/postgres/202606150001_add_task_type_to_push_events.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606150001_add_task_type_to_push_events.sql rename to internal/infra/persistence/migrator/goose/postgres/202606150001_add_task_type_to_push_events.sql diff --git a/internal/db/migrator/goose/postgres/202606160001_remove_push_config.sql b/internal/infra/persistence/migrator/goose/postgres/202606160001_remove_push_config.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606160001_remove_push_config.sql rename to internal/infra/persistence/migrator/goose/postgres/202606160001_remove_push_config.sql diff --git a/internal/db/migrator/goose/postgres/202606170001_add_upload_composite_indexes.sql b/internal/infra/persistence/migrator/goose/postgres/202606170001_add_upload_composite_indexes.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606170001_add_upload_composite_indexes.sql rename to internal/infra/persistence/migrator/goose/postgres/202606170001_add_upload_composite_indexes.sql diff --git a/internal/db/migrator/goose/postgres/202606170002_create_upload_stats_table.sql b/internal/infra/persistence/migrator/goose/postgres/202606170002_create_upload_stats_table.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606170002_create_upload_stats_table.sql rename to internal/infra/persistence/migrator/goose/postgres/202606170002_create_upload_stats_table.sql diff --git a/internal/db/migrator/goose/postgres/202606170003_backfill_upload_stats.sql b/internal/infra/persistence/migrator/goose/postgres/202606170003_backfill_upload_stats.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606170003_backfill_upload_stats.sql rename to internal/infra/persistence/migrator/goose/postgres/202606170003_backfill_upload_stats.sql diff --git a/internal/db/migrator/goose/postgres/202606180001_drop_upload_storage_driver.sql b/internal/infra/persistence/migrator/goose/postgres/202606180001_drop_upload_storage_driver.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606180001_drop_upload_storage_driver.sql rename to internal/infra/persistence/migrator/goose/postgres/202606180001_drop_upload_storage_driver.sql diff --git a/internal/db/migrator/goose/postgres/202606190001_create_of_options.sql b/internal/infra/persistence/migrator/goose/postgres/202606190001_create_of_options.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190001_create_of_options.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190001_create_of_options.sql diff --git a/internal/db/migrator/goose/postgres/202606190002_create_of_origins.sql b/internal/infra/persistence/migrator/goose/postgres/202606190002_create_of_origins.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190002_create_of_origins.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190002_create_of_origins.sql diff --git a/internal/db/migrator/goose/postgres/202606190003_create_of_apply_logs.sql b/internal/infra/persistence/migrator/goose/postgres/202606190003_create_of_apply_logs.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190003_create_of_apply_logs.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190003_create_of_apply_logs.sql diff --git a/internal/db/migrator/goose/postgres/202606190004_create_of_proxy_routes.sql b/internal/infra/persistence/migrator/goose/postgres/202606190004_create_of_proxy_routes.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190004_create_of_proxy_routes.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190004_create_of_proxy_routes.sql diff --git a/internal/db/migrator/goose/postgres/202606190005_create_of_nodes.sql b/internal/infra/persistence/migrator/goose/postgres/202606190005_create_of_nodes.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190005_create_of_nodes.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190005_create_of_nodes.sql diff --git a/internal/db/migrator/goose/postgres/202606190006_create_of_waf_tables.sql b/internal/infra/persistence/migrator/goose/postgres/202606190006_create_of_waf_tables.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190006_create_of_waf_tables.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190006_create_of_waf_tables.sql diff --git a/internal/db/migrator/goose/postgres/202606190007_create_of_tls_tables.sql b/internal/infra/persistence/migrator/goose/postgres/202606190007_create_of_tls_tables.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190007_create_of_tls_tables.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190007_create_of_tls_tables.sql diff --git a/internal/db/migrator/goose/postgres/202606190008_create_of_config_versions.sql b/internal/infra/persistence/migrator/goose/postgres/202606190008_create_of_config_versions.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190008_create_of_config_versions.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190008_create_of_config_versions.sql diff --git a/internal/db/migrator/goose/postgres/202606190009_create_of_pages_tables.sql b/internal/infra/persistence/migrator/goose/postgres/202606190009_create_of_pages_tables.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190009_create_of_pages_tables.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190009_create_of_pages_tables.sql diff --git a/internal/db/migrator/goose/postgres/202606190010_create_of_observability_tables.sql b/internal/infra/persistence/migrator/goose/postgres/202606190010_create_of_observability_tables.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190010_create_of_observability_tables.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190010_create_of_observability_tables.sql diff --git a/internal/db/migrator/goose/postgres/202606190011_add_of_node_access_logs_composite_index.sql b/internal/infra/persistence/migrator/goose/postgres/202606190011_add_of_node_access_logs_composite_index.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190011_add_of_node_access_logs_composite_index.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190011_add_of_node_access_logs_composite_index.sql diff --git a/internal/db/migrator/goose/postgres/202606190012_create_of_node_obs_frpc.sql b/internal/infra/persistence/migrator/goose/postgres/202606190012_create_of_node_obs_frpc.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190012_create_of_node_obs_frpc.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190012_create_of_node_obs_frpc.sql diff --git a/internal/db/migrator/goose/postgres/202606190013_seed_openflare_schedules.sql b/internal/infra/persistence/migrator/goose/postgres/202606190013_seed_openflare_schedules.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190013_seed_openflare_schedules.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190013_seed_openflare_schedules.sql diff --git a/internal/db/migrator/goose/postgres/202606190014_add_pages_deployment_upload_id.sql b/internal/infra/persistence/migrator/goose/postgres/202606190014_add_pages_deployment_upload_id.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606190014_add_pages_deployment_upload_id.sql rename to internal/infra/persistence/migrator/goose/postgres/202606190014_add_pages_deployment_upload_id.sql diff --git a/internal/db/migrator/goose/postgres/202606200001_rebrand_openflare_defaults.sql b/internal/infra/persistence/migrator/goose/postgres/202606200001_rebrand_openflare_defaults.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606200001_rebrand_openflare_defaults.sql rename to internal/infra/persistence/migrator/goose/postgres/202606200001_rebrand_openflare_defaults.sql diff --git a/internal/db/migrator/goose/postgres/202606200002_update_security_defaults.sql b/internal/infra/persistence/migrator/goose/postgres/202606200002_update_security_defaults.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606200002_update_security_defaults.sql rename to internal/infra/persistence/migrator/goose/postgres/202606200002_update_security_defaults.sql diff --git a/internal/db/migrator/goose/postgres/202606200003_remove_legacy_rate_limit_options.sql b/internal/infra/persistence/migrator/goose/postgres/202606200003_remove_legacy_rate_limit_options.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606200003_remove_legacy_rate_limit_options.sql rename to internal/infra/persistence/migrator/goose/postgres/202606200003_remove_legacy_rate_limit_options.sql diff --git a/internal/db/migrator/goose/postgres/202606200004_drop_of_node_access_logs.sql b/internal/infra/persistence/migrator/goose/postgres/202606200004_drop_of_node_access_logs.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606200004_drop_of_node_access_logs.sql rename to internal/infra/persistence/migrator/goose/postgres/202606200004_drop_of_node_access_logs.sql diff --git a/internal/db/migrator/goose/postgres/202606200005_drop_of_node_observability_timeseries.sql b/internal/infra/persistence/migrator/goose/postgres/202606200005_drop_of_node_observability_timeseries.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606200005_drop_of_node_observability_timeseries.sql rename to internal/infra/persistence/migrator/goose/postgres/202606200005_drop_of_node_observability_timeseries.sql diff --git a/internal/db/migrator/goose/postgres/202606200006_migrate_legacy_data.sql b/internal/infra/persistence/migrator/goose/postgres/202606200006_migrate_legacy_data.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606200006_migrate_legacy_data.sql rename to internal/infra/persistence/migrator/goose/postgres/202606200006_migrate_legacy_data.sql diff --git a/internal/db/migrator/goose/postgres/202606200007_sync_of_waf_binding_sequence.sql b/internal/infra/persistence/migrator/goose/postgres/202606200007_sync_of_waf_binding_sequence.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606200007_sync_of_waf_binding_sequence.sql rename to internal/infra/persistence/migrator/goose/postgres/202606200007_sync_of_waf_binding_sequence.sql diff --git a/internal/db/migrator/goose/postgres/202606220001_remove_legacy_auth_options.sql b/internal/infra/persistence/migrator/goose/postgres/202606220001_remove_legacy_auth_options.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606220001_remove_legacy_auth_options.sql rename to internal/infra/persistence/migrator/goose/postgres/202606220001_remove_legacy_auth_options.sql diff --git a/internal/db/migrator/goose/postgres/202606220002_remove_notice_option.sql b/internal/infra/persistence/migrator/goose/postgres/202606220002_remove_notice_option.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606220002_remove_notice_option.sql rename to internal/infra/persistence/migrator/goose/postgres/202606220002_remove_notice_option.sql diff --git a/internal/db/migrator/goose/postgres/202606220003_add_frps_web_ui_config.sql b/internal/infra/persistence/migrator/goose/postgres/202606220003_add_frps_web_ui_config.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606220003_add_frps_web_ui_config.sql rename to internal/infra/persistence/migrator/goose/postgres/202606220003_add_frps_web_ui_config.sql diff --git a/internal/db/migrator/goose/postgres/202606220004_migrate_of_options_to_system_configs.sql b/internal/infra/persistence/migrator/goose/postgres/202606220004_migrate_of_options_to_system_configs.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606220004_migrate_of_options_to_system_configs.sql rename to internal/infra/persistence/migrator/goose/postgres/202606220004_migrate_of_options_to_system_configs.sql diff --git a/internal/db/migrator/goose/postgres/202606220005_drop_of_options.sql b/internal/infra/persistence/migrator/goose/postgres/202606220005_drop_of_options.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606220005_drop_of_options.sql rename to internal/infra/persistence/migrator/goose/postgres/202606220005_drop_of_options.sql diff --git a/internal/db/migrator/goose/postgres/202606270001_make_version_primary_key.sql b/internal/infra/persistence/migrator/goose/postgres/202606270001_make_version_primary_key.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606270001_make_version_primary_key.sql rename to internal/infra/persistence/migrator/goose/postgres/202606270001_make_version_primary_key.sql diff --git a/internal/db/migrator/goose/postgres/202606300001_sync_all_legacy_sequences.sql b/internal/infra/persistence/migrator/goose/postgres/202606300001_sync_all_legacy_sequences.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202606300001_sync_all_legacy_sequences.sql rename to internal/infra/persistence/migrator/goose/postgres/202606300001_sync_all_legacy_sequences.sql diff --git a/internal/db/migrator/goose/postgres/202607120001_create_zone_domain_tables.sql b/internal/infra/persistence/migrator/goose/postgres/202607120001_create_zone_domain_tables.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607120001_create_zone_domain_tables.sql rename to internal/infra/persistence/migrator/goose/postgres/202607120001_create_zone_domain_tables.sql diff --git a/internal/db/migrator/goose/postgres/202607120002_import_zone_domains.sql b/internal/infra/persistence/migrator/goose/postgres/202607120002_import_zone_domains.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607120002_import_zone_domains.sql rename to internal/infra/persistence/migrator/goose/postgres/202607120002_import_zone_domains.sql diff --git a/internal/db/migrator/goose/postgres/202607130001_drop_legacy_route_domain_columns.sql b/internal/infra/persistence/migrator/goose/postgres/202607130001_drop_legacy_route_domain_columns.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607130001_drop_legacy_route_domain_columns.sql rename to internal/infra/persistence/migrator/goose/postgres/202607130001_drop_legacy_route_domain_columns.sql diff --git a/internal/db/migrator/goose/postgres/202607140001_drop_unused_remark_columns.sql b/internal/infra/persistence/migrator/goose/postgres/202607140001_drop_unused_remark_columns.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607140001_drop_unused_remark_columns.sql rename to internal/infra/persistence/migrator/goose/postgres/202607140001_drop_unused_remark_columns.sql diff --git a/internal/db/migrator/goose/postgres/202607150001_orchestrate_waf_rules.sql b/internal/infra/persistence/migrator/goose/postgres/202607150001_orchestrate_waf_rules.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607150001_orchestrate_waf_rules.sql rename to internal/infra/persistence/migrator/goose/postgres/202607150001_orchestrate_waf_rules.sql diff --git a/internal/db/migrator/goose/postgres/202607150002_reset_waf_rule_graphs.sql b/internal/infra/persistence/migrator/goose/postgres/202607150002_reset_waf_rule_graphs.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607150002_reset_waf_rule_graphs.sql rename to internal/infra/persistence/migrator/goose/postgres/202607150002_reset_waf_rule_graphs.sql diff --git a/internal/db/migrator/goose/postgres/202607150003_drop_legacy_waf_rule_fields.sql b/internal/infra/persistence/migrator/goose/postgres/202607150003_drop_legacy_waf_rule_fields.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607150003_drop_legacy_waf_rule_fields.sql rename to internal/infra/persistence/migrator/goose/postgres/202607150003_drop_legacy_waf_rule_fields.sql diff --git a/internal/db/migrator/goose/postgres/202607170001_add_pages_system_configs.sql b/internal/infra/persistence/migrator/goose/postgres/202607170001_add_pages_system_configs.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607170001_add_pages_system_configs.sql rename to internal/infra/persistence/migrator/goose/postgres/202607170001_add_pages_system_configs.sql diff --git a/internal/db/migrator/goose/postgres/202607180001_update_agent_heartbeat_offline_defaults.sql b/internal/infra/persistence/migrator/goose/postgres/202607180001_update_agent_heartbeat_offline_defaults.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607180001_update_agent_heartbeat_offline_defaults.sql rename to internal/infra/persistence/migrator/goose/postgres/202607180001_update_agent_heartbeat_offline_defaults.sql diff --git a/internal/db/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql b/internal/infra/persistence/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql rename to internal/infra/persistence/migrator/goose/postgres/202607190001_add_openresty_default_rate_limits.sql diff --git a/internal/db/migrator/goose/postgres/202607190002_add_pages_source_runtime.sql b/internal/infra/persistence/migrator/goose/postgres/202607190002_add_pages_source_runtime.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607190002_add_pages_source_runtime.sql rename to internal/infra/persistence/migrator/goose/postgres/202607190002_add_pages_source_runtime.sql diff --git a/internal/db/migrator/goose/postgres/202607190003_seed_pages_source_scan.sql b/internal/infra/persistence/migrator/goose/postgres/202607190003_seed_pages_source_scan.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607190003_seed_pages_source_scan.sql rename to internal/infra/persistence/migrator/goose/postgres/202607190003_seed_pages_source_scan.sql diff --git a/internal/db/migrator/goose/postgres/202607200001_add_openresty_default_limit_req_per_ip.sql b/internal/infra/persistence/migrator/goose/postgres/202607200001_add_openresty_default_limit_req_per_ip.sql similarity index 100% rename from internal/db/migrator/goose/postgres/202607200001_add_openresty_default_limit_req_per_ip.sql rename to internal/infra/persistence/migrator/goose/postgres/202607200001_add_openresty_default_limit_req_per_ip.sql diff --git a/internal/db/migrator/goose/sqlite/202606050001_bridge_legacy.sql b/internal/infra/persistence/migrator/goose/sqlite/202606050001_bridge_legacy.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606050001_bridge_legacy.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606050001_bridge_legacy.sql diff --git a/internal/db/migrator/goose/sqlite/202606090001_initial_schema.sql b/internal/infra/persistence/migrator/goose/sqlite/202606090001_initial_schema.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606090001_initial_schema.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606090001_initial_schema.sql diff --git a/internal/db/migrator/goose/sqlite/202606100001_create_schedules.sql b/internal/infra/persistence/migrator/goose/sqlite/202606100001_create_schedules.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606100001_create_schedules.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606100001_create_schedules.sql diff --git a/internal/db/migrator/goose/sqlite/202606100002_access_token_is_admin.sql b/internal/infra/persistence/migrator/goose/sqlite/202606100002_access_token_is_admin.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606100002_access_token_is_admin.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606100002_access_token_is_admin.sql diff --git a/internal/db/migrator/goose/sqlite/202606110001_remove_access_token_last_used_at.sql b/internal/infra/persistence/migrator/goose/sqlite/202606110001_remove_access_token_last_used_at.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606110001_remove_access_token_last_used_at.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606110001_remove_access_token_last_used_at.sql diff --git a/internal/db/migrator/goose/sqlite/202606110002_alter_schedules_id_auto_increment.sql b/internal/infra/persistence/migrator/goose/sqlite/202606110002_alter_schedules_id_auto_increment.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606110002_alter_schedules_id_auto_increment.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606110002_alter_schedules_id_auto_increment.sql diff --git a/internal/db/migrator/goose/sqlite/202606110003_rename_tables_to_w_prefix.sql b/internal/infra/persistence/migrator/goose/sqlite/202606110003_rename_tables_to_w_prefix.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606110003_rename_tables_to_w_prefix.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606110003_rename_tables_to_w_prefix.sql diff --git a/internal/db/migrator/goose/sqlite/202606110004_add_file_access_whitelist_config.sql b/internal/infra/persistence/migrator/goose/sqlite/202606110004_add_file_access_whitelist_config.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606110004_add_file_access_whitelist_config.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606110004_add_file_access_whitelist_config.sql diff --git a/internal/db/migrator/goose/sqlite/202606110005_add_disk_cache_configs.sql b/internal/infra/persistence/migrator/goose/sqlite/202606110005_add_disk_cache_configs.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606110005_add_disk_cache_configs.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606110005_add_disk_cache_configs.sql diff --git a/internal/db/migrator/goose/sqlite/202606120001_add_login_session_ttl_config.sql b/internal/infra/persistence/migrator/goose/sqlite/202606120001_add_login_session_ttl_config.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606120001_add_login_session_ttl_config.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606120001_add_login_session_ttl_config.sql diff --git a/internal/db/migrator/goose/sqlite/202606120002_add_update_upstream_repository_config.sql b/internal/infra/persistence/migrator/goose/sqlite/202606120002_add_update_upstream_repository_config.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606120002_add_update_upstream_repository_config.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606120002_add_update_upstream_repository_config.sql diff --git a/internal/db/migrator/goose/sqlite/202606130001_add_upload_access_mode.sql b/internal/infra/persistence/migrator/goose/sqlite/202606130001_add_upload_access_mode.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606130001_add_upload_access_mode.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606130001_add_upload_access_mode.sql diff --git a/internal/db/migrator/goose/sqlite/202606130002_expand_system_config_value.sql b/internal/infra/persistence/migrator/goose/sqlite/202606130002_expand_system_config_value.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606130002_expand_system_config_value.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606130002_expand_system_config_value.sql diff --git a/internal/db/migrator/goose/sqlite/202606130003_add_storage_config.sql b/internal/infra/persistence/migrator/goose/sqlite/202606130003_add_storage_config.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606130003_add_storage_config.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606130003_add_storage_config.sql diff --git a/internal/db/migrator/goose/sqlite/202606140001_create_push_tables.sql b/internal/infra/persistence/migrator/goose/sqlite/202606140001_create_push_tables.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606140001_create_push_tables.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606140001_create_push_tables.sql diff --git a/internal/db/migrator/goose/sqlite/202606140003_add_system_user.sql b/internal/infra/persistence/migrator/goose/sqlite/202606140003_add_system_user.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606140003_add_system_user.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606140003_add_system_user.sql diff --git a/internal/db/migrator/goose/sqlite/202606140004_create_push_channels.sql b/internal/infra/persistence/migrator/goose/sqlite/202606140004_create_push_channels.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606140004_create_push_channels.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606140004_create_push_channels.sql diff --git a/internal/db/migrator/goose/sqlite/202606140005_update_system_cleanup_schedule.sql b/internal/infra/persistence/migrator/goose/sqlite/202606140005_update_system_cleanup_schedule.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606140005_update_system_cleanup_schedule.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606140005_update_system_cleanup_schedule.sql diff --git a/internal/db/migrator/goose/sqlite/202606150001_add_task_type_to_push_events.sql b/internal/infra/persistence/migrator/goose/sqlite/202606150001_add_task_type_to_push_events.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606150001_add_task_type_to_push_events.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606150001_add_task_type_to_push_events.sql diff --git a/internal/db/migrator/goose/sqlite/202606160001_remove_push_config.sql b/internal/infra/persistence/migrator/goose/sqlite/202606160001_remove_push_config.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606160001_remove_push_config.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606160001_remove_push_config.sql diff --git a/internal/db/migrator/goose/sqlite/202606170001_add_upload_composite_indexes.sql b/internal/infra/persistence/migrator/goose/sqlite/202606170001_add_upload_composite_indexes.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606170001_add_upload_composite_indexes.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606170001_add_upload_composite_indexes.sql diff --git a/internal/db/migrator/goose/sqlite/202606170002_create_upload_stats_table.sql b/internal/infra/persistence/migrator/goose/sqlite/202606170002_create_upload_stats_table.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606170002_create_upload_stats_table.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606170002_create_upload_stats_table.sql diff --git a/internal/db/migrator/goose/sqlite/202606170003_backfill_upload_stats.sql b/internal/infra/persistence/migrator/goose/sqlite/202606170003_backfill_upload_stats.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606170003_backfill_upload_stats.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606170003_backfill_upload_stats.sql diff --git a/internal/db/migrator/goose/sqlite/202606180001_drop_upload_storage_driver.sql b/internal/infra/persistence/migrator/goose/sqlite/202606180001_drop_upload_storage_driver.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606180001_drop_upload_storage_driver.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606180001_drop_upload_storage_driver.sql diff --git a/internal/db/migrator/goose/sqlite/202606190001_create_of_options.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190001_create_of_options.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190001_create_of_options.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190001_create_of_options.sql diff --git a/internal/db/migrator/goose/sqlite/202606190002_create_of_origins.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190002_create_of_origins.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190002_create_of_origins.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190002_create_of_origins.sql diff --git a/internal/db/migrator/goose/sqlite/202606190003_create_of_apply_logs.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190003_create_of_apply_logs.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190003_create_of_apply_logs.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190003_create_of_apply_logs.sql diff --git a/internal/db/migrator/goose/sqlite/202606190004_create_of_proxy_routes.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190004_create_of_proxy_routes.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190004_create_of_proxy_routes.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190004_create_of_proxy_routes.sql diff --git a/internal/db/migrator/goose/sqlite/202606190005_create_of_nodes.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190005_create_of_nodes.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190005_create_of_nodes.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190005_create_of_nodes.sql diff --git a/internal/db/migrator/goose/sqlite/202606190006_create_of_waf_tables.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190006_create_of_waf_tables.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190006_create_of_waf_tables.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190006_create_of_waf_tables.sql diff --git a/internal/db/migrator/goose/sqlite/202606190007_create_of_tls_tables.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190007_create_of_tls_tables.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190007_create_of_tls_tables.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190007_create_of_tls_tables.sql diff --git a/internal/db/migrator/goose/sqlite/202606190008_create_of_config_versions.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190008_create_of_config_versions.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190008_create_of_config_versions.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190008_create_of_config_versions.sql diff --git a/internal/db/migrator/goose/sqlite/202606190009_create_of_pages_tables.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190009_create_of_pages_tables.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190009_create_of_pages_tables.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190009_create_of_pages_tables.sql diff --git a/internal/db/migrator/goose/sqlite/202606190010_create_of_observability_tables.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190010_create_of_observability_tables.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190010_create_of_observability_tables.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190010_create_of_observability_tables.sql diff --git a/internal/db/migrator/goose/sqlite/202606190011_add_of_node_access_logs_composite_index.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190011_add_of_node_access_logs_composite_index.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190011_add_of_node_access_logs_composite_index.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190011_add_of_node_access_logs_composite_index.sql diff --git a/internal/db/migrator/goose/sqlite/202606190012_create_of_node_obs_frpc.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190012_create_of_node_obs_frpc.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190012_create_of_node_obs_frpc.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190012_create_of_node_obs_frpc.sql diff --git a/internal/db/migrator/goose/sqlite/202606190013_seed_openflare_schedules.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190013_seed_openflare_schedules.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190013_seed_openflare_schedules.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190013_seed_openflare_schedules.sql diff --git a/internal/db/migrator/goose/sqlite/202606190014_add_pages_deployment_upload_id.sql b/internal/infra/persistence/migrator/goose/sqlite/202606190014_add_pages_deployment_upload_id.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606190014_add_pages_deployment_upload_id.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606190014_add_pages_deployment_upload_id.sql diff --git a/internal/db/migrator/goose/sqlite/202606200001_rebrand_openflare_defaults.sql b/internal/infra/persistence/migrator/goose/sqlite/202606200001_rebrand_openflare_defaults.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606200001_rebrand_openflare_defaults.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606200001_rebrand_openflare_defaults.sql diff --git a/internal/db/migrator/goose/sqlite/202606200002_update_security_defaults.sql b/internal/infra/persistence/migrator/goose/sqlite/202606200002_update_security_defaults.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606200002_update_security_defaults.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606200002_update_security_defaults.sql diff --git a/internal/db/migrator/goose/sqlite/202606200003_remove_legacy_rate_limit_options.sql b/internal/infra/persistence/migrator/goose/sqlite/202606200003_remove_legacy_rate_limit_options.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606200003_remove_legacy_rate_limit_options.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606200003_remove_legacy_rate_limit_options.sql diff --git a/internal/db/migrator/goose/sqlite/202606200004_drop_of_node_access_logs.sql b/internal/infra/persistence/migrator/goose/sqlite/202606200004_drop_of_node_access_logs.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606200004_drop_of_node_access_logs.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606200004_drop_of_node_access_logs.sql diff --git a/internal/db/migrator/goose/sqlite/202606200005_drop_of_node_observability_timeseries.sql b/internal/infra/persistence/migrator/goose/sqlite/202606200005_drop_of_node_observability_timeseries.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606200005_drop_of_node_observability_timeseries.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606200005_drop_of_node_observability_timeseries.sql diff --git a/internal/db/migrator/goose/sqlite/202606200006_migrate_legacy_data.sql b/internal/infra/persistence/migrator/goose/sqlite/202606200006_migrate_legacy_data.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606200006_migrate_legacy_data.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606200006_migrate_legacy_data.sql diff --git a/internal/db/migrator/goose/sqlite/202606200007_sync_of_waf_binding_sequence.sql b/internal/infra/persistence/migrator/goose/sqlite/202606200007_sync_of_waf_binding_sequence.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606200007_sync_of_waf_binding_sequence.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606200007_sync_of_waf_binding_sequence.sql diff --git a/internal/db/migrator/goose/sqlite/202606220001_remove_legacy_auth_options.sql b/internal/infra/persistence/migrator/goose/sqlite/202606220001_remove_legacy_auth_options.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606220001_remove_legacy_auth_options.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606220001_remove_legacy_auth_options.sql diff --git a/internal/db/migrator/goose/sqlite/202606220002_remove_notice_option.sql b/internal/infra/persistence/migrator/goose/sqlite/202606220002_remove_notice_option.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606220002_remove_notice_option.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606220002_remove_notice_option.sql diff --git a/internal/db/migrator/goose/sqlite/202606220003_add_frps_web_ui_config.sql b/internal/infra/persistence/migrator/goose/sqlite/202606220003_add_frps_web_ui_config.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606220003_add_frps_web_ui_config.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606220003_add_frps_web_ui_config.sql diff --git a/internal/db/migrator/goose/sqlite/202606220004_migrate_of_options_to_system_configs.sql b/internal/infra/persistence/migrator/goose/sqlite/202606220004_migrate_of_options_to_system_configs.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606220004_migrate_of_options_to_system_configs.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606220004_migrate_of_options_to_system_configs.sql diff --git a/internal/db/migrator/goose/sqlite/202606220005_drop_of_options.sql b/internal/infra/persistence/migrator/goose/sqlite/202606220005_drop_of_options.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606220005_drop_of_options.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606220005_drop_of_options.sql diff --git a/internal/db/migrator/goose/sqlite/202606270001_make_version_primary_key.sql b/internal/infra/persistence/migrator/goose/sqlite/202606270001_make_version_primary_key.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606270001_make_version_primary_key.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606270001_make_version_primary_key.sql diff --git a/internal/db/migrator/goose/sqlite/202606300001_sync_all_legacy_sequences.sql b/internal/infra/persistence/migrator/goose/sqlite/202606300001_sync_all_legacy_sequences.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202606300001_sync_all_legacy_sequences.sql rename to internal/infra/persistence/migrator/goose/sqlite/202606300001_sync_all_legacy_sequences.sql diff --git a/internal/db/migrator/goose/sqlite/202607120001_create_zone_domain_tables.sql b/internal/infra/persistence/migrator/goose/sqlite/202607120001_create_zone_domain_tables.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607120001_create_zone_domain_tables.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607120001_create_zone_domain_tables.sql diff --git a/internal/db/migrator/goose/sqlite/202607120002_import_zone_domains.sql b/internal/infra/persistence/migrator/goose/sqlite/202607120002_import_zone_domains.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607120002_import_zone_domains.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607120002_import_zone_domains.sql diff --git a/internal/db/migrator/goose/sqlite/202607130001_drop_legacy_route_domain_columns.sql b/internal/infra/persistence/migrator/goose/sqlite/202607130001_drop_legacy_route_domain_columns.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607130001_drop_legacy_route_domain_columns.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607130001_drop_legacy_route_domain_columns.sql diff --git a/internal/db/migrator/goose/sqlite/202607140001_drop_unused_remark_columns.sql b/internal/infra/persistence/migrator/goose/sqlite/202607140001_drop_unused_remark_columns.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607140001_drop_unused_remark_columns.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607140001_drop_unused_remark_columns.sql diff --git a/internal/db/migrator/goose/sqlite/202607150001_orchestrate_waf_rules.sql b/internal/infra/persistence/migrator/goose/sqlite/202607150001_orchestrate_waf_rules.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607150001_orchestrate_waf_rules.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607150001_orchestrate_waf_rules.sql diff --git a/internal/db/migrator/goose/sqlite/202607150002_reset_waf_rule_graphs.sql b/internal/infra/persistence/migrator/goose/sqlite/202607150002_reset_waf_rule_graphs.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607150002_reset_waf_rule_graphs.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607150002_reset_waf_rule_graphs.sql diff --git a/internal/db/migrator/goose/sqlite/202607150003_drop_legacy_waf_rule_fields.sql b/internal/infra/persistence/migrator/goose/sqlite/202607150003_drop_legacy_waf_rule_fields.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607150003_drop_legacy_waf_rule_fields.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607150003_drop_legacy_waf_rule_fields.sql diff --git a/internal/db/migrator/goose/sqlite/202607170001_add_pages_system_configs.sql b/internal/infra/persistence/migrator/goose/sqlite/202607170001_add_pages_system_configs.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607170001_add_pages_system_configs.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607170001_add_pages_system_configs.sql diff --git a/internal/db/migrator/goose/sqlite/202607180001_update_agent_heartbeat_offline_defaults.sql b/internal/infra/persistence/migrator/goose/sqlite/202607180001_update_agent_heartbeat_offline_defaults.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607180001_update_agent_heartbeat_offline_defaults.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607180001_update_agent_heartbeat_offline_defaults.sql diff --git a/internal/db/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql b/internal/infra/persistence/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607190001_add_openresty_default_rate_limits.sql diff --git a/internal/db/migrator/goose/sqlite/202607190002_add_pages_source_runtime.sql b/internal/infra/persistence/migrator/goose/sqlite/202607190002_add_pages_source_runtime.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607190002_add_pages_source_runtime.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607190002_add_pages_source_runtime.sql diff --git a/internal/db/migrator/goose/sqlite/202607190003_seed_pages_source_scan.sql b/internal/infra/persistence/migrator/goose/sqlite/202607190003_seed_pages_source_scan.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607190003_seed_pages_source_scan.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607190003_seed_pages_source_scan.sql diff --git a/internal/db/migrator/goose/sqlite/202607200001_add_openresty_default_limit_req_per_ip.sql b/internal/infra/persistence/migrator/goose/sqlite/202607200001_add_openresty_default_limit_req_per_ip.sql similarity index 100% rename from internal/db/migrator/goose/sqlite/202607200001_add_openresty_default_limit_req_per_ip.sql rename to internal/infra/persistence/migrator/goose/sqlite/202607200001_add_openresty_default_limit_req_per_ip.sql diff --git a/internal/db/migrator/migrator.go b/internal/infra/persistence/migrator/migrator.go similarity index 98% rename from internal/db/migrator/migrator.go rename to internal/infra/persistence/migrator/migrator.go index dcc1a397..a05957bd 100644 --- a/internal/db/migrator/migrator.go +++ b/internal/infra/persistence/migrator/migrator.go @@ -13,8 +13,8 @@ import ( "log" "github.com/Rain-kl/Wavelet/internal/apps/openflare/zone" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/pressly/goose/v3" ) diff --git a/internal/db/migrator/migrator_test.go b/internal/infra/persistence/migrator/migrator_test.go similarity index 95% rename from internal/db/migrator/migrator_test.go rename to internal/infra/persistence/migrator/migrator_test.go index d165b231..302b7942 100644 --- a/internal/db/migrator/migrator_test.go +++ b/internal/infra/persistence/migrator/migrator_test.go @@ -7,8 +7,8 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/alicebob/miniredis/v2" @@ -19,9 +19,9 @@ import ( ) // expectedMigratedSystemConfigCount 包含初始 32 项系统配置、202606220004 -// 从 of_options 迁移过来的 48 项业务配置、Pages 的 2 项业务配置, -// 以及 OpenResty 默认限流的 3 项业务配置。 -const expectedMigratedSystemConfigCount = 85 +// 从 of_options 迁移过来的 48 项业务配置、Pages 的 2 项业务配置、 +// OpenResty 默认限流的 3 项业务配置,以及单 IP 请求频率限制 1 项业务配置。 +const expectedMigratedSystemConfigCount = 86 func TestMigrateInitializesSQLiteDatabase(t *testing.T) { sqliteDB, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{ diff --git a/internal/db/migrator/pages_source_migration_test.go b/internal/infra/persistence/migrator/pages_source_migration_test.go similarity index 100% rename from internal/db/migrator/pages_source_migration_test.go rename to internal/infra/persistence/migrator/pages_source_migration_test.go diff --git a/internal/db/migrator/pages_source_scan_migration_test.go b/internal/infra/persistence/migrator/pages_source_scan_migration_test.go similarity index 100% rename from internal/db/migrator/pages_source_scan_migration_test.go rename to internal/infra/persistence/migrator/pages_source_scan_migration_test.go diff --git a/internal/db/postgres.go b/internal/infra/persistence/postgres.go similarity index 99% rename from internal/db/postgres.go rename to internal/infra/persistence/postgres.go index c16cd806..f21dbc91 100644 --- a/internal/db/postgres.go +++ b/internal/infra/persistence/postgres.go @@ -12,7 +12,7 @@ import ( "strconv" "time" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/glebarez/sqlite" "go.opentelemetry.io/otel/attribute" "gorm.io/driver/postgres" diff --git a/internal/db/postgres_logger.go b/internal/infra/persistence/postgres_logger.go similarity index 100% rename from internal/db/postgres_logger.go rename to internal/infra/persistence/postgres_logger.go diff --git a/internal/db/postgres_logger_test.go b/internal/infra/persistence/postgres_logger_test.go similarity index 100% rename from internal/db/postgres_logger_test.go rename to internal/infra/persistence/postgres_logger_test.go diff --git a/internal/db/postgres_tracing_test.go b/internal/infra/persistence/postgres_tracing_test.go similarity index 100% rename from internal/db/postgres_tracing_test.go rename to internal/infra/persistence/postgres_tracing_test.go diff --git a/internal/db/redis.go b/internal/infra/persistence/redis.go similarity index 99% rename from internal/db/redis.go rename to internal/infra/persistence/redis.go index 25327675..541ae165 100644 --- a/internal/db/redis.go +++ b/internal/infra/persistence/redis.go @@ -12,7 +12,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/redis/go-redis/extra/redisotel/v9" "github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9/maintnotifications" diff --git a/internal/db/redis_test.go b/internal/infra/persistence/redis_test.go similarity index 100% rename from internal/db/redis_test.go rename to internal/infra/persistence/redis_test.go diff --git a/internal/task/constants.go b/internal/infra/task/constants.go similarity index 100% rename from internal/task/constants.go rename to internal/infra/task/constants.go diff --git a/internal/task/errs.go b/internal/infra/task/errs.go similarity index 100% rename from internal/task/errs.go rename to internal/infra/task/errs.go diff --git a/internal/task/executor.go b/internal/infra/task/executor.go similarity index 99% rename from internal/task/executor.go rename to internal/infra/task/executor.go index c41ca9d8..e7cb979b 100644 --- a/internal/task/executor.go +++ b/internal/infra/task/executor.go @@ -11,7 +11,7 @@ import ( "fmt" "time" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/logger" otel_trace "github.com/Rain-kl/Wavelet/pkg/trace" diff --git a/internal/task/executor_test.go b/internal/infra/task/executor_test.go similarity index 99% rename from internal/task/executor_test.go rename to internal/infra/task/executor_test.go index b0bb2f9f..c65f2d7e 100644 --- a/internal/task/executor_test.go +++ b/internal/infra/task/executor_test.go @@ -11,7 +11,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/testhelper" "github.com/hibiken/asynq" diff --git a/internal/task/handler.go b/internal/infra/task/handler.go similarity index 100% rename from internal/task/handler.go rename to internal/infra/task/handler.go diff --git a/internal/task/handlers/register.go b/internal/infra/task/handlers/register.go similarity index 98% rename from internal/task/handlers/register.go rename to internal/infra/task/handlers/register.go index 005bfd9e..bda54486 100644 --- a/internal/task/handlers/register.go +++ b/internal/infra/task/handlers/register.go @@ -12,7 +12,7 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/tls" "github.com/Rain-kl/Wavelet/internal/apps/upload" "github.com/Rain-kl/Wavelet/internal/apps/user" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/infra/task" ) // Register registers all built-in task handlers and their metadata. diff --git a/internal/task/meta.go b/internal/infra/task/meta.go similarity index 100% rename from internal/task/meta.go rename to internal/infra/task/meta.go diff --git a/internal/task/meta_test.go b/internal/infra/task/meta_test.go similarity index 91% rename from internal/task/meta_test.go rename to internal/infra/task/meta_test.go index a22e05eb..c92eb099 100644 --- a/internal/task/meta_test.go +++ b/internal/infra/task/meta_test.go @@ -6,8 +6,8 @@ package task_test import ( "testing" - "github.com/Rain-kl/Wavelet/internal/task" - taskhandlers "github.com/Rain-kl/Wavelet/internal/task/handlers" + "github.com/Rain-kl/Wavelet/internal/infra/task" + taskhandlers "github.com/Rain-kl/Wavelet/internal/infra/task/handlers" ) func TestDuplicateTaskMeta(t *testing.T) { diff --git a/internal/task/permanent_error.go b/internal/infra/task/permanent_error.go similarity index 100% rename from internal/task/permanent_error.go rename to internal/infra/task/permanent_error.go diff --git a/internal/task/permanent_error_test.go b/internal/infra/task/permanent_error_test.go similarity index 100% rename from internal/task/permanent_error_test.go rename to internal/infra/task/permanent_error_test.go diff --git a/internal/task/scheduler/errs.go b/internal/infra/task/scheduler/errs.go similarity index 100% rename from internal/task/scheduler/errs.go rename to internal/infra/task/scheduler/errs.go diff --git a/internal/task/scheduler/scheduler.go b/internal/infra/task/scheduler/scheduler.go similarity index 96% rename from internal/task/scheduler/scheduler.go rename to internal/infra/task/scheduler/scheduler.go index 478a0511..f45fcb64 100644 --- a/internal/task/scheduler/scheduler.go +++ b/internal/infra/task/scheduler/scheduler.go @@ -11,9 +11,9 @@ import ( "syscall" "time" - "github.com/Rain-kl/Wavelet/internal/bootstrap" + "github.com/Rain-kl/Wavelet/internal/infra/task" "github.com/Rain-kl/Wavelet/internal/model" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/Rain-kl/Wavelet/pkg/logger" "github.com/hibiken/asynq" diff --git a/internal/task/scheduler/scheduler_test.go b/internal/infra/task/scheduler/scheduler_test.go similarity index 100% rename from internal/task/scheduler/scheduler_test.go rename to internal/infra/task/scheduler/scheduler_test.go diff --git a/internal/task/utils.go b/internal/infra/task/utils.go similarity index 98% rename from internal/task/utils.go rename to internal/infra/task/utils.go index a3f0d4d3..d5afa098 100644 --- a/internal/task/utils.go +++ b/internal/infra/task/utils.go @@ -5,7 +5,7 @@ package task import ( - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/hibiken/asynq" "github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9/maintnotifications" diff --git a/internal/task/utils_test.go b/internal/infra/task/utils_test.go similarity index 97% rename from internal/task/utils_test.go rename to internal/infra/task/utils_test.go index f4356c5c..aae01e32 100644 --- a/internal/task/utils_test.go +++ b/internal/infra/task/utils_test.go @@ -3,7 +3,7 @@ package task import ( "testing" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9/maintnotifications" ) diff --git a/internal/task/worker/middlewares.go b/internal/infra/task/worker/middlewares.go similarity index 100% rename from internal/task/worker/middlewares.go rename to internal/infra/task/worker/middlewares.go diff --git a/internal/task/worker/worker.go b/internal/infra/task/worker/worker.go similarity index 90% rename from internal/task/worker/worker.go rename to internal/infra/task/worker/worker.go index b66d4f65..c53858db 100644 --- a/internal/task/worker/worker.go +++ b/internal/infra/task/worker/worker.go @@ -7,9 +7,9 @@ package worker import ( "time" - "github.com/Rain-kl/Wavelet/internal/bootstrap" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/task" + "github.com/Rain-kl/Wavelet/internal/infra/config" + "github.com/Rain-kl/Wavelet/internal/infra/task" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" "github.com/hibiken/asynq" ) diff --git a/internal/model/auth_source.go b/internal/model/auth_source.go index 182667fa..51bbb8d7 100644 --- a/internal/model/auth_source.go +++ b/internal/model/auth_source.go @@ -10,7 +10,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "gorm.io/gorm" ) diff --git a/internal/model/openflare_access_log_store_memory.go b/internal/model/openflare_access_log_store_memory.go index d74c8a86..d754f898 100644 --- a/internal/model/openflare_access_log_store_memory.go +++ b/internal/model/openflare_access_log_store_memory.go @@ -14,7 +14,7 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" ) const ( diff --git a/internal/model/openflare_acme_account.go b/internal/model/openflare_acme_account.go index 42d5a217..e3d8c78e 100644 --- a/internal/model/openflare_acme_account.go +++ b/internal/model/openflare_acme_account.go @@ -8,7 +8,7 @@ import ( "errors" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "gorm.io/gorm" ) diff --git a/internal/model/openflare_apply_log.go b/internal/model/openflare_apply_log.go index e7d78c8c..a9b9a3f4 100644 --- a/internal/model/openflare_apply_log.go +++ b/internal/model/openflare_apply_log.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "gorm.io/gorm" ) diff --git a/internal/model/openflare_apply_log_test.go b/internal/model/openflare_apply_log_test.go index 7e834d49..cddfdc44 100644 --- a/internal/model/openflare_apply_log_test.go +++ b/internal/model/openflare_apply_log_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/model/openflare_config_version.go b/internal/model/openflare_config_version.go index 606b165a..9274acfa 100644 --- a/internal/model/openflare_config_version.go +++ b/internal/model/openflare_config_version.go @@ -8,7 +8,7 @@ import ( "errors" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "gorm.io/gorm" ) diff --git a/internal/model/openflare_dns_account.go b/internal/model/openflare_dns_account.go index 04905df6..fe30ce2b 100644 --- a/internal/model/openflare_dns_account.go +++ b/internal/model/openflare_dns_account.go @@ -8,7 +8,7 @@ import ( "errors" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" ) // DNSAccount OpenFlare DNS 账号实体。 diff --git a/internal/model/openflare_node.go b/internal/model/openflare_node.go index 8359e4f3..9bab7932 100644 --- a/internal/model/openflare_node.go +++ b/internal/model/openflare_node.go @@ -8,7 +8,7 @@ import ( "errors" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" ) // OpenFlareNode stores an edge, relay, or tunnel client node. diff --git a/internal/model/openflare_observability.go b/internal/model/openflare_observability.go index 95702c7c..ecf98035 100644 --- a/internal/model/openflare_observability.go +++ b/internal/model/openflare_observability.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsrepo "github.com/Rain-kl/Wavelet/internal/repository/analytics" "gorm.io/gorm" ) diff --git a/internal/model/openflare_observability_store_memory.go b/internal/model/openflare_observability_store_memory.go index 47757a7a..c18d1456 100644 --- a/internal/model/openflare_observability_store_memory.go +++ b/internal/model/openflare_observability_store_memory.go @@ -10,7 +10,7 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" ) type memoryObservabilityStore struct { diff --git a/internal/model/openflare_origin.go b/internal/model/openflare_origin.go index 67c16750..fb39bfcd 100644 --- a/internal/model/openflare_origin.go +++ b/internal/model/openflare_origin.go @@ -7,7 +7,7 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" ) // Origin OpenFlare 源站实体。 diff --git a/internal/model/openflare_pages.go b/internal/model/openflare_pages.go index 31ffce9d..5c5b39ed 100644 --- a/internal/model/openflare_pages.go +++ b/internal/model/openflare_pages.go @@ -7,7 +7,7 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" ) // Pages deployment status constants. diff --git a/internal/model/openflare_pages_cleanup.go b/internal/model/openflare_pages_cleanup.go index a740a54e..55cbf825 100644 --- a/internal/model/openflare_pages_cleanup.go +++ b/internal/model/openflare_pages_cleanup.go @@ -8,7 +8,7 @@ import ( "errors" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" ) const ( diff --git a/internal/model/openflare_pages_cleanup_test.go b/internal/model/openflare_pages_cleanup_test.go index cc249d15..ccf38e91 100644 --- a/internal/model/openflare_pages_cleanup_test.go +++ b/internal/model/openflare_pages_cleanup_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/glebarez/sqlite" "gorm.io/gorm" ) diff --git a/internal/model/openflare_proxy_route.go b/internal/model/openflare_proxy_route.go index 41da0e93..5ae7802c 100644 --- a/internal/model/openflare_proxy_route.go +++ b/internal/model/openflare_proxy_route.go @@ -7,7 +7,7 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" ) // ProxyRoute OpenFlare 代理规则实体。 diff --git a/internal/model/openflare_tls.go b/internal/model/openflare_tls.go index 70ffe712..a8b01f68 100644 --- a/internal/model/openflare_tls.go +++ b/internal/model/openflare_tls.go @@ -8,7 +8,7 @@ import ( "errors" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" ) // TLSCertificate OpenFlare TLS 证书实体。 diff --git a/internal/model/openflare_waf.go b/internal/model/openflare_waf.go index 188cd8fd..9e858306 100644 --- a/internal/model/openflare_waf.go +++ b/internal/model/openflare_waf.go @@ -8,7 +8,7 @@ import ( "errors" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "gorm.io/gorm" ) diff --git a/internal/model/openflare_waf_bindings_test.go b/internal/model/openflare_waf_bindings_test.go index 1faade42..a16fa271 100644 --- a/internal/model/openflare_waf_bindings_test.go +++ b/internal/model/openflare_waf_bindings_test.go @@ -7,7 +7,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/glebarez/sqlite" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/model/openflare_waf_graph_test.go b/internal/model/openflare_waf_graph_test.go index 32819d1a..d1fd8087 100644 --- a/internal/model/openflare_waf_graph_test.go +++ b/internal/model/openflare_waf_graph_test.go @@ -12,7 +12,7 @@ import ( "testing" "testing/fstest" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/glebarez/sqlite" "github.com/pressly/goose/v3" "github.com/stretchr/testify/assert" diff --git a/internal/model/openflare_zone.go b/internal/model/openflare_zone.go index 7dcb69fc..90100224 100644 --- a/internal/model/openflare_zone.go +++ b/internal/model/openflare_zone.go @@ -9,7 +9,7 @@ import ( "fmt" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "gorm.io/gorm" "gorm.io/gorm/clause" ) diff --git a/internal/model/openflare_zone_test.go b/internal/model/openflare_zone_test.go index c811a77f..ce50449d 100644 --- a/internal/model/openflare_zone_test.go +++ b/internal/model/openflare_zone_test.go @@ -7,7 +7,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/glebarez/sqlite" "github.com/stretchr/testify/require" "gorm.io/gorm" diff --git a/internal/model/schedule.go b/internal/model/schedule.go index eb7f6f65..b6337456 100644 --- a/internal/model/schedule.go +++ b/internal/model/schedule.go @@ -7,7 +7,7 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" ) // Schedule 定时任务配置表 diff --git a/internal/model/task_execution.go b/internal/model/task_execution.go index 4c0aac57..bd4b659e 100644 --- a/internal/model/task_execution.go +++ b/internal/model/task_execution.go @@ -11,8 +11,8 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" "github.com/redis/go-redis/v9" ) diff --git a/internal/model/task_execution_test.go b/internal/model/task_execution_test.go index dc769462..4fcc681f 100644 --- a/internal/model/task_execution_test.go +++ b/internal/model/task_execution_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/alicebob/miniredis/v2" "github.com/glebarez/sqlite" "github.com/redis/go-redis/v9" diff --git a/internal/model/users.go b/internal/model/users.go index 179c1ea5..a8495910 100644 --- a/internal/model/users.go +++ b/internal/model/users.go @@ -11,8 +11,8 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/common" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" + "github.com/Rain-kl/Wavelet/internal/shared" "github.com/Rain-kl/Wavelet/pkg/util" "gorm.io/gorm" ) @@ -125,7 +125,7 @@ func (u *User) UpdateFromOAuthInfo(oauthInfo *OAuthUserInfo) { // CheckActive 检查用户账户是否激活,未激活则返回错误 func (u *User) CheckActive() error { if !u.IsActive { - return errors.New(common.BannedAccount) + return errors.New(shared.BannedAccount) } return nil } diff --git a/internal/bootstrap/bootstrap.go b/internal/platform/bootstrap/bootstrap.go similarity index 97% rename from internal/bootstrap/bootstrap.go rename to internal/platform/bootstrap/bootstrap.go index 8d5ae36d..3a2bb42d 100644 --- a/internal/bootstrap/bootstrap.go +++ b/internal/platform/bootstrap/bootstrap.go @@ -14,9 +14,9 @@ import ( "github.com/Rain-kl/Wavelet/internal/apps/openflare/chwriter" ofgeoip "github.com/Rain-kl/Wavelet/internal/apps/openflare/geoip" "github.com/Rain-kl/Wavelet/internal/apps/risk_control" - "github.com/Rain-kl/Wavelet/internal/lifecycle" + taskhandlers "github.com/Rain-kl/Wavelet/internal/infra/task/handlers" + "github.com/Rain-kl/Wavelet/internal/platform/lifecycle" "github.com/Rain-kl/Wavelet/internal/repository" - taskhandlers "github.com/Rain-kl/Wavelet/internal/task/handlers" "github.com/Rain-kl/Wavelet/pkg/cache/ram" "github.com/Rain-kl/Wavelet/pkg/logger" ) diff --git a/internal/bootstrap/bootstrap_test.go b/internal/platform/bootstrap/bootstrap_test.go similarity index 100% rename from internal/bootstrap/bootstrap_test.go rename to internal/platform/bootstrap/bootstrap_test.go diff --git a/internal/lifecycle/lifecycle.go b/internal/platform/lifecycle/lifecycle.go similarity index 100% rename from internal/lifecycle/lifecycle.go rename to internal/platform/lifecycle/lifecycle.go diff --git a/internal/repository/analytics/access_log.go b/internal/repository/analytics/access_log.go index 4d39d9bd..5e954a06 100644 --- a/internal/repository/analytics/access_log.go +++ b/internal/repository/analytics/access_log.go @@ -9,7 +9,7 @@ import ( "fmt" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" ) diff --git a/internal/repository/analytics/access_log_stats.go b/internal/repository/analytics/access_log_stats.go index e6c3520c..d07a7a7f 100644 --- a/internal/repository/analytics/access_log_stats.go +++ b/internal/repository/analytics/access_log_stats.go @@ -9,7 +9,7 @@ import ( "sort" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" ) diff --git a/internal/repository/analytics/access_log_test.go b/internal/repository/analytics/access_log_test.go index 3e6b67c1..6a172e81 100644 --- a/internal/repository/analytics/access_log_test.go +++ b/internal/repository/analytics/access_log_test.go @@ -10,7 +10,7 @@ import ( "github.com/ClickHouse/clickhouse-go/v2/lib/column" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/repository/analytics/access_log_writer.go b/internal/repository/analytics/access_log_writer.go index bbbe2d0e..337ca966 100644 --- a/internal/repository/analytics/access_log_writer.go +++ b/internal/repository/analytics/access_log_writer.go @@ -7,7 +7,7 @@ import ( "context" "fmt" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" ) diff --git a/internal/repository/analytics/clickhouse_stats.go b/internal/repository/analytics/clickhouse_stats.go index 18e4ca1b..fcd507fd 100644 --- a/internal/repository/analytics/clickhouse_stats.go +++ b/internal/repository/analytics/clickhouse_stats.go @@ -7,9 +7,9 @@ import ( "context" "fmt" - "github.com/Rain-kl/Wavelet/internal/config" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/batchwriter" + "github.com/Rain-kl/Wavelet/internal/infra/config" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/batchwriter" ) // ClickHouseOperationalStats summarizes ClickHouse merge/mutation pressure diff --git a/internal/repository/analytics/node_access_log.go b/internal/repository/analytics/node_access_log.go index 36092413..dde81cec 100644 --- a/internal/repository/analytics/node_access_log.go +++ b/internal/repository/analytics/node_access_log.go @@ -10,7 +10,7 @@ import ( "time" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" ) diff --git a/internal/repository/analytics/node_access_log_test.go b/internal/repository/analytics/node_access_log_test.go index 2e552d38..61246452 100644 --- a/internal/repository/analytics/node_access_log_test.go +++ b/internal/repository/analytics/node_access_log_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/repository/analytics/node_access_log_writer.go b/internal/repository/analytics/node_access_log_writer.go index 0840f63c..062de249 100644 --- a/internal/repository/analytics/node_access_log_writer.go +++ b/internal/repository/analytics/node_access_log_writer.go @@ -9,8 +9,8 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" ) diff --git a/internal/repository/analytics/node_observability.go b/internal/repository/analytics/node_observability.go index a6581dd7..7d8e5aa6 100644 --- a/internal/repository/analytics/node_observability.go +++ b/internal/repository/analytics/node_observability.go @@ -10,7 +10,7 @@ import ( "time" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" ) diff --git a/internal/repository/analytics/node_observability_latest_test.go b/internal/repository/analytics/node_observability_latest_test.go index 171771fe..dfebce46 100644 --- a/internal/repository/analytics/node_observability_latest_test.go +++ b/internal/repository/analytics/node_observability_latest_test.go @@ -11,7 +11,7 @@ import ( "time" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) diff --git a/internal/repository/analytics/node_observability_test.go b/internal/repository/analytics/node_observability_test.go index 6d1a75e1..bf8b7a21 100644 --- a/internal/repository/analytics/node_observability_test.go +++ b/internal/repository/analytics/node_observability_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/repository/analytics/node_observability_writer.go b/internal/repository/analytics/node_observability_writer.go index e4acac8c..a45673d5 100644 --- a/internal/repository/analytics/node_observability_writer.go +++ b/internal/repository/analytics/node_observability_writer.go @@ -9,8 +9,8 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/db" - "github.com/Rain-kl/Wavelet/internal/db/idgen" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" + "github.com/Rain-kl/Wavelet/internal/infra/persistence/idgen" analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics" ) diff --git a/internal/repository/auth_source_cache.go b/internal/repository/auth_source_cache.go index 6650b127..b78ca614 100644 --- a/internal/repository/auth_source_cache.go +++ b/internal/repository/auth_source_cache.go @@ -10,7 +10,7 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/cache/ram" ) diff --git a/internal/repository/auth_source_cache_test.go b/internal/repository/auth_source_cache_test.go index a39fe060..009ea3bc 100644 --- a/internal/repository/auth_source_cache_test.go +++ b/internal/repository/auth_source_cache_test.go @@ -14,7 +14,7 @@ import ( "github.com/redis/go-redis/v9/maintnotifications" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/repository/push_channel.go b/internal/repository/push_channel.go index 6ce210f3..7afa800b 100644 --- a/internal/repository/push_channel.go +++ b/internal/repository/push_channel.go @@ -7,7 +7,7 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/repository/push_event.go b/internal/repository/push_event.go index dbc02aee..ad46ed0e 100644 --- a/internal/repository/push_event.go +++ b/internal/repository/push_event.go @@ -7,7 +7,7 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/repository/push_history.go b/internal/repository/push_history.go index 463087c3..f9ef9fbd 100644 --- a/internal/repository/push_history.go +++ b/internal/repository/push_history.go @@ -6,7 +6,7 @@ package repository import ( "context" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/repository/system_config.go b/internal/repository/system_config.go index 4291aaa9..804a7220 100644 --- a/internal/repository/system_config.go +++ b/internal/repository/system_config.go @@ -13,7 +13,7 @@ import ( "github.com/shopspring/decimal" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/cache/ram" ) diff --git a/internal/repository/system_config_admin.go b/internal/repository/system_config_admin.go index 9a5c7841..acb3ff3d 100644 --- a/internal/repository/system_config_admin.go +++ b/internal/repository/system_config_admin.go @@ -7,7 +7,7 @@ import ( "context" "errors" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/repository/system_config_cache.go b/internal/repository/system_config_cache.go index 3c99b100..7a620461 100644 --- a/internal/repository/system_config_cache.go +++ b/internal/repository/system_config_cache.go @@ -12,7 +12,7 @@ import ( "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/pkg/cache/ram" ) diff --git a/internal/repository/system_config_test.go b/internal/repository/system_config_test.go index 0418229c..2172c324 100644 --- a/internal/repository/system_config_test.go +++ b/internal/repository/system_config_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/pkg/cache/ram" "github.com/alicebob/miniredis/v2" diff --git a/internal/repository/template.go b/internal/repository/template.go index f2d4a695..c7998902 100644 --- a/internal/repository/template.go +++ b/internal/repository/template.go @@ -7,7 +7,7 @@ import ( "context" "errors" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/repository/upload.go b/internal/repository/upload.go index 599f66c4..4d74a745 100644 --- a/internal/repository/upload.go +++ b/internal/repository/upload.go @@ -7,7 +7,7 @@ import ( "context" "strings" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/repository/upload_stat.go b/internal/repository/upload_stat.go index 58f96fdc..eec59276 100644 --- a/internal/repository/upload_stat.go +++ b/internal/repository/upload_stat.go @@ -6,7 +6,7 @@ package repository import ( "context" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" ) diff --git a/internal/repository/user.go b/internal/repository/user.go index b93b1d43..f1dc1050 100644 --- a/internal/repository/user.go +++ b/internal/repository/user.go @@ -6,7 +6,7 @@ package repository import ( "context" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "gorm.io/gorm" ) diff --git a/internal/router/middlewares.go b/internal/router/middlewares.go index 10f771e8..58a2389b 100644 --- a/internal/router/middlewares.go +++ b/internal/router/middlewares.go @@ -12,10 +12,10 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/internal/common/response" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/Rain-kl/Wavelet/pkg/logger" otel_trace "github.com/Rain-kl/Wavelet/pkg/trace" "github.com/gin-gonic/gin" diff --git a/internal/router/root/default.go b/internal/router/root/default.go index 9622fb1a..d19baddc 100644 --- a/internal/router/root/default.go +++ b/internal/router/root/default.go @@ -8,7 +8,7 @@ import ( publicconfig "github.com/Rain-kl/Wavelet/internal/apps/config" "github.com/Rain-kl/Wavelet/internal/apps/health" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" diff --git a/internal/router/router.go b/internal/router/router.go index 1f5bdd0a..d429aff3 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -17,12 +17,12 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/risk_control" - "github.com/Rain-kl/Wavelet/internal/bootstrap" + "github.com/Rain-kl/Wavelet/internal/platform/bootstrap" router_root "github.com/Rain-kl/Wavelet/internal/router/root" v1 "github.com/Rain-kl/Wavelet/internal/router/v1" "github.com/Rain-kl/Wavelet/internal/apps/oauth" - "github.com/Rain-kl/Wavelet/internal/config" + "github.com/Rain-kl/Wavelet/internal/infra/config" otel_trace "github.com/Rain-kl/Wavelet/pkg/trace" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/redis" diff --git a/internal/shared/constants.go b/internal/shared/constants.go new file mode 100644 index 00000000..d2793f58 --- /dev/null +++ b/internal/shared/constants.go @@ -0,0 +1,6 @@ +// Copyright 2025 linux.do +// Copyright 2026 Arctel.net +// SPDX-License-Identifier: Apache-2.0 + +// Package shared 提供跨模块共享的常量、错误定义和通用类型。 +package shared diff --git a/internal/common/errs.go b/internal/shared/errs.go similarity index 93% rename from internal/common/errs.go rename to internal/shared/errs.go index 20d9a8b1..c5c61b8c 100644 --- a/internal/common/errs.go +++ b/internal/shared/errs.go @@ -2,7 +2,7 @@ // Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 -package common +package shared // 通用业务错误消息常量 const ( diff --git a/internal/common/response/abort.go b/internal/shared/response/abort.go similarity index 100% rename from internal/common/response/abort.go rename to internal/shared/response/abort.go diff --git a/internal/common/response/middleware.go b/internal/shared/response/middleware.go similarity index 100% rename from internal/common/response/middleware.go rename to internal/shared/response/middleware.go diff --git a/internal/common/response/middleware_test.go b/internal/shared/response/middleware_test.go similarity index 100% rename from internal/common/response/middleware_test.go rename to internal/shared/response/middleware_test.go diff --git a/internal/common/response/response.go b/internal/shared/response/response.go similarity index 100% rename from internal/common/response/response.go rename to internal/shared/response/response.go diff --git a/internal/testhelper/gin.go b/internal/testhelper/gin.go index 2caad1b9..edb9c9f9 100644 --- a/internal/testhelper/gin.go +++ b/internal/testhelper/gin.go @@ -4,7 +4,7 @@ package testhelper import ( - "github.com/Rain-kl/Wavelet/internal/common/response" + "github.com/Rain-kl/Wavelet/internal/shared/response" "github.com/gin-gonic/gin" ) diff --git a/internal/testhelper/test_helper.go b/internal/testhelper/test_helper.go index 391234a4..e6a8f949 100644 --- a/internal/testhelper/test_helper.go +++ b/internal/testhelper/test_helper.go @@ -9,7 +9,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" "github.com/Rain-kl/Wavelet/internal/repository" "github.com/alicebob/miniredis/v2" diff --git a/scripts/live_ch_smoke/main.go b/scripts/live_ch_smoke/main.go index 8357f191..3cdfa9a7 100644 --- a/scripts/live_ch_smoke/main.go +++ b/scripts/live_ch_smoke/main.go @@ -11,7 +11,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/openflare/chwriter" - "github.com/Rain-kl/Wavelet/internal/db" + db "github.com/Rain-kl/Wavelet/internal/infra/persistence" "github.com/Rain-kl/Wavelet/internal/model" )