3.4 KiB
3.4 KiB
Database Configuration Reference
Current Setup
Database Type
- Provider: PostgreSQL
- ORM: Prisma
- Connection: Via
DATABASE_URLenvironment variable
Schema Location
- Prisma Schema:
prisma/schema.prisma - Migrations:
prisma/migrations/ - Seed Script:
prisma/seed.ts
Database Models
Core Models
-
Guest - Guest information and RSVP
- Fields: name, inviteCode, email, phone, maxPax, isAttending, etc.
- Relations: Song, GuestbookEntry, GalleryPhoto, Tribute, Table
-
Song - Song requests from guests
- Fields: title, artist, votes, previewUrl, trackUrl
- Relations: Guest, SongVote
-
GuestbookEntry - Guestbook messages
- Fields: message, photo, audioUrl, videoUrl
- Relations: Guest
-
GalleryPhoto - Photo gallery uploads
- Fields: url, thumbnailUrl, caption, likes
- Relations: Guest, PhotoComment
-
Table - Seating arrangements
- Fields: name, capacity
- Relations: Guest
-
Admin - Admin users
- Fields: username, password, email, totpSecret, totpEnabled
-
Tribute - Tributes/dedications
- Fields: guestName, dedication
- Relations: Guest (optional)
-
Reminder - Email/SMS reminders
- Fields: name, type, trigger, targetAudience, enabled
-
ABTest - A/B testing
- Fields: name, type, status, variantA, variantB, splitRatio
-
CouplesPlaylist - Couple's playlist
- Fields: title, artist, trackUrl, previewUrl, order, revealAt
Environment Variables
Required
DATABASE_URL=postgresql://user:password@host:port/database
RUNTIME_DATABASE_URL=postgresql://user:password@host:port/database # For connection pooling
Optional
SHADOW_DATABASE_URL=postgresql://user:password@host:port/database # For migrations
Migration Commands
# Generate Prisma client
npx prisma generate
# Create migration
npx prisma migrate dev --name migration_name
# Deploy migrations (production)
npx prisma migrate deploy
# Push schema changes (development)
npx prisma db push
# Seed database
npm run db:seed
# Open Prisma Studio
npm run db:studio
Backup & Restore
See COOLIFY_DATABASE_MIGRATION.md for detailed instructions.
Quick Backup
./scripts/backup-database.sh
Quick Restore
./scripts/restore-database.sh backups/latest
Coolify Configuration
Database Service
- Create PostgreSQL service in Coolify
- Note container name (e.g.,
postgres-CONTAINER_ID)
App Environment Variables
DATABASE_URL=postgresql://postgres:PASSWORD@postgres-CONTAINER_ID:5432/postgres
RUNTIME_DATABASE_URL=postgresql://postgres:PASSWORD@postgres-CONTAINER_ID:5432/postgres
Important: Replace CONTAINER_ID with actual container ID from Coolify.
Seed Data
Seed data comes from:
data/guests.csv- Guest listprisma/seed.ts- Seed script
Seed includes:
- Guests from CSV
- Admin user (username:
admin) - Sample tables (Table 1-5)
Connection Pooling
For production, use RUNTIME_DATABASE_URL with a connection pooler (e.g., PgBouncer):
- Direct connection: Port
5432 - Pooled connection: Port
6543(or configured port)
Security Notes
- Use strong database passwords
- Restrict database access to application only
- Use connection pooling in production
- Enable SSL for production connections
- Never commit
.envfiles with real credentials