SuperAPI AI 工具集

prisma-next-supabase

通用与其它

查看项目

更新于 10-15 16:37

技能介绍

用途:把 Prisma Next 接入 Supabase 项目,覆盖扩展包组合、引用 Supabase 自有表、编写行级安全(RLS)策略,以及通过 supabase() 运行时执行角色绑定查询。

主要能力:@prisma-next/extension-supabase/pack 提供 Supabase 自有对象(auth、storage 模式、原生枚举、anon/authenticated/service_role 角色)的契约空间,控制策略为 external,迁移规划器不为其生成 DDL,db verify 确认其存在。角色由扩展包提供,无需自行声明。运行时以角色为先:supabase() 返回的 SupabaseDb 无顶层查询面,需 await db.asUser(jwt)、db.asAnon() 或 db.asServiceRole() 得到 RoleBoundDb,再使用 .sql、.orm、.raw、.execute(plan)、.transaction(fn)。角色绑定在中间件之下,通过 set_config('role', …) 与 set_config('request.jwt.claims', …) 生效,释放时 RESET ALL。JWT 校验在获取连接前完成,当前项目需配置 jwksUrl(ES256),旧项目用 jwtSecret(HS256),二者只能取其一。

使用方式:在 prisma-next.config.ts 的底层 extensions 中写入 supabasePack(扩展暂无 /control 子路径);契约中用 supabase:auth.AuthUser 声明跨空间外键,用 policy_select/policy_update 等块编写策略,目标模型需加 @@rls;db.ts 用 @prisma-next/extension-supabase/runtime 的 supabase() 工厂创建客户端;查询通过 RoleBoundDb 进行。

适用场景:需要 RLS 策略、按请求绑定角色、外键指向 auth.users、以管理员读取 auth./storage. 的 Supabase 项目。

限制:不负责通用契约编辑、非 Supabase 运行时接线、通用查询形态与迁移规划;不编写 GRANT,管理员读取 Supabase 内部表需一次性执行 GRANT USAGE ON SCHEMA auth TO service_role; 与 GRANT SELECT ON TABLE auth.users TO service_role;。连接须用会话池(5432)或直连,勿用事务池(6543)。asUser/asAnon 无 .supabase,管理员根无 .transaction。用户管理建议用 GoTrue Admin API。其余细节暂未提供。