Open1

Edge RuntimeでRDBを使う

タナイタナイ

Prismaでスキーマ管理してクエリはDrizzle

t3-appをdrizzleで作りつつ、Prismaでスキーマ管理する?

どちらのテンプレートで作ってからもう片方を移植するのが楽かは要検討だ

schema.prisma
generator drizzle {
  provider = "drizzle-prisma-generator"
  output   = "./schema.ts"
}

datasource db {
  provider  = "postgresql"
  url       = env("DATABASE_URL")
  directUrl = env("DATABASE_URL_UNPOOLED")
}

model User {
  id            String    @id @default(dbgenerated("(gen_random_uuid())"))
  name          String?
  email         String
  emailVerified DateTime? @default(now()) @map("email_verified")
  image         String?

  accounts Account[]
  sessions Session[]
  posts    Post[]

  @@map("user")
}

model Account {
  userId            String  @map("user_id")
  type              String
  provider          String
  providerAccountId String  @map("provider_account_id")
  refresh_token     String? // @db.Text
  access_token      String? // @db.Text
  expires_at        Int?
  token_type        String?
  scope             String?
  id_token          String? // @db.Text
  session_state     String?

  user User @relation(fields: [userId], references: [id], onUpdate: Cascade, onDelete: Cascade)

  @@id([provider, providerAccountId])
  @@index([userId])
  @@map("account")
}

model Session {
  sessionToken String   @id @map("session_token")
  userId       String   @map("user_id")
  expires      DateTime
  user         User     @relation(fields: [userId], references: [id], onUpdate: Cascade, onDelete: Cascade)

  @@index([userId])
  @@map("session")
}

model VerificationToken {
  identifier String
  token      String
  expires    DateTime

  @@id([identifier, token])
  @@map("verification_token")
}

model Post {
  id          Int      @id @default(autoincrement())
  name        String
  createdById String   @map("created_by")
  createdAt   DateTime @default(now()) @map("created_at")
  updatedAt   DateTime @updatedAt @map("updated_at")

  user User @relation(fields: [createdById], references: [id], onUpdate: Cascade, onDelete: Cascade)

  @@index([createdById])
  @@index([name])
  @@map("post")
}