mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 03:52:26 +08:00
新增迁移 242 删除 user_platform_quotas_platform_check 与 composite_model_routes_target_platform_check(DROP ... IF EXISTS,可重入)。 此后新增平台只需在平台清单中登记,不再需要改约束的迁移;此前 Grok、国产 厂商、MiniMax、OpenCode 共写过 5 次。 平台合法性改由应用层保证,与原约束的拒绝范围相同: - user_platform_quotas 用原生 SQL 写入,不经过 ent Validate,repository 在 BulkInsertInitial / UpsertForUser 写入前校验平台,非法值在发出任何 SQL 前 返回错误(此前由数据库拒绝并回滚); - ent schema 的 platform / target_platform 校验改查平台清单,组合路由新增 target_platform 校验(service 层与 admin 接口的原有校验保留)。 渠道监控的 provider 约束表示已实现的探测能力,不属于平台清单,保留不动。 集成测试(真实 PostgreSQL):在还原旧约束的库上重复执行迁移、约束被移除、 渠道监控约束保留、数据库层可写入未来的新平台值;repository 拒绝未登记平台 且不产生副作用(去掉校验后该测试失败)。全部仓储集成测试通过。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 lines
948 B
SQL
19 lines
948 B
SQL
-- 平台白名单改由应用层的平台清单(internal/domain/platforms.go)统一校验,
|
||
-- 新增平台不再需要修改数据库约束的迁移。
|
||
--
|
||
-- 1. user_platform_quotas.platform:admin 接口 / 设置校验 service.AllowedQuotaPlatforms,
|
||
-- repository 写入前校验 domain.IsConcretePlatform,ent schema Validate 同源。
|
||
-- 2. composite_model_routes.target_platform:admin 接口 binding、service
|
||
-- compositeRouteFromInput 与 ent schema Validate 均校验为已登记的具体平台。
|
||
--
|
||
-- channel_monitors / channel_monitor_request_templates 的 provider CHECK 表示
|
||
-- 渠道监控已实现的探测能力,不属于平台清单,保留不动。
|
||
--
|
||
-- DROP ... IF EXISTS 保证可重入。
|
||
|
||
ALTER TABLE user_platform_quotas
|
||
DROP CONSTRAINT IF EXISTS user_platform_quotas_platform_check;
|
||
|
||
ALTER TABLE composite_model_routes
|
||
DROP CONSTRAINT IF EXISTS composite_model_routes_target_platform_check;
|