Skip to content

Instantly share code, notes, and snippets.

@IIvexII
Last active September 17, 2024 22:07
Show Gist options
  • Save IIvexII/f4a8eedfd05e5327f36c904bf69199d8 to your computer and use it in GitHub Desktop.
Save IIvexII/f4a8eedfd05e5327f36c904bf69199d8 to your computer and use it in GitHub Desktop.
Setup Drizzle on nextjs project
# required
--------------------------
pnpm add drizzle-orm postgres dotenv
pnpm add -D drizzle-kit
--------------------------
npx drizzle-kit generate
npx drizzle-kit migrate
--------------------------
import { drizzle } from "drizzle-orm/postgres-js";
import { migrate } from "drizzle-orm/postgres-js/migrator";
import postgres from "postgres";
import dotenv from "dotenv";
dotenv.config();
// for migrations
const migrationClient = postgres(process.env.DATABASE_URL as string, { max: 1 });
migrate(drizzle(migrationClient), "./src/drizzle/migrations");
// for query purposes
const queryClient = postgres(process.env.DATABASE_URL as string);
export const db = drizzle(queryClient);
import { defineConfig } from "drizzle-kit";
export default defineConfig({
schema: "./src/drizzle/schema.ts",
out: "./src/drizzle/migrations",
dialect: "postgresql",
dbCredentials: {
url: process.env.DATABASE_URL as string,
},
verbose: true,
strict: true,
});
import { pgTable, uuid, varchar } from "drizzle-orm/pg-core";
export const userTable = pgTable("user", {
id: uuid("id").primaryKey().defaultRandom(),
name: varchar("name", {length: 255}).notNull()
});
DATABASE_URL="postgresql://<username>:<password>@localhost:5432/<db>"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment