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 community Community @relation(fields: [communityId], references: [id], onDelete: Cascade) communityId String creationDate DateTime @default(now()) } model Role { id String @id @unique @default(uuid()) name 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") } model Session { id String @id @unique @default(uuid()) owner User @relation(fields: [userId], references: [id], onDelete: Cascade) userId String token String creationDate 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? }