This directory contains SQLx migrations for the Call for Papers system.
The database schema supports a complete conference management system with:
- User authentication (local and social providers)
- Talk submission and management
- Rating and review system
- Conference scheduling
- Email templates and logging
Migrations are applied automatically when the application starts.
Creates the user authentication system:
users- User accounts (speakers and organizers)auth_providers- Social login providers (Google, Facebook, GitHub, Apple)sessions- Session management
Creates the talk submission and rating system:
talks- Talk proposals with title, summary, description, slideslabels- Tags/categories for talks (manual and AI-generated)talk_labels- Many-to-many relationship between talks and labelsratings- Organizer ratings for talks (1-5 scale)
Creates the conference scheduling system:
conferences- Conference/event informationtracks- Rooms or parallel tracksschedule_slots- Time slots with assigned talks
Creates the email communication system:
email_templates- Customizable email templatesemail_logs- History of sent emails
users
├─> auth_providers (multiple auth methods per user)
├─> sessions (active sessions)
├─> talks (as speaker)
├─> ratings (as organizer)
└─> talk_labels.added_by (who added label)
talks
├─> talk_labels (many-to-many with labels)
├─> ratings (multiple organizer ratings)
└─> schedule_slots (scheduled time)
conferences
├─> tracks (rooms/parallel tracks)
├─> schedule_slots (conference schedule)
└─> email_templates (conference-specific templates)
submitted- Initial state when speaker submitspending- Accepted by organizers, awaiting speaker confirmationaccepted- Speaker confirmed they will presentrejected- Not selected for the conference
local- Username/password authenticationgoogle- Google OAuthfacebook- Facebook OAuthgithub- GitHub OAuthapple- Apple Sign In
submission_confirmation- Sent when talk is submittedtalk_accepted- Sent when talk is acceptedtalk_rejected- Sent when talk is rejectedtalk_pending- Sent when awaiting speaker confirmationschedule_notification- Sent with schedule informationcustom- Custom templates for other purposes
To run migrations manually:
sqlx migrate run --database-url "postgres://postgres:postgres@localhost/call_for_papers"To create a new migration:
sqlx migrate add <migration_name>To revert the last migration:
sqlx migrate revert --database-url "postgres://postgres:postgres@localhost/call_for_papers"