Commit graph

12 commits

Author SHA1 Message Date
Benjamin Slingo ef7e077ae2 Refactor EventService: eliminate duplication, apply DRY/KISS principles
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
2025-08-28 22:42:45 -04:00
Benjamin Slingo b55b9f0abe Step 3-4: Rewrite db/bulletins.rs with pure SQL + fix BulletinService
- 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
2025-08-28 21:41:01 -04:00
Benjamin Slingo da06dae89d NUCLEAR: Delete db_operations.rs entirely
- 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
2025-08-28 21:36:14 -04:00
Benjamin Slingo e2ab29505a Phase 1.5: Migrate main events handler to service layer 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
2025-08-28 21:34:03 -04:00
Benjamin Slingo e0fffbc4b9 Phase 1.4: Enhanced input validation system
- 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
2025-08-28 21:25:36 -04:00
Benjamin Slingo ad43a19f7c Phase 1: Enhance error handling and database operations
- 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
2025-08-28 21:20:29 -04:00
Benjamin Slingo 5793e12df9 Add comprehensive hymnal support and enhance bulletin processing
- Add complete hymnal API with search, themes, and responsive readings
- Implement hymn title lookup for bulletins (#319#319 - Hymn Title)
- Add Bible book abbreviation support (Matt → Matthew, etc.)
- Enhance scripture processing to handle verse ranges (Matt 1:21-23)
- Add hymnal database schema with SDA 1985 and 1941 hymnals support
- Implement advanced hymnal search with fuzzy matching and themes
- Update bulletin processing to auto-populate hymn titles from database
2025-08-28 20:34:04 -04:00
Benjamin Slingo 916a54caa2 Add missing event thumbnail upload endpoint
- 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
2025-08-23 11:29:44 -04:00
Benjamin Slingo 17aeb7d55e Add proper README and remove development documentation files
- 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
2025-08-19 21:01:55 -04:00
Benjamin Slingo 7ab47d6017 Clean up repository: remove shell scripts, test files, and temporary utilities
- 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.
2025-08-19 21:00:09 -04:00
Benjamin Slingo b150e08163 Remove .serena folder from tracking and add to .gitignore 2025-08-19 20:57:56 -04:00
Benjamin Slingo 0c06e159bb Initial commit: Church API Rust implementation
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.
2025-08-19 20:56:41 -04:00