supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
78 lines • 2.27 kB
TypeScript
/**
* RLS-Compliant Seeder
* Implements user context-aware seeding that respects Row Level Security policies
*/
import type { createClient } from '@supabase/supabase-js';
import { BusinessLogicAnalysisResult, RLSComplianceOptions, UserContext, RLSComplianceResult } from '../features/analysis/business-logic-types';
type SupabaseClient = ReturnType<typeof createClient>;
export declare class RLSCompliantSeeder {
private client;
private serviceRoleClient?;
private businessLogicAnalyzer;
private options;
private cachedPolicies;
private currentUserContext?;
constructor(client: SupabaseClient, serviceRoleClient?: SupabaseClient, options?: Partial<RLSComplianceOptions>);
/**
* Seed data with RLS compliance
*/
seedWithRLSCompliance(table: string, data: any[], userContext?: UserContext): Promise<RLSComplianceResult>;
/**
* Create user context for seeding
*/
private createUserContext;
/**
* Get RLS policies for a specific table
*/
private getRLSPoliciesForTable;
/**
* Validate data against RLS policies
*/
private validateDataAgainstRLS;
/**
* Check policy conditions against data
*/
private checkPolicyConditions;
/**
* Generate fix suggestions for RLS violations
*/
private generateFixSuggestions;
/**
* Handle RLS violations with fixes or bypass
*/
private handleRLSViolations;
/**
* Apply data fixes based on suggestions
*/
private applyDataFixes;
/**
* Seed with user context
*/
private seedWithUserContext;
/**
* Seed directly without RLS compliance
*/
private seedDirectly;
/**
* Seed with RLS bypass using service role
*/
private seedWithBypass;
/**
* Validate inserted data
*/
private validateInsertedData;
/**
* Check if table has RLS enabled
*/
isRLSEnabled(table: string): Promise<boolean>;
/**
* Get RLS compliance recommendations
*/
getComplianceRecommendations(analysisResult: BusinessLogicAnalysisResult): string[];
/**
* Clear temporary user context
*/
clearUserContext(): Promise<void>;
}
export {};
//# sourceMappingURL=rls-compliant-seeder.d.ts.map