- New quarterly_orders table with validation and constraints
- Full CRUD API endpoints for quarterly orders management
- Import functionality for bulk quarterly data from JSON
- Python scripts for data migration and database import
- Consistent validation for quarterly types and amounts
- Follows established DRY/KISS architectural patterns
- 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 church management system with bulletin management, media processing, live streaming integration, and web interface. Includes authentication, email notifications, database migrations, and comprehensive test suite.