generator client { provider = "prisma-client" output = "../src/generated/prisma" engineType = "client" } datasource db { provider = "postgresql" } model Community { id String @id @unique @default(uuid()) name String @unique description String? creationDate DateTime @default(now()) User User @relation(name: "OwnerCommunityToUser", fields: [ownerId], references: [id]) ownerId String members User[] @relation(name: "MembersCommunitiesToUsers") channels Channel[] roles Role[] invites Invite[] } model Channel { id String @id @unique @default(uuid()) name String description String? community Community @relation(fields: [communityId], references: [id], onDelete: Cascade) communityId String creationDate DateTime @default(now()) messages Message[] } model Role { id String @id @unique @default(uuid()) name String description String? community Community @relation(fields: [communityId], references: [id], onDelete: Cascade) communityId String users User[] @relation(name: "UsersRolesToUsers") permissions String[] creationDate DateTime @default(now()) } model User { id String @id @unique @default(uuid()) username String @unique email String? @unique passwordHash String? description String? admin Boolean @default(false) registerDate DateTime @default(now()) lastLogin DateTime? Session Session[] ownedInvites Invite[] ownedCommunities Community[] @relation(name: "OwnerCommunityToUser") communities Community[] @relation(name: "MembersCommunitiesToUsers") roles Role[] @relation(name: "UsersRolesToUsers") messages Message[] } model Session { id String @id @unique @default(uuid()) name String? userAgent String? owner User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String cookie String storageSecret String? creationDate DateTime @default(now()) refreshDate DateTime @default(now()) } model Invite { id String @id @unique @default(uuid()) Community Community @relation(fields: [communityId], references: [id], onDelete: Cascade) communityId String User User @relation(fields: [creatorId], references: [id], onDelete: Cascade) creatorId String totalInvites Int @default(0) remainingInvites Int @default(0) creationDate DateTime @default(now()) expirationDate DateTime? } model Message { id String @id @unique @default(uuid()) text String iv String? editHistory String[] @default([]) edited Boolean @default(false) owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade) ownerId String channel Channel @relation(fields: [channelId], references: [id], onDelete: Cascade) channelId String creationDate DateTime @default(now()) }