- Create sql:: module with raw SQL queries (no business logic)
- Services now call sql:: functions + handle conversion logic only
- Eliminate SQL duplication across V1/V2 service methods
- Remove redundant db:: wrapper functions for bulletins, bible_verses, schedule
- Clean Handler → Service → Shared SQL → DB architecture
- Maintain API compatibility, zero downtime
BREAKING: Removed CreateEventRequest - unused for direct creation
ADDED: UpdateEventRequest - clean editing with image support
IMPROVED: EventService now contains business logic, not wrapper calls
Architecture Changes:
- Before: Handler → Service → db::events → SQL (wasteful)
- After: Handler → Service → Direct SQL + Business Logic (clean)
Key Improvements:
✅ All EventService methods use direct SQL with real business logic
✅ Eliminated pointless db::events wrapper functions
✅ Added missing V2 service methods for consistency
✅ Fixed handler pattern violations (no more direct db calls)
✅ Preserved email notifications and HTTP response formats
✅ Applied sanitization, validation, error handling in services
Changes:
- Remove CreateEventRequest/V2 (unused create paths)
- Add UpdateEventRequest with image field (no redundant thumbnail)
- Migrate all EventService methods to direct SQL + business logic
- Fix v2/events.rs to use proper service methods consistently
- Remove create/update routes and handlers (unused)
- Maintain backward compatibility for all APIs
Next: Apply same DRY/KISS cleanup to BulletinService and others
- Complete rewrite of db/bulletins.rs using direct SQL queries only
- Remove all dependencies on dead *Operations patterns
- Enhanced error handling with specific error types (bulletin_not_found, duplicate_entry)
- Fix BulletinService to call db::bulletins:: directly instead of dead BulletinOperations
- Clean SQL with proper logging and error context
- Part of nuclear consolidation to Handler → Service → DB pattern
- Remove entire utils/db_operations.rs file and all *Operations patterns
- Comment out imports to dead operations
- This breaks compilation temporarily but eliminates the maintenance nightmare
- Next: rewrite db:: modules to use direct SQL instead of operations
- Goal: Clean Handler → Service → Database pattern only
- Remove all direct db:: calls from events.rs handler
- Add missing get_pending_by_id method to EventService
- Use specific error types (ApiError::event_not_found)
- Clean handler → service → database pattern
- First step in eliminating maintenance nightmare of multiple DB patterns
- Add comprehensive validation methods for dates, UUIDs, ranges, files
- Domain-specific validation functions for bulletins, events, hymnal search
- Enhanced recurring pattern validation with specific error types
- Better date range validation with improved error messages
- Foundation for consistent input validation across all endpoints
- All using new specific error types for better debugging
- Add specific error variants for better internal handling
- Enhance error messages with context and logging
- Improve database operations with better error handling
- Use specific errors for media processing, config issues, duplicates
- All HTTP responses remain identical - zero breaking changes
- Foundation for better maintainability and debugging
- Fixed 502 error when uploading thumbnails via admin panel
- Added /api/upload/events/:id/thumbnail route and handler
- Thumbnails saved with thumb_ prefix for organization
- Includes proper file cleanup when replacing existing thumbnails
- Resolves CORS issues by ensuring endpoint exists for proper middleware handling
- Created comprehensive README.md with setup instructions and API overview
- Removed 10 internal development .md files
- Updated .gitignore to prevent future development docs from being tracked
- Repository now has clean, professional documentation structure
- Removed all .fish and .sh utility scripts
- Removed test SQL files and debug scripts
- Removed temp files and symlinks
- Removed HTML test files and Python migration helpers
- Updated .gitignore to prevent these files from being tracked again
Repository now contains only essential project code and migrations.
Complete church management system with bulletin management, media processing, live streaming integration, and web interface. Includes authentication, email notifications, database migrations, and comprehensive test suite.