supastarter for Nuxtsupastarter for NuxtDatabase
Overview
Schema
You can find the schema of your database in the schema.prisma file in the packages/database/prisma directory. This file is used by Prisma to generate the database schema and the client.
supastarter also includes Drizzle ORM schemas in packages/database/drizzle/schema/ as an alternative ORM option, supporting PostgreSQL, SQLite, and MySQL.
Here is a preview of what the schema of your supastarter project looks like:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
output = "./generated"
}
generator zod {
provider = "prisma-zod-generator"
}
model User {
id String @id @default(cuid())
name String
email String
emailVerified Boolean
image String?
createdAt DateTime
updatedAt DateTime
username String? @unique
role String?
banned Boolean?
banReason String?
banExpires DateTime?
onboardingComplete Boolean @default(false)
paymentsCustomerId String?
locale String?
displayUsername String?
twoFactorEnabled Boolean?
lastActiveOrganizationId String?
sessions Session[]
accounts Account[]
passkeys Passkey[]
invitations Invitation[]
purchases Purchase[]
members Member[]
twofactors TwoFactor[]
@@map("user")
}
model Session {
id String @id
expiresAt DateTime
token String @unique
createdAt DateTime
updatedAt DateTime
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@map("session")
}
model Account {
id String @id @default(cuid())
accountId String
providerId String
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
accessToken String?
refreshToken String?
password String?
@@map("account")
}
model Organization {
id String @id @default(cuid())
name String
slug String? @unique
logo String?
createdAt DateTime
metadata String?
paymentsCustomerId String?
members Member[]
invitations Invitation[]
purchases Purchase[]
@@map("organization")
}
model Member {
id String @id @default(cuid())
organizationId String
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
role String
createdAt DateTime
@@unique([organizationId, userId])
@@map("member")
}
model Invitation {
id String @id @default(cuid())
organizationId String
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
email String
role String?
status String
expiresAt DateTime
inviterId String
user User @relation(fields: [inviterId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
@@map("invitation")
}
enum PurchaseType {
SUBSCRIPTION
ONE_TIME
}
model Purchase {
id String @id @default(cuid())
customerId String?
subscriptionId String? @unique
priceId String?
type PurchaseType
status String?
organizationId String?
organization Organization? @relation(fields: [organizationId], references: [id], onDelete: Cascade)
userId String?
user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("purchase")
}