Drizzle SQLite
Install
sh
pnpm add drizzle-orm @libsql/client dotenv
sh
pnpm add -D drizzle-kit
Directory Structure
.
├── db
│ ├── index.ts
│ └── schema.ts
├── drizzle
│ └── migrations
│ ├── ***.sql
│ └── ***
├── drizzle.config.ts
├── local.db
└── package.json
db/index.ts
ts
import { drizzle } from 'drizzle-orm/libsql'
import { createClient } from '@libsql/client'
import dotenv from 'dotenv'
dotenv.config()
const client = createClient({
url: process.env.DB_FILE_NAME!,
})
const db = drizzle(client)
export default db
db/schema.ts
ts
import { randomUUID } from 'crypto'
import { sql } from 'drizzle-orm'
import { sqliteTable, text } from 'drizzle-orm/sqlite-core'
export const users = sqliteTable('users', {
id: text('id', { length: 36 })
.primaryKey()
.$defaultFn(() => randomUUID()),
name: text().notNull(),
email: text().notNull().unique(),
password: text().notNull(),
createdAt: text('created_at').notNull().default(sql`CURRENT_TIMESTAMP`),
updatedAt: text('updated_at')
.notNull()
.default(sql`(CURRENT_TIMESTAMP)`)
.$onUpdate(() => sql`(CURRENT_TIMESTAMP)`),
})
drizzle.config.ts
ts
import 'dotenv/config'
import { defineConfig } from 'drizzle-kit'
export default defineConfig({
out: './drizzle/migrations',
schema: './db/schema.ts',
dialect: 'sqlite',
dbCredentials: {
url: process.env.DB_FILE_NAME!,
},
})
push
sh
pnpm drizzle-kit push
generate
sh
pnpm drizzle-kit generate