/** * Database Feature Flag Provider * * Database-based provider using DbService for persistent storage. * Requires Core.initialize() to be called first with database config. * * @fileoverview Database provider for feature flags */ import type { FeatureFlag, FeatureFlagRule, FeatureFlagConfig, FeatureFlagValue, CreateFlagRequest } from '@plyaz/types'; import { FeatureFlagProvider } from '../provider'; /** * Database-based feature flag provider with @plyaz/db integration. * * Uses DbService (configured via Core.initialize()) for database operations. * No connection string needed here - DbService handles all connection details. * * @class DatabaseFeatureFlagProvider * @extends {FeatureFlagProvider} * * @example * ```typescript * // First: Initialize Core with database config * await Core.initialize({ * db: { adapter: 'sql', sql: { connectionString: '...' } } * }); * * // Then: Create database provider * const provider = new DatabaseFeatureFlagProvider({ * provider: 'database', * isCacheEnabled: true, * cacheTtl: 300, * }, FEATURES); * await provider.initialize(); * ``` */ export declare class DatabaseFeatureFlagProvider extends FeatureFlagProvider { private _repository?; private _tableConfig?; private readonly logger; /** * Lazily get the repository, creating it on first access after DbService is initialized. */ private get repository(); /** * Creates a new database feature flag provider. * * @param config - Provider configuration * @param features - Default feature flag values */ constructor(config: FeatureFlagConfig, features: Record); /** * Initialize database connection via DbService */ initialize(): Promise; /** * Fetches flags and rules from the database. * * @protected * @returns Promise with flags and rules from database */ protected fetchData(): Promise<{ flags: FeatureFlag[]; rules: FeatureFlagRule[]; }>; /** * Dispose resources */ dispose(): void; /** * Gets database provider status and configuration info. * * @returns Database provider status information */ getDatabaseInfo(): { tableName: string; isImplemented: boolean; dbServiceInitialized: boolean; }; /** * Creates a new feature flag in the database. * * @param data - Flag creation data * @returns The created feature flag */ createFlag(data: CreateFlagRequest): Promise>; /** * Updates an existing feature flag in the database. * * @param key - Flag key to update * @param data - Partial flag data to update * @returns The updated feature flag */ updateFlag(key: FeatureFlagKey, data: Partial>): Promise>; /** * Deletes a feature flag from the database. * * @param key - Flag key to delete */ deleteFlag(key: FeatureFlagKey): Promise; /** * Gets all rules for a specific flag. * * @param key - Flag key to get rules for * @returns Array of rules for the flag */ getRules(key: FeatureFlagKey): Promise[]>; /** * Gets all enabled rules across all flags. * * @returns Array of all enabled rules */ getAllRules(): Promise[]>; } //# sourceMappingURL=database.d.ts.map