generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URI") } // model Helloworld { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt hello String @default("") } model Account { id String @id @default(cuid()) userId String @map("user_id") type String provider String providerAccountId String @map("provider_account_id") refresh_token String? access_token String? expires_at Int? token_type String? scope String? id_token String? session_state String? oauth_token_secret String? oauth_token String? user User @relation(fields: [userId], references: [id], onDelete: Cascade) PartyUser PartyUser? @relation(fields: [partyUserId], references: [id]) partyUserId String? @@unique([provider, providerAccountId]) } model Session { id String @id @default(cuid()) sessionToken String @unique @map("session_token") userId String @map("user_id") expires DateTime user User @relation(fields: [userId], references: [id], onDelete: Cascade) PartyUser PartyUser? @relation(fields: [partyUserId], references: [id]) partyUserId String? } model User { id String @id @default(cuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String? username String? @unique email String @unique emailVerified DateTime? password String? image String? bucketImage String? admin Boolean @default(false) accounts Account[] sessions Session[] info Json? } model VerificationToken { id Int @id @default(autoincrement()) identifier String token String @unique expires DateTime @@unique([identifier, token]) } model Student { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // email String @unique metadata Json @default("{}") } // ---------------------------------------------------------------- // frontend/src/_mock/_user.ts // ---------------------------------------------------------------- // REQ0044/near_by_page model Member { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // email String @unique name String? Event Event[] eventId Int? age Int? rank String @default("Beginner") verified String @default("NOT_VERIFIED") hobbies String[] @default([]) distance String @default("10km") location_area String @default("Sai Kung") greetings String @default("Hi, I am") gender String @default("not disclosed") tall_cm Int? weight_kg Int? occupation String @default("not disclosed") language String[] @default([]) education String[] @default([]) self_introduction String @default("") music String[] @default([]) pets String[] @default([]) character String[] @default([]) // avatar String @default("") sex String @default("") } model Order { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // title String? order_time DateTime @default(now()) last_payment_date DateTime? status String @default("pending") Event Event[] } // REQ0042/event-detail model Event { id Int @id @default(autoincrement()) eventDate DateTime title String joinMembers Json[] // Assuming Member model exists price Float currency String duration_m Int ageBottom Int ageTop Int location String avatar String // Assuming avatar is stored as a file path or URL Order Order[] Member Member? @relation(fields: [memberId], references: [id]) memberId Int? } // cms_backend // mapped to IProductReview model ProductReview { id Int @id @default(autoincrement()) name String rating Float comment String helpful Float avatarUrl String postedAt DateTime @default(now()) // Assuming IDateValue maps to DateTime isPurchased Boolean attachments String[] ProductItem ProductItem[] // createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } // mapped to IProductFilters model ProductFilters { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // rating String gender String[] category String colors String[] priceRange Int[] } // mapped to IProductTableFilters model ProductTableFilters { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // stock String[] publish String[] } // mapped to IProductItem model ProductItem { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // available Int category String code String colors String[] coverUrl String description String gender String[] images String[] inventoryType String name String newLabel Json price Float priceSale Float? publish String quantity Int ratings Json[] reviews ProductReview[] saleLabel Json sizes String[] sku String subDescription String tags String[] taxes Float totalRatings Float totalReviews Int totalSold Int } model MailSender { // Define fields for MailSender here // Example: id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // email String name String avatarUrl String? // // SendMail Mail[] @relation("mail_from") // ReceiveMail Mail[] @relation("mail_to") } model MailLabel { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // type String name String color String unreadCount Int? } model MailAttachment { // Define fields for MailAttachment here // Example: id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // filename String url String size Int // Mail Mail? @relation(fields: [mailId], references: [id]) // mailId Int? } model Mail { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // folder String labelIds String[] subject String isUnread Boolean isImportant Boolean message String isStarred Boolean // // from MailSender @relation("mail_from", fields: [mailFromId], references: [id]) // mailFromId Int // // to MailSender[] @relation("mail_to") // // attachments MailAttachment[] } // model OrderHistory { // id Int @id @default(autoincrement()) // createdAt DateTime @default(now()) // updatedAt DateTime @updatedAt // // // orderTime DateTime @default(now()) // paymentTime DateTime // deliveryTime DateTime // completionTime DateTime // timeline Json[] // OrderItem OrderItem? @relation(fields: [orderItemId], references: [id]) // orderItemId Int? // } // model OrderShippingAddress { // id Int @id @default(autoincrement()) // createdAt DateTime @default(now()) // updatedAt DateTime @updatedAt // // // fullAddress String // phoneNumber String // OrderItem OrderItem? @relation(fields: [orderItemId], references: [id]) // orderItemId Int? // } // model OrderPayment { // id Int @id @default(autoincrement()) // createdAt DateTime @default(now()) // updatedAt DateTime @updatedAt // // // cardType String // cardNumber String // OrderItem OrderItem? @relation(fields: [orderItemId], references: [id]) // orderItemId Int? // } // model OrderDelivery { // id Int @id @default(autoincrement()) // createdAt DateTime @default(now()) // updatedAt DateTime @updatedAt // // // shipBy String // speedy String // trackingNumber String // OrderItem OrderItem? @relation(fields: [orderItemId], references: [id]) // orderItemId Int? // } // model OrderCustomer { // id Int @id @default(autoincrement()) // createdAt DateTime @default(now()) // updatedAt DateTime @updatedAt // // // name String // email String // avatarUrl String // ipAddress String // OrderItem OrderItem? @relation(fields: [orderItemId], references: [id]) // orderItemId Int? // } // model OrderProductItem { // id Int @id @default(autoincrement()) // createdAt DateTime @default(now()) // updatedAt DateTime @updatedAt // // // sku String // name String // price Float // coverUrl String // quantity Float // OrderItem OrderItem? @relation(fields: [orderItemId], references: [id]) // orderItemId Int? // } model OrderItem { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // taxes Float status String shipping Float discount Float subtotal Float orderNumber String totalAmount Float totalQuantity Float history Json payment Json customer Json delivery Json items Json[] shippingAddress Json // OrderProductItem OrderProductItem[] // OrderHistory OrderHistory[] // OrderDelivery OrderDelivery[] // OrderCustomer OrderCustomer[] // OrderPayment OrderPayment[] // OrderShippingAddress OrderShippingAddress[] } // src/types/tour.ts model TourGuide { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String avatarUrl String phoneNumber String TourItem TourItem? @relation(fields: [tourItemId], references: [id]) tourItemId Int? TourFilters TourFilters? @relation(fields: [tourFiltersId], references: [id]) tourFiltersId Int? } model TourBooker { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String guests Float avatarUrl String TourItem TourItem? @relation(fields: [tourItemId], references: [id]) tourItemId Int? } model TourItem { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String price Float tags String[] content String publish String images String[] durations String priceSale Float totalViews Float services String[] destination String ratingNumber Float bookers TourBooker[] tourGuides TourGuide[] available Json } model TourFilters { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // services String[] destination String[] tourGuides TourGuide[] endDate DateTime startDate DateTime } // src/types/user.ts model UserProfileCover { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String role String coverUrl String avatarUrl String } model UserProfile { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // role String quote String email String school String country String company String totalFollowers Float totalFollowing Float // socialLinks: ISocialLink } model UserProfileFollower { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String country String avatarUrl String } model UserProfileGallery { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // title String imageUrl String postedAt DateTime } model UserProfileFriend { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String role String avatarUrl String } model UserProfilePost { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // media String message String personLikes Json[] comments Json[] } model UserCard { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String role String coverUrl String avatarUrl String totalPosts Float totalFollowers Float totalFollowing Float } // `UserItem` obsoleted, use `UserMeta` instead model UserItem { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String city String role String email String state String status String address String country String zipCode String company String avatarUrl String phoneNumber String isVerified Boolean // username String password String // isAdmin Boolean @default(false) } model UserMeta { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String city String role String email String state String status String address String country String zipCode String company String avatarUrl String phoneNumber String isVerified Boolean // username String password String // isAdmin Boolean @default(false) } model UserAccountBillingHistory { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // price Float invoiceNumber String } // src/types/blog.ts model PostFilters { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // publish String } model PostHero { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // title String coverUrl String author Json? } model PostComment { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String message String avatarUrl String postedAt DateTime users Json[] replyComment Json[] PostItem PostItem? @relation(fields: [postItemId], references: [id]) postItemId Int? } model PostItem { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // title String tags String[] publish String content String coverUrl String metaTitle String totalViews Float totalShares Float description String totalComments Float totalFavorites Float metaKeywords String[] metaDescription String comments PostComment[] author Json favoritePerson Json[] } // src/types/calendar.ts model CalendarFilters { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // colors String[] startDate DateTime endDate DateTime } model CalendarRange { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // start String? end String? } model CalendarEvent { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // color String title String allDay Boolean description String end String start String } // src/types/chat.ts model ChatAttachment { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String size Int type String path String preview String ChatMessage ChatMessage? @relation(fields: [chatMessageId], references: [id]) chatMessageId Int? } model ChatMessage { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // body String senderId String contentType String attachments ChatAttachment[] ChatConversation ChatConversation? @relation(fields: [chatConversationId], references: [id]) chatConversationId Int? } model ChatParticipant { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String role String email String address String avatarUrl String phoneNumber String lastActivity DateTime status String ChatConversation ChatConversation? @relation(fields: [chatConversationId], references: [id]) chatConversationId Int? } model ChatConversation { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // type String unreadCount Int messages ChatMessage[] participants ChatParticipant[] } model ChatConversations { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // allIds String[] byId Json } // src/types/checkout.ts model CheckoutItem { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String size String price Float coverUrl String colors String[] quantity Float available Float subtotal Float CheckoutState CheckoutState? @relation(fields: [checkoutStateId], references: [id]) checkoutStateId Int? } model CheckoutDeliveryOption { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // label String value Float description String } model CheckoutPaymentOption { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // value String label String description String } model CheckoutCardOption { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // value String label String } model CheckoutState { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // total Float subtotal Float discount Float shipping Float totalItems Float items CheckoutItem[] billing AddressItem[] } // common.ts model PaymentCard { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt cardType String primary Boolean? cardNumber String } model AddressItem { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt name String company String? primary Boolean? fullAddress String phoneNumber String? addressType String? CheckoutState CheckoutState[] checkoutStateId Int? // InvoiceTo Invoice[] @relation("invoice_to") // InvoiceFrom Invoice[] @relation("invoice_from") } model SocialLink { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt twitter String facebook String linkedin String instagram String } // file.ts model FileFilters { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt name String type String[] endDate DateTime startDate DateTime } model FileShared { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt name String email String avatarUrl String permission String FolderManager FolderManager? @relation(fields: [folderManagerId], references: [id]) folderManagerId Int? FileManager FileManager? @relation(fields: [fileManagerId], references: [id]) fileManagerId Int? } model FolderManager { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt url String name String size Int type String tags String[] totalFiles Int? isFavorited Boolean modifiedAt DateTime shared FileShared[] } model FileManager { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt url String name String size Int type String tags String[] isFavorited Boolean modifiedAt DateTime shared FileShared[] } model FileStore { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt modifiedAt DateTime @updatedAt // name String path String preview String size Float type String // content Bytes @db.ByteA } // invoice.ts model InvoiceTableFilters { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String status String service String[] endDate DateTime startDate DateTime } model InvoiceItem { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // taxes Float status String discount Float shipping Float subtotal Float totalAmount Float items Json[] invoiceNumber String invoiceFrom Json invoiceTo Json sent Float dueDate DateTime @default(now()) createDate DateTime @default(now()) } // model Invoice { // id Int @id @default(autoincrement()) // createdAt DateTime @default(now()) // updatedAt DateTime @updatedAt // // // sent Int // taxes Float // status String // subtotal Float // discount Float // shipping Float // totalAmount Float // dueDate DateTime // invoiceNumber String // items InvoiceItem[] // createDate DateTime // invoiceTo AddressItem[] @relation("invoice_to") // invoiceFrom AddressItem[] @relation("invoice_from") // } // job.ts model JobFilters { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // roles String[] experience String benefits String[] locations String[] employmentTypes String[] } model JobCandidate { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String role String avatarUrl String JobItem JobItem[] } model JobCompany { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String logo String phoneNumber String fullAddress String JobItem JobItem[] } model JobSalary { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // type String price Float negotiable Boolean JobItem JobItem[] } model JobItem { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // role String title String content String publish String skills String[] totalViews Float experience String benefits String[] locations String[] employmentTypes String[] workingSchedule String[] expiredDate DateTime? @db.Timestamp(3) salary JobSalary[] company JobCompany[] candidates JobCandidate[] } // kanban.ts model KanbanColumn { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String Kanban Kanban? @relation(fields: [kanbanId], references: [id]) kanbanId Int? } model KanbanComment { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String message String avatarUrl String messageType String KanbanTask KanbanTask? @relation(fields: [kanbanTaskId], references: [id]) kanbanTaskId Int? } model KanbanAssignee { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String role String email String status String address String avatarUrl String phoneNumber String lastActivity DateTime KanbanTask KanbanTask? @relation(fields: [kanbanTaskId], references: [id]) kanbanTaskId Int? } model Reporter { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String avatarUrl String KanbanTask KanbanTask? @relation(fields: [kanbanTaskId], references: [id]) kanbanTaskId Int? } model KanbanTask { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String status String priority String labels String[] description String? attachments String[] comments KanbanComment[] assignee KanbanAssignee[] due DateTime[] reporter Reporter[] Kanban Kanban? @relation(fields: [kanbanId], references: [id]) kanbanId Int? } model Kanban { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // columns KanbanColumn[] tasks KanbanTask[] } // mapped to IEventReview model EventReview { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // name String rating Float comment String helpful Float avatarUrl String postedAt DateTime @default(now()) // Assuming IDateValue maps to DateTime isPurchased Boolean attachments String[] // EventItem EventItem? @relation(fields: [eventItemId], references: [id]) eventItemId String? } // NOTE: need to consider with Event // mapped to IEventItem // a.k.a. PartyEvent party-event model EventItem { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // available Int @default(99) category String code String @default("") colors String[] coverUrl String description String gender String[] images String[] inventoryType String @default("") name String @default("") newLabel Json @default("{}") price Float @default(999.9) priceSale Float? @default(111.1) publish String @default("") quantity Int @default(99) ratings Json[] saleLabel Json @default("{}") sizes String[] @default([""]) sku String @default("") subDescription String @default("") tags String[] @default([""]) taxes Float @default(5.0) totalRatings Float @default(5.0) totalReviews Int @default(10) totalSold Int @default(10) // ageBottom Float @default(-1) ageTop Float @default(-1) avatar String[] @default([""]) currency String @default("HKD") capacity Int @default(10) duration_m Float @default(180) endDate String? @default("") eventDate DateTime @default(now()) isFeatured Boolean @default(false) joinMembers Json[] @default([]) location String @default("HK") organizer String @default("") registrationDeadline String @default("") requirements String @default("") schedule String @default("") speakers String[] @default([]) sponsors String[] @default([]) startDate String? @default("") status String? @default("") title String @default("") // reviews EventReview[] } model AppLog { id String @id @default(uuid()) timestamp DateTime @default(now()) // level Int? @default(1) message String? @default("") // module String? userId String? metadata Json? @@index([timestamp]) @@index([level]) @@index([module]) } model AccessLog { id String @id @default(uuid()) timestamp DateTime @default(now()) // userId String? @default("") message String? @default("") // metadata Json? @@index([timestamp]) @@index([userId]) } model PartyOrderItem { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // taxes Float status String shipping Float discount Float subtotal Float orderNumber String totalAmount Float totalQuantity Float history Json payment Json customer Json delivery Json items Json[] shippingAddress Json // OrderProductItem OrderProductItem[] // OrderHistory OrderHistory[] // OrderDelivery OrderDelivery[] // OrderCustomer OrderCustomer[] // OrderPayment OrderPayment[] // OrderShippingAddress OrderShippingAddress[] } model PartyUser { id String @id @default(cuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // username String? @unique password String? // name String? email String @unique emailVerified DateTime? avatarUrl String? bucketImage String? admin Boolean @default(false) accounts Account[] sessions Session[] info Json? phoneNumber String @default("") company String @default("") status String @default("pending") role String @default("") isVerified Boolean @default(false) // country String @default("") state String @default("") city String @default("") address String @default("") zipCode String @default("") }