Documentation
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")
}

On this page