🙄

【tRPC】NextJs & tRPC 【#7 tRPC Database Setup】

に公開

【#7 tRPC Database Setup】

YouTube: https://youtu.be/Ve1fvYz8fo0
https://youtu.be/Ve1fvYz8fo0

今回は「Neon」と「Drizzle」を使用して、
アプリでデータベースを使用できるように実装を進めていきます。

https://neon.tech/

https://orm.drizzle.team/docs/get-started/neon-new

npm i drizzle-orm @neondatabase/serverless dotenv --legacy-peer-deps
npm i -D drizzle-kit tsx --legacy-peer-deps
.env.local
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_bGVu......................
CLERK_SECRET_KEY=sk_test_vd.............................

DATABASE_URL=postgresql://neondb_owne..............................
src/db/index.ts
import { drizzle } from 'drizzle-orm/neon-http'

export const db = drizzle(process.env.DATABASE_URL!)
src/db/schema.ts
import { pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core'

export const posts = pgTable('posts', {
  id: uuid('id').primaryKey().defaultRandom(),
  title: text('title').notNull(),
  userId: text('user_id').notNull(),
  createdAt: timestamp('created_at').defaultNow().notNull(),
  updatedAt: timestamp('updated_at').defaultNow().notNull(),
})
drizzle.config.ts
import dotenv from 'dotenv'
import { defineConfig } from 'drizzle-kit'

dotenv.config({ path: '.env.local' })

export default defineConfig({
  out: './drizzle',
  schema: './src/db/schema.ts',
  dialect: 'postgresql',
  dbCredentials: {
    url: process.env.DATABASE_URL!,
  },
})

ここまでできましたら、
以下のコマンドを実行して、
データベースに反映します。

npx drizzle-kit push

Discussion