// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model Organization { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid name String slug String @unique @default(dbgenerated("gen_random_uuid()")) projects Project[] users User[] createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt clients Client[] @@map("organizations") } model Project { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid name String slug String @unique @default(dbgenerated("gen_random_uuid()")) organization_id String @db.Uuid organization Organization @relation(fields: [organization_id], references: [id]) events Event[] profiles Profile[] clients Client[] createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt reports Report[] dashboards Dashboard[] @@map("projects") } model User { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid name String email String password String organization_id String @db.Uuid organization Organization @relation(fields: [organization_id], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt @@map("users") } model Event { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid name String properties Json project_id String @db.Uuid project Project @relation(fields: [project_id], references: [id]) profile_id String? @db.Uuid profile Profile? @relation(fields: [profile_id], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt @@map("events") } model Profile { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid external_id String? first_name String? last_name String? email String? avatar String? properties Json project_id String @db.Uuid project Project @relation(fields: [project_id], references: [id]) events Event[] createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt @@map("profiles") } model Client { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid name String secret String project_id String @db.Uuid project Project @relation(fields: [project_id], references: [id]) organization_id String @db.Uuid organization Organization @relation(fields: [organization_id], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt @@map("clients") } enum Interval { hour day month } enum ChartType { linear bar pie metric area } model Dashboard { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid name String slug String @unique @default(dbgenerated("gen_random_uuid()")) project_id String @db.Uuid project Project @relation(fields: [project_id], references: [id]) reports Report[] createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt @@map("dashboards") } model Report { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid name String interval Interval range Int chart_type ChartType breakdowns Json events Json project_id String @db.Uuid project Project @relation(fields: [project_id], references: [id]) dashboard_id String @db.Uuid dashboard Dashboard @relation(fields: [dashboard_id], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt @@map("reports") }