supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
95 lines • 3 kB
TypeScript
/**
* Data Volume Management System for Epic 7: Configuration Extensibility Framework
* Manages realistic data volume configuration and generation patterns
*/
import { ExtendedSeedConfig } from '../../core/types/config-types';
export interface DataVolumeProfile {
name: string;
description: string;
userCount: number;
avgItemsPerUser: number;
avgRelationshipsPerItem: number;
dataQualityLevel: 'basic' | 'rich' | 'production';
environment: 'development' | 'staging' | 'production';
estimatedSeedingTime: number;
storageRequirement: number;
}
export interface DataGenerationMetrics {
totalUsers: number;
totalItems: number;
totalRelationships: number;
publicContentCount: number;
privateContentCount: number;
draftContentCount: number;
estimatedDatabaseSize: number;
estimatedSeedingTime: number;
}
export interface DomainSpecificPatterns {
domain: string;
contentTypes: string[];
relationshipPatterns: Array<{
from: string;
to: string;
expectedRatio: number;
description: string;
}>;
seasonalFactors: Array<{
period: string;
multiplier: number;
affects: string[];
}>;
userBehaviorProfiles: Array<{
type: string;
percentage: number;
activityLevel: 'low' | 'medium' | 'high';
contentCreationRate: number;
}>;
}
export declare class DataVolumeManager {
private domainPatterns;
constructor();
/**
* Generate comprehensive data volume configuration
*/
generateDataVolumeConfiguration(requirements: {
environment: 'development' | 'staging' | 'production';
testingScenarios: string[];
expectedLoad: 'light' | 'medium' | 'heavy';
domainType?: string;
customConstraints?: {
maxUsers?: number;
maxSeedingTime?: number;
maxDatabaseSize?: number;
};
}): ExtendedSeedConfig['dataVolumes'];
/**
* Calculate data generation metrics
*/
calculateGenerationMetrics(config: ExtendedSeedConfig): DataGenerationMetrics;
/**
* Get recommended profile for specific use case
*/
getRecommendedProfile(useCase: 'ci-testing' | 'development' | 'demo' | 'load-testing' | 'production'): DataVolumeProfile;
/**
* Validate data volume configuration
*/
validateDataVolumeConfiguration(config: ExtendedSeedConfig['dataVolumes']): {
valid: boolean;
errors: string[];
warnings: string[];
recommendations: string[];
};
/**
* Private helper methods
*/
private getBaseVolumesByEnvironment;
private getLoadMultiplier;
private generateContentRatios;
private generateRelationshipDensity;
private selectUserDistribution;
private generateVolumeProfiles;
private estimateDatabaseSize;
private estimateSeedingTime;
private initializeDomainPatterns;
}
//# sourceMappingURL=data-volume-manager.d.ts.map