用途
Supabase Database 是一个专门用于处理 Supabase PostgreSQL 数据库的技能,适用于需要执行数据库查询、编写 RLS(行级安全)策略、管理迁移、编写数据库函数以及进行数据操作的场景。它特别针对多租户(multitenant)应用设计,强调租户隔离与数据安全。
主要能力
该技能覆盖以下数据库工作内容:
- 查询操作:使用 Supabase 客户端进行数据查询,要求始终按 tenant_id 过滤,并指定所需字段而非使用
*。 - 数据写入:插入与更新操作均需携带 tenant_id,确保数据归属正确。
- RLS 策略:为表启用行级安全,并编写包含租户校验的策略,实现租户隔离;也可按需添加公共读取策略。
- 迁移管理:通过
supabase/migrations/目录管理架构变更,提供迁移模板,包含事务包裹、条件式添加列与索引等写法。 - RLS 工具函数:提供
executeWithRLS等工具,在受控上下文中执行查询。 - Edge Functions:涉及
supabase/functions/目录下的边缘函数。
使用方式
技能给出了具体的代码模式与命令:
- 客户端引入:从
@/lib/supabase/server或@/lib/supabase/client引入 Supabase 客户端。 - 租户获取:通过
getTenantFromRequest从请求中获取租户信息。 - 查询示例:使用
.from().select().eq().order().limit()链式调用,并处理 error。 - 插入与更新示例:使用
.insert()与.update(),配合.select().single()返回结果。 - RLS 策略示例:使用
ALTER TABLE ... ENABLE ROW LEVEL SECURITY与CREATE POLICY,策略中通过current_setting('app.tenant_slug', true)关联租户。 - 迁移模板:使用
BEGIN; ... COMMIT;包裹,ADD COLUMN IF NOT EXISTS、CREATE INDEX IF NOT EXISTS等。 - 常用命令:
supabase migration new migration_namesupabase db pushsupabase db resetsupabase gen types typescript --local > src/types/database.ts
关键文件
src/lib/supabase/:Supabase 客户端工具src/lib/integrations/supabase/:Supabase 集成supabase/migrations/:数据库迁移supabase/functions/:边缘函数src/lib/auth/enterprise-rls-utils.ts:RLS 工具
适用场景
适用于基于 Supabase 的多租户应用开发,尤其是需要严格租户隔离、RLS 策略管理、数据库迁移与类型生成的场景。也适用于需要统一数据库操作规范、避免字符串拼接查询、保证架构变更可追溯的项目。
限制
资料未提供该技能的收费、价格、平台支持范围、性能效果等具体信息,暂未提供。使用前需确认项目是否已配置 Supabase 客户端与租户服务,相关依赖与配置细节资料中未展开说明。