140 lines
4.3 KiB
Markdown
140 lines
4.3 KiB
Markdown
Validate SQLAlchemy conversion and test functionality
|
|
|
|
This command validates that the asyncpg to SQLAlchemy conversion was successful by running comprehensive tests, checking syntax validity, verifying database connectivity, and ensuring all functionality works as expected.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
/validate-sqlalchemy-conversion [options]
|
|
```
|
|
|
|
## Options
|
|
|
|
- `--path <directory>`: Project directory to validate (default: current directory)
|
|
- `--connection-string <url>`: Database connection for testing (required)
|
|
- `--test-data`: Run tests with sample data
|
|
- `--performance`: Include performance benchmarks
|
|
- `--supabase`: Include Supabase-specific validations
|
|
- `--detailed`: Provide detailed validation report
|
|
- `--fix-issues`: Attempt to automatically fix detected issues
|
|
|
|
## Validation Categories
|
|
|
|
### Syntax & Import Validation
|
|
- Check all Python files for syntax errors
|
|
- Verify SQLAlchemy imports are correct
|
|
- Validate async/await usage patterns
|
|
- Check for proper type hints and annotations
|
|
|
|
### Database Connectivity
|
|
- Test database connection establishment
|
|
- Verify async session creation and cleanup
|
|
- Test connection pooling functionality
|
|
- Validate connection string parsing
|
|
|
|
### Query Functionality Tests
|
|
- Test basic CRUD operations (Create, Read, Update, Delete)
|
|
- Validate parameter binding and escaping
|
|
- Test complex queries with joins and aggregations
|
|
- Verify transaction handling and rollback scenarios
|
|
|
|
### Performance Benchmarks
|
|
- Compare query performance between original and converted code
|
|
- Test connection pooling efficiency
|
|
- Memory usage analysis during database operations
|
|
- Concurrent request handling validation
|
|
|
|
### Supabase Integration Tests (optional)
|
|
- Row Level Security (RLS) functionality
|
|
- JWT token validation with database sessions
|
|
- Supabase auth integration testing
|
|
- Storage integration with database operations
|
|
|
|
## Validation Process
|
|
|
|
### Phase 1: Static Analysis
|
|
1. Syntax validation of all Python files
|
|
2. Import verification and dependency checking
|
|
3. Async pattern validation and coroutine checking
|
|
4. Type hint verification for better IDE support
|
|
|
|
### Phase 2: Database Testing
|
|
1. Connection establishment tests
|
|
2. Session lifecycle validation
|
|
3. Basic CRUD operation testing
|
|
4. Error handling and recovery testing
|
|
|
|
### Phase 3: Integration Testing
|
|
1. FastAPI endpoint testing with database operations
|
|
2. Dependency injection validation
|
|
3. Concurrent request handling
|
|
4. Memory leak detection
|
|
|
|
### Phase 4: Performance Analysis
|
|
1. Query execution time comparison
|
|
2. Connection pool efficiency testing
|
|
3. Memory usage profiling
|
|
4. Scalability assessment
|
|
|
|
## Examples
|
|
|
|
Basic validation:
|
|
```bash
|
|
/validate-sqlalchemy-conversion --connection-string "postgresql+asyncpg://user:pass@host:5432/db"
|
|
```
|
|
|
|
Comprehensive validation with Supabase support:
|
|
```bash
|
|
/validate-sqlalchemy-conversion --supabase --performance --test-data --detailed
|
|
```
|
|
|
|
Validate specific directory with auto-fix:
|
|
```bash
|
|
/validate-sqlalchemy-conversion --path ./src/api --connection-string $DATABASE_URL --fix-issues
|
|
```
|
|
|
|
## Output Reports
|
|
|
|
### Summary Report
|
|
- Overall validation status (PASS/FAIL/WARNING)
|
|
- Number of issues found and fixed
|
|
- Performance metrics comparison
|
|
- Recommendations for improvements
|
|
|
|
### Detailed Issues Report
|
|
- File-by-file validation results
|
|
- Specific syntax errors and fixes applied
|
|
- Missing imports or incorrect patterns
|
|
- Performance bottlenecks identified
|
|
|
|
### Performance Analysis
|
|
- Query execution time comparisons
|
|
- Connection pool efficiency metrics
|
|
- Memory usage patterns
|
|
- Scalability test results
|
|
|
|
### Recommendations
|
|
- Code improvement suggestions
|
|
- Performance optimization opportunities
|
|
- Security considerations
|
|
- Best practice recommendations
|
|
|
|
## Auto-Fix Capabilities
|
|
|
|
When `--fix-issues` is enabled, the command can automatically:
|
|
|
|
- Fix common import errors and missing dependencies
|
|
- Correct async/await usage patterns
|
|
- Update type hints for better IDE support
|
|
- Fix basic syntax errors
|
|
- Optimize connection pooling configurations
|
|
- Update error handling patterns
|
|
- Fix parameter binding issues
|
|
- Correct transaction handling patterns
|
|
|
|
## Exit Codes
|
|
|
|
- `0`: Validation successful - all tests passed
|
|
- `1`: Validation failed - critical issues found
|
|
- `2`: Validation failed with warnings - non-critical issues present
|
|
- `3`: Validation error - unable to complete validation due to environment issues |