supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
76 lines • 2.28 kB
TypeScript
/**
* Framework Strategy Registry
* Manages registration and selection of framework strategies
*/
import type { createClient } from '@supabase/supabase-js';
import { SeedingStrategy, DatabaseSchema, FrameworkDetectionResult } from './strategy-interface';
type SupabaseClient = ReturnType<typeof createClient>;
export interface StrategyRegistryOptions {
enableFallback?: boolean;
minimumConfidence?: number;
debug?: boolean;
}
export interface StrategySelection {
strategy: SeedingStrategy;
detection: FrameworkDetectionResult;
reason: string;
}
export declare class StrategyRegistry {
private strategies;
private client;
private options;
constructor(client: SupabaseClient, options?: StrategyRegistryOptions);
/**
* Register a seeding strategy
*/
register(strategy: SeedingStrategy): Promise<void>;
/**
* Register multiple strategies
*/
registerAll(strategies: SeedingStrategy[]): Promise<void>;
/**
* Unregister a strategy
*/
unregister(strategyName: string): void;
/**
* Get all registered strategies
*/
getStrategies(): SeedingStrategy[];
/**
* Get a specific strategy by name
*/
getStrategy(name: string): SeedingStrategy | undefined;
/**
* Select the best strategy for the given schema
*/
selectStrategy(schema: DatabaseSchema): Promise<StrategySelection>;
/**
* Select strategy with manual override
*/
selectStrategyWithOverride(schema: DatabaseSchema, frameworkOverride?: string): Promise<StrategySelection>;
/**
* Find the fallback strategy (typically generic)
*/
private findFallbackStrategy;
/**
* Get detection results for all strategies
*/
getAllDetectionResults(schema: DatabaseSchema): Promise<Array<{
strategy: string;
detection: FrameworkDetectionResult;
}>>;
/**
* Validate that a strategy works with the current schema
*/
validateStrategy(strategyName: string, schema: DatabaseSchema): Promise<{
valid: boolean;
issues: string[];
recommendations: string[];
}>;
/**
* Clear all registered strategies
*/
clear(): void;
}
export {};
//# sourceMappingURL=strategy-registry.d.ts.map