记录这条老线跟 master 的接口差异,以及依赖方(如 zg-estate)应该怎么锁定/更新 到这个分支,避免误跑 go get -u 拉到 master 上的破坏性改动。
40 lines
2.3 KiB
Markdown
40 lines
2.3 KiB
Markdown
# 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,会把新架构的
|
||
破坏性改动一起拉进来,而不是停留在这个分支上。
|