PlanetScale DB 하나로 수많은 프로젝트 호스팅

PlanetScale DB 하나로 수많은 프로젝트 호스팅

이미 인수된 기업의 제품을 쓰는 것을 안 좋아하기도 해서, 최근 대부분의 프로젝트 및 앞으로 프로젝트를 PlanetScale DB로 옮기려고 했다. 영속적인 기업을 만들고자 하는 철학이 마음에 들기도 했고, 장기적으로 PlanetScale을 쓰는 것을 연습해야겠다고 생각하기도 했고. 아무튼 다음은 PlanetScale DB 하나로 많은 프로젝트를 호스팅하는 방법이다.

// src/db/schema.ts
import { pgSchema, text, timestamp, uuid } from 'drizzle-orm/pg-core'

// Define a schema for the project (not Postgres's default public)
export const myProject = pgSchema('my_project')

// Create all tables under this schema
export const users = myProject.table('users', {
  id: uuid('id').defaultRandom().primaryKey(),
  name: text('name').notNull(),
  createdAt: timestamp('created_at').notNull().defaultNow(),
})

export type User = typeof users.$inferSelect
// drizzle.config.ts
import { defineConfig } from 'drizzle-kit'

export default defineConfig({
  schema: './src/db/schema.ts',
  out: './drizzle',
  dialect: 'postgresql',
  dbCredentials: {
    url: process.env.DATABASE_URL!,
  },
  // Isolate the schema with the project codename
  schemaFilter: ['my_project'],
  // Save the migration to the schema of the project codename
  migrations: {
    schema: 'my_project',
    table: '__drizzle_migrations',
  },
})
// src/db/index.ts
import { drizzle } from 'drizzle-orm/node-postgres'
import * as schema from './schema'

export const db = drizzle(process.env.DATABASE_URL!, { schema })
Backlinks (1)
cho.sh