feat(api): upgrade zod to v4 and implement api docs and client generation

This commit is contained in:
Dominik 2025-06-20 13:23:52 +02:00
parent 98776aacb2
commit 87dc6162f4
Signed by: dominik
GPG key ID: 06A4003FC5049644
26 changed files with 4827 additions and 419 deletions

View file

@ -158,8 +158,8 @@ model Friendship {
requested_at DateTime @default(now())
accepted_at DateTime?
user1 User @relation("FriendshipUser1", fields: [user_id_1], references: [id])
user2 User @relation("FriendshipUser2", fields: [user_id_2], references: [id])
user1 User @relation("FriendshipUser1", fields: [user_id_1], references: [id], onDelete: Cascade)
user2 User @relation("FriendshipUser2", fields: [user_id_2], references: [id], onDelete: Cascade)
@@id([user_id_1, user_id_2])
@@index([user_id_2, status], name: "idx_friendships_user2_status")
@ -187,8 +187,8 @@ model GroupMember {
role group_member_role @default(MEMBER)
added_at DateTime @default(now())
group Group @relation(fields: [group_id], references: [id])
user User @relation(fields: [user_id], references: [id])
group Group @relation(fields: [group_id], references: [id], onDelete: Cascade)
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
@@id([group_id, user_id])
@@index([user_id])
@ -207,7 +207,7 @@ model BlockedSlot {
created_at DateTime @default(now())
updated_at DateTime @updatedAt
user User @relation(fields: [user_id], references: [id])
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
@@index([user_id, start_time, end_time])
@@index([user_id, is_recurring])
@ -241,8 +241,8 @@ model MeetingParticipant {
status participant_status @default(PENDING)
added_at DateTime @default(now())
meeting Meeting @relation(fields: [meeting_id], references: [id])
user User @relation(fields: [user_id], references: [id])
meeting Meeting @relation(fields: [meeting_id], references: [id], onDelete: Cascade)
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
@@id([meeting_id, user_id])
@@index([user_id, status], name: "idx_participants_user_status")
@ -259,7 +259,7 @@ model Notification {
is_read Boolean @default(false)
created_at DateTime @default(now())
user User @relation(fields: [user_id], references: [id])
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
@@index([user_id, is_read, created_at], name: "idx_notifications_user_read_time")
@@map("notifications")
@ -271,7 +271,7 @@ model UserNotificationPreference {
email_enabled Boolean @default(false)
updated_at DateTime @default(now())
user User @relation(fields: [user_id], references: [id])
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
@@id([user_id, notification_type])
@@map("user_notification_preferences")
@ -292,7 +292,7 @@ model EmailQueue {
created_at DateTime @default(now())
updated_at DateTime @updatedAt
user User @relation(fields: [user_id], references: [id])
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
@@index([status, scheduled_at], name: "idx_email_queue_pending_jobs")
@@index([user_id, created_at], name: "idx_email_queue_user_history")
@ -308,7 +308,7 @@ model CalendarExportToken {
created_at DateTime @default(now())
last_accessed_at DateTime?
user User @relation(fields: [user_id], references: [id])
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
@@index([user_id])
@@map("calendar_export_tokens")
@ -327,7 +327,7 @@ model CalendarSubscription {
created_at DateTime @default(now())
updated_at DateTime @updatedAt
user User @relation(fields: [user_id], references: [id])
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
externalEvents ExternalEvent[]
@@index([user_id, is_enabled])
@ -350,7 +350,7 @@ model ExternalEvent {
show_as_free Boolean @default(false)
last_fetched_at DateTime @default(now())
subscription CalendarSubscription @relation(fields: [subscription_id], references: [id])
subscription CalendarSubscription @relation(fields: [subscription_id], references: [id], onDelete: Cascade)
@@unique([subscription_id, ical_uid], name: "uq_external_event_sub_uid")
@@index([subscription_id, start_time, end_time])