feat: Configure database with Prisma and MySQL spatial support (Task 22)

- Set up MySQL 8.0+ with spatial data support (POINT SRID 4326)
- Created Prisma schema with all models (User, Report, Event, etc.)
- Added Clerk authentication support (clerk_id field)
- Configured spatial indexes on location fields for performance
- Created database migrations and applied to MySQL
- Built spatial query utilities for geographical operations
- Added database connection singleton and health checks
- Created comprehensive documentation and test scripts

Requirements: 1.1, 2.1, 3.2, 4.1
This commit is contained in:
2025-11-16 18:46:00 +00:00
parent 82a365f357
commit fc2fff5cb1
11 changed files with 1032 additions and 5 deletions

View File

@@ -21,11 +21,13 @@ model User {
notificationEmail Boolean? @default(true) @map("notification_email")
notificationInApp Boolean? @default(true) @map("notification_in_app")
areasOfInterest Json? @map("areas_of_interest")
clerkId String? @unique(map: "clerk_id") @map("clerk_id") @db.VarChar(255)
eventRegistrations EventRegistration[]
organizedEvents Event[] @relation("EventOrganizer")
reports Report[]
verifications Verification[]
@@index([clerkId], map: "idx_clerk_id")
@@index([email], map: "idx_email")
@@index([username], map: "idx_username")
@@map("users")