Files
req/README.md
T
what e5b5c18123 docs: 新增 README,说明 v1-legacy 分支的能力范围与安装方式
记录这条老线跟 master 的接口差异,以及依赖方(如 zg-estate)应该怎么锁定/更新
到这个分支,避免误跑 go get -u 拉到 master 上的破坏性改动。
2026-08-20 16:26:14 +08:00

40 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# git.fsdpf.net/go/reqv1-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`)——这个仓库没有打
语义化 tagGo 对"最新版本"的解析规则是退回到仓库默认分支(`master`)的 HEAD,会把新架构的
破坏性改动一起拉进来,而不是停留在这个分支上。