Documentation
¶
Overview ¶
Package supabase provides Supabase Platform integration for pgsquash. It handles auth.uid(), RLS policies, Storage bucket policies, and Realtime publications.
Index ¶
- Constants
- type SupabaseConfig
- type SupabasePlugin
- func (sp *SupabasePlugin) Detect(migrations []*types.Migration) bool
- func (sp *SupabasePlugin) DetectAuthPattern(stmt *types.Statement) string
- func (sp *SupabasePlugin) DetectPatterns(sql string) []plugins.Pattern
- func (sp *SupabasePlugin) EnrichStatement(ctx context.Context, stmt *types.Statement) error
- func (sp *SupabasePlugin) FixFunctionVolatility(ctx context.Context, functionSQL string) (string, error)
- func (sp *SupabasePlugin) GetConflictingPlugins() []string
- func (sp *SupabasePlugin) GetConsolidationRules() []plugins.ConsolidationRule
- func (sp *SupabasePlugin) GetRequiredExtensions() []string
- func (sp *SupabasePlugin) Initialize(ctx context.Context, config any) error
- func (sp *SupabasePlugin) InjectCompatibilityLayer(ctx context.Context) string
- func (sp *SupabasePlugin) ShouldPreserve(stmt *types.Statement) bool
- func (sp *SupabasePlugin) TransformSQL(ctx context.Context, sql string) (string, error)
- func (sp *SupabasePlugin) ValidateSchema(ctx context.Context, db *sql.DB) error
Constants ¶
const ( AuthPatternSupabase = "supabase_auth" // Supabase auth.uid() patterns AuthPatternSupabaseRLS = "supabase_rls" // RLS policies with auth.uid() AuthPatternSupabaseStorage = "supabase_storage" // Storage bucket policies )
Supabase-specific auth pattern identifiers
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type SupabaseConfig ¶
type SupabaseConfig struct {
Enabled bool `json:"enabled"`
JWTSecret string `json:"jwt_secret"`
EnableRLS bool `json:"enable_rls"`
StorageIntegration bool `json:"storage_integration"`
}
SupabaseConfig holds Supabase-specific configuration
type SupabasePlugin ¶
type SupabasePlugin struct {
*plugins.BasePlugin
// contains filtered or unexported fields
}
SupabasePlugin implements Supabase Platform integration
func NewSupabasePlugin ¶
func NewSupabasePlugin() *SupabasePlugin
NewSupabasePlugin creates a new Supabase plugin instance
func (*SupabasePlugin) Detect ¶
func (sp *SupabasePlugin) Detect(migrations []*types.Migration) bool
Detect checks if migrations contain Supabase patterns Detection patterns (in order of specificity):
- auth.uid() function calls (most specific to Supabase)
- auth.users table references
- storage.objects or storage.buckets tables
- supabase_realtime publication
func (*SupabasePlugin) DetectAuthPattern ¶
func (sp *SupabasePlugin) DetectAuthPattern(stmt *types.Statement) string
DetectAuthPattern analyzes a statement for Supabase authentication patterns
func (*SupabasePlugin) DetectPatterns ¶
func (sp *SupabasePlugin) DetectPatterns(sql string) []plugins.Pattern
DetectPatterns analyzes SQL for Supabase-specific patterns
func (*SupabasePlugin) EnrichStatement ¶
EnrichStatement adds Supabase-specific metadata to parsed statements
func (*SupabasePlugin) FixFunctionVolatility ¶
func (sp *SupabasePlugin) FixFunctionVolatility(ctx context.Context, functionSQL string) (string, error)
FixFunctionVolatility adds STABLE markers to Supabase auth functions Uses AST-based parsing for more accurate and maintainable transformations
func (*SupabasePlugin) GetConflictingPlugins ¶
func (sp *SupabasePlugin) GetConflictingPlugins() []string
GetConflictingPlugins returns plugins that conflict with Supabase
func (*SupabasePlugin) GetConsolidationRules ¶
func (sp *SupabasePlugin) GetConsolidationRules() []plugins.ConsolidationRule
GetConsolidationRules returns Supabase-specific consolidation rules
func (*SupabasePlugin) GetRequiredExtensions ¶
func (sp *SupabasePlugin) GetRequiredExtensions() []string
GetRequiredExtensions returns PostgreSQL extensions required by Supabase
func (*SupabasePlugin) Initialize ¶
func (sp *SupabasePlugin) Initialize(ctx context.Context, config any) error
Initialize configures the Supabase plugin with service-specific settings
func (*SupabasePlugin) InjectCompatibilityLayer ¶
func (sp *SupabasePlugin) InjectCompatibilityLayer(ctx context.Context) string
InjectCompatibilityLayer returns SQL to mock Supabase authentication for validation This creates:
- auth schema
- auth.users table (stub for foreign key references)
- Supabase roles (anon, authenticated, service_role)
- Mock auth.uid() function
- Mock auth.jwt() function
- Supabase Realtime publication
func (*SupabasePlugin) ShouldPreserve ¶
func (sp *SupabasePlugin) ShouldPreserve(stmt *types.Statement) bool
ShouldPreserve determines if a statement should never be consolidated
func (*SupabasePlugin) TransformSQL ¶
TransformSQL performs Supabase-specific SQL transformations Currently delegates to FixFunctionVolatility
func (*SupabasePlugin) ValidateSchema ¶
ValidateSchema performs Supabase-specific schema validation