e5b5c18123999aea8a37650badc50a60cc15ff5f
记录这条老线跟 master 的接口差异,以及依赖方(如 zg-estate)应该怎么锁定/更新 到这个分支,避免误跑 go get -u 拉到 master 上的破坏性改动。
git.fsdpf.net/go/req(v1-legacy)
老架构下资源系统的核心接口定义。只有接口,没有默认实现——具体实现放在配套的老版
framework/contracts 仓库里,本仓库只提供类型契约,供它们和使用方共同依赖。
这个分支有什么
Resource:资源接口,GetDBTable(params ...any) *db.Builder/GetAuthDBTable(u User, params ...any) *db.Builder基于老版db.Builder(不是db.SelectDataset)构造查询;WithRolesCondition(b *db.Builder, t string, u User) error直接挂在接口上做行级权限过滤,不是靠外部 DI 注入的钩子;ResAuthDB(ResAuthOff/ResAuthOn/ResAuthAll)控制要不要做权限过滤、要不要扩展到关联资源。ResField/QueryField:字段/查询字段接口,ToValue/ToBlueprint/ToQueryField等方法签名 跟现在master分支的不兼容(比如GetRawDefault(driver string)现在改成了不带driver参数的版本)。User:用户接口,角色、匿名判断、HasUserRoles等,这部分跟master基本一致。RouteCtx/RouteMethod/HttpResponse/GlobalParams等 HTTP 路由和响应相关的类型 (routing.go/response.go/global_params.go):这些在master分支上已经不在这个仓库 的范围内了,是这条老线特有的。
这个分支的定位
给还在维护、但还没迁移到 master 分支新架构(resx 默认实现、字段级脱敏、ResFlags 权限
开关、虚拟资源等)的老项目用,比如 zg-estate(通过 framework/contracts 间接依赖)。
只接受独立于新架构的 bug 修复,不会引入 master 上的新能力。
依赖方怎么安装/更新
Go modules 不会记住某个版本是从哪个分支解析出来的,go.mod/go.sum 里存的只是一次性解析出
的 commit 伪版本号,分支上有新提交也不会自动同步。
首次锁定,或者要拿这个分支上新提交的更新,都执行同一条命令:
go get git.fsdpf.net/go/req@v1-legacy
禁止跑裸的 go get -u(或者 go get git.fsdpf.net/go/req@latest)——这个仓库没有打
语义化 tag,Go 对"最新版本"的解析规则是退回到仓库默认分支(master)的 HEAD,会把新架构的
破坏性改动一起拉进来,而不是停留在这个分支上。
Languages
Go
100%