SuperAPI AI 工具集

supabase-database

数据与分析

查看项目

更新于 10-16 05:32

技能介绍

用途

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_name
    • supabase db push
    • supabase db reset
    • supabase 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 客户端与租户服务,相关依赖与配置细节资料中未展开说明。