### Example PostgreSQL Local Connection URL Source: https://orm.drizzle.team/docs/guides/postgresql-local-setup An example of a database URL for a locally running PostgreSQL container. Ensure your username, password, host, port, and database name match your setup. ```text postgres://postgres:mypassword@localhost:5432/postgres ``` -------------------------------- ### Bun SQLite Connection Example Source: https://orm.drizzle.team/docs/connect-bun-sqlite Demonstrates how to establish a connection to a SQLite database using Bun and Drizzle ORM. Ensure you have Bun installed and the necessary Drizzle packages. ```typescript import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; const db = drizzle(new Database("sqlite.db")); console.log(db); ``` -------------------------------- ### Install Drizzle ORM and @libsql/client Source: https://orm.drizzle.team/docs/get-started-sqlite Install Drizzle ORM and the @libsql/client package for Node.js environments. Also install drizzle-kit for development. ```bash npm i drizzle-orm @libsql/client npm i -D drizzle-kit ``` ```bash yarn add drizzle-orm @libsql/client yarn add -D drizzle-kit ``` ```bash pnpm add drizzle-orm @libsql/client pnpm add -D drizzle-kit ``` ```bash bun add drizzle-orm @libsql/client bun add -D drizzle-kit ``` -------------------------------- ### Extended Drizzle Migrate Example Source: https://orm.drizzle.team/docs/drizzle-kit-migrate A comprehensive example showcasing various Drizzle Kit migrate options and configurations. ```bash drizzle-kit migrate --config=drizzle.config.ts --dialect=pg --out=./migrations --verbose ``` -------------------------------- ### Install Neon Serverless Driver Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-vercel-edge-functions Install the `@neondatabase/serverless` driver using your preferred package manager. ```bash npm i @neondatabase/serverless ``` ```bash yarn add @neondatabase/serverless ``` ```bash pnpm add @neondatabase/serverless ``` ```bash bun add @neondatabase/serverless ``` -------------------------------- ### Start Development Server Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-vercel-edge-functions Run the `next dev` command to start your local development server and test the API route. ```bash npx next dev ``` -------------------------------- ### Example SQL Migration Source: https://orm.drizzle.team/docs/drizzle-kit-generate This is an example of a generated SQL migration file for creating a 'users' table. ```sql CREATE TABLE "users" ( "id" SERIAL PRIMARY KEY, "name" TEXT, "email" TEXT UNIQUE ); ``` -------------------------------- ### Example SQL Migration File Source: https://orm.drizzle.team/docs/migrations This is an example of a generated SQL migration file that creates a 'users' table with specified columns and constraints. ```sql -- drizzle/20242409125510_premium_mister_fear/migration.sql CREATE TABLE "users" ( "id" SERIAL PRIMARY KEY, "name" TEXT, "email" TEXT UNIQUE ); ``` -------------------------------- ### Start MySQL Server Source: https://orm.drizzle.team/docs/guides/mysql-local-setup Command to start the MySQL server process. This command assumes the MySQL binaries are in your system's PATH. ```bash mysqld_safe --user=mysql & ``` -------------------------------- ### PlanetScale MySQL Connection String Example Source: https://orm.drizzle.team/docs/connect-planetscale This example shows a typical connection string format for PlanetScale MySQL. Ensure you replace placeholders with your actual credentials. ```javascript const connectionString = "mysql://user:password@host:port/database"; ``` -------------------------------- ### Install Drizzle ORM and Drizzle Kit (Beta) Source: https://orm.drizzle.team/docs/upgrade-v1 Use these commands to install the beta versions of Drizzle ORM and Drizzle Kit. This is necessary for using the release candidate. ```bash npm i drizzle-orm@beta npm i -D drizzle-kit@beta ``` ```bash yarn add drizzle-orm@beta yarn add -D drizzle-kit@beta ``` ```bash pnpm add drizzle-orm@beta pnpm add -D drizzle-kit@beta ``` ```bash bun add drizzle-orm@beta bun add -D drizzle-kit@beta ``` -------------------------------- ### Drizzle Kit Configuration Example Source: https://orm.drizzle.team/docs/drizzle-kit-migrate Example configuration file for Drizzle Kit, specifying the schema and database connection details. ```typescript import type { Config } from "drizzle-kit"; export default { schema: "./schema/*", out: "./migrations", driver: "better-sqlite3", dbCredentials: { url: "./sqlite.db", }, } satisfies Config; ``` -------------------------------- ### Basic Query Example Source: https://orm.drizzle.team/docs/get-started-cockroach Illustrates how to perform a basic SELECT query to fetch data from the 'users' table. This example retrieves all users. ```typescript import { db, users } from "."; import { eq } from "drizzle-orm/pg-core"; const allUsers = await db.query.users.findMany(); const user = await db.query.users.findFirst({ where: eq(users.id, 1), }); ``` -------------------------------- ### Install Vercel CLI Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-vercel-edge-functions Install the Vercel CLI globally using your preferred package manager. ```bash npm i -g vercel ``` ```bash yarn add -g vercel ``` ```bash pnpm add -g vercel ``` ```bash bun add -g vercel ``` -------------------------------- ### Install Babel Plugin for SQL Imports Source: https://orm.drizzle.team/docs/connect-expo-sqlite Install the `babel-plugin-inline-import` to bundle SQL migration files as strings directly into your app bundle. ```bash npm install babel-plugin-inline-import ``` -------------------------------- ### Example Query Result Source: https://orm.drizzle.team/docs/relations-v2 An example of the expected output structure when querying posts with their authors. ```json [{ id: 10, content: "My first post!", author: { id: 1, name: "Alex" } }] ``` -------------------------------- ### Drizzle Kit Configuration Example Source: https://orm.drizzle.team/docs/drizzle-kit-pull An example configuration file for Drizzle Kit, specifying the database connection URL, schema file path, and output directory for generated files. ```typescript import type { Config } from '@drizzle-team/drizzle-kit'; export default { schema: './schema.ts', out: './drizzle', driver: 'pg', dbCredentials: { connectionString: process.env.DATABASE_URL, }, } satisfies Config; ``` -------------------------------- ### Example Generated Migration SQL Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-vercel-edge-functions This is an example of a SQL file generated by Drizzle Kit for creating a 'users_table'. ```sql CREATE TABLE `users_table` ( `id` integer PRIMARY KEY NOT NULL, `name` text NOT NULL, `age` text NOT NULL, `email` text NOT NULL ); --> statement-breakpoint CREATE UNIQUE INDEX `users_table_email_unique` ON `users_table` (`email`); ``` -------------------------------- ### Install @vercel/postgres Driver Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-vercel-edge-functions Install the @vercel/postgres driver using npm, yarn, pnpm, or bun. ```bash npm i @vercel/postgres ``` ```bash yarn add @vercel/postgres ``` ```bash pnpm add @vercel/postgres ``` ```bash bun add @vercel/postgres ``` -------------------------------- ### Insert Data Example Source: https://orm.drizzle.team/docs/get-started-cockroach Demonstrates how to insert new records into the 'users' table. This example shows inserting a single user. ```typescript import { db, users } from "."; await db.insert(users).values({ name: "John Doe", email: "john.doe@example.com", }); ``` -------------------------------- ### Install MySQL Driver and Drizzle MySQL Source: https://orm.drizzle.team/docs/get-started-mysql Before connecting, install the necessary packages for MySQL interaction with Drizzle ORM. ```bash npm install mysql2 npm install -D drizzle-orm/mysql-core drizzle-orm/mysql-proxy ``` -------------------------------- ### Install PlanetScale Database Driver Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-vercel-edge-functions Install the PlanetScale database driver for your project using npm, yarn, pnpm, or bun. ```bash npm i @planetscale/database ``` ```bash yarn add @planetscale/database ``` ```bash pnpm add @planetscale/database ``` ```bash bun add @planetscale/database ``` -------------------------------- ### Install Drizzle Kit Source: https://orm.drizzle.team/docs/kit-overview Install Drizzle Kit as a development dependency using npm, yarn, pnpm, or bun. ```bash npm i -D drizzle-kit ``` ```bash yarn add -D drizzle-kit ``` ```bash pnpm add -D drizzle-kit ``` ```bash bun add -D drizzle-kit ``` -------------------------------- ### Install Drizzle ORM and PlanetScale Package Source: https://orm.drizzle.team/docs/get-started/planetscale-existing Install the Drizzle ORM, PlanetScale database driver, dotenv for environment variables, and Drizzle Kit for development tools. ```bash npm i drizzle-orm @planetscale/database dotenv npm i -D drizzle-kit tsx ``` ```bash yarn add drizzle-orm @planetscale/database dotenv yarn add -D drizzle-kit tsx ``` ```bash pnpm add drizzle-orm @planetscale/database dotenv pnpm add -D drizzle-kit tsx ``` ```bash bun add drizzle-orm @planetscale/database dotenv bun add -D drizzle-kit tsx ``` -------------------------------- ### Install Drizzle Packages Source: https://orm.drizzle.team/docs/connect-bun-sqlite Install Drizzle ORM and Drizzle Kit using npm, yarn, pnpm, or bun. ```bash npm i drizzle-orm npm i -D drizzle-kit ``` ```bash yarn add drizzle-orm yarn add -D drizzle-kit ``` ```bash pnpm add drizzle-orm pnpm add -D drizzle-kit ``` ```bash bun add drizzle-orm bun add -D drizzle-kit ``` -------------------------------- ### Install Drizzle ORM and Drizzle Kit (Beta) Source: https://orm.drizzle.team/docs/drizzle-kit-pull Install the beta versions of Drizzle ORM and Drizzle Kit using npm, yarn, pnpm, or bun. These are required for features available in version 1.0.0-beta.2 and higher. ```bash npm i drizzle-orm@beta npm i drizzle-kit@beta -D ``` ```bash yarn add drizzle-orm@beta yarn add drizzle-kit@beta -D ``` ```bash pnpm add drizzle-orm@beta pnpm add drizzle-kit@beta -D ``` ```bash bun add drizzle-orm@beta bun add drizzle-kit@beta -D ``` -------------------------------- ### Install Drizzle ORM and OP-SQLite Packages Source: https://orm.drizzle.team/docs/get-started/op-sqlite-new Install the necessary Drizzle ORM and OP-SQLite packages for your project. ```bash npm i drizzle-orm @op-engineering/op-sqlite npm i -D drizzle-kit ``` ```bash yarn add drizzle-orm @op-engineering/op-sqlite yarn add -D drizzle-kit ``` ```bash pnpm add drizzle-orm @op-engineering/op-sqlite pnpm add -D drizzle-kit ``` ```bash bun add drizzle-orm @op-engineering/op-sqlite bun add -D drizzle-kit ``` -------------------------------- ### Install Drizzle ORM and Drizzle Kit (bun) Source: https://orm.drizzle.team/docs/relations-v1-v2 Installs the beta versions of Drizzle ORM and Drizzle Kit using bun. This command is for projects using bun as their JavaScript runtime and package manager. ```bash bun add drizzle-orm@beta bun add drizzle-kit@beta -D ``` -------------------------------- ### Example Generated Migration SQL Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-turso This is an example of a SQL file generated by Drizzle Kit, showing table creation and foreign key constraints. ```sql CREATE TABLE `posts` ( `id` integer PRIMARY KEY NOT NULL, `title` text NOT NULL, `content` text NOT NULL, `user_id` integer NOT NULL, `created_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL, `updated_at` integer, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade ); --> statement-breakpoint CREATE TABLE `users` ( `id` integer PRIMARY KEY NOT NULL, `name` text NOT NULL, `age` integer NOT NULL, `email` text NOT NULL ); --> statement-breakpoint CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`); ``` -------------------------------- ### Install Neon Serverless Driver Packages Source: https://orm.drizzle.team/docs/connect-planetscale-postgres Install Drizzle ORM and the Neon serverless driver packages. This is recommended for serverless environments. ```bash npm i drizzle-orm @neondatabase/serverless -D drizzle-kit ``` ```bash yarn add drizzle-orm @neondatabase/serverless -D drizzle-kit ``` ```bash pnpm add drizzle-orm @neondatabase/serverless -D drizzle-kit ``` ```bash bun add drizzle-orm @neondatabase/serverless -D drizzle-kit ``` -------------------------------- ### Install @libsql/client package Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-turso Install the @libsql/client package, which is the driver for interacting with Turso databases. This package is required for Drizzle ORM to connect to Turso. ```bash npm i @libsql/client ``` ```bash yarn add @libsql/client ``` ```bash pnpm add @libsql/client ``` ```bash bun add @libsql/client ``` -------------------------------- ### Install Drizzle ORM and Drizzle Kit (npm) Source: https://orm.drizzle.team/docs/relations-v1-v2 Installs the beta versions of Drizzle ORM and Drizzle Kit using npm. This is a prerequisite for using the latest features and changes in Drizzle ORM v2. ```bash npm i drizzle-orm@beta npm i drizzle-kit@beta -D ``` -------------------------------- ### Install Drizzle ORM and PostgreSQL Packages Source: https://orm.drizzle.team/docs/connect-planetscale-postgres Install the necessary Drizzle ORM and PostgreSQL packages for your project using npm, yarn, pnpm, or bun. ```bash npm i drizzle-orm pg -D drizzle-kit @types/pg ``` ```bash yarn add drizzle-orm pg -D drizzle-kit @types/pg ``` ```bash pnpm add drizzle-orm pg -D drizzle-kit @types/pg ``` ```bash bun add drizzle-orm pg -D drizzle-kit @types/pg ``` -------------------------------- ### Install Drizzle ORM and PlanetScale Driver Source: https://orm.drizzle.team/docs/connect-planetscale Install the required packages using npm, yarn, pnpm, or bun. These commands add drizzle-orm, @planetscale/database, and drizzle-kit as development dependencies. ```bash npm i drizzle-orm @planetscale/database -D drizzle-kit ``` ```bash yarn add drizzle-orm @planetscale/database -D drizzle-kit ``` ```bash pnpm add drizzle-orm @planetscale/database -D drizzle-kit ``` ```bash bun add drizzle-orm @planetscale/database -D drizzle-kit ``` -------------------------------- ### Install Drizzle ORM and MySQL2 Packages Source: https://orm.drizzle.team/docs/get-started-mysql Install Drizzle ORM and the MySQL2 driver for your project. Use the `-D` flag for development dependencies like Drizzle Kit. ```bash npm i drizzle-orm mysql2 npm i -D drizzle-kit ``` ```bash yarn add drizzle-orm mysql2 yarn add -D drizzle-kit ``` ```bash pnpm add drizzle-orm mysql2 pnpm add -D drizzle-kit ``` ```bash bun add drizzle-orm mysql2 bun add -D drizzle-kit ``` -------------------------------- ### Expo SQLite Setup with Drizzle ORM Source: https://orm.drizzle.team/docs/connect-expo-sqlite This snippet shows the basic setup for connecting Drizzle ORM to an Expo SQLite database. Ensure you have the necessary Expo packages installed. ```typescript import * as SQLite from "expo-sqlite"; import { drizzle } from "drizzle-orm/expo-sqlite"; const db = drizzle(SQLite.openDatabase("db.sqlite")); // Use the db object to interact with your database // Example: const allUsers = await db.select().from(users); ``` -------------------------------- ### Example Custom SQL Migration for Seeding Users Source: https://orm.drizzle.team/docs/kit-custom-migrations This is an example of a custom SQL migration file generated by Drizzle Kit. It contains `INSERT` statements to seed user data into the 'users' table. ```sql -- ./drizzle/0001_seed-users.sql INSERT INTO "users" ("name") VALUES('Dan'); INSERT INTO "users" ("name") VALUES('Andrew'); INSERT INTO "users" ("name") VALUES('Dandrew'); ``` -------------------------------- ### Install Drizzle ORM and Drizzle Kit (pnpm) Source: https://orm.drizzle.team/docs/relations-v1-v2 Installs the beta versions of Drizzle ORM and Drizzle Kit using pnpm. This command is suitable for projects that utilize pnpm for package management. ```bash pnpm add drizzle-orm@beta pnpm add drizzle-kit@beta -D ``` -------------------------------- ### Install Drizzle ORM and Drizzle Kit (yarn) Source: https://orm.drizzle.team/docs/relations-v1-v2 Installs the beta versions of Drizzle ORM and Drizzle Kit using yarn. This command is used for projects managed with yarn as their package manager. ```bash yarn add drizzle-orm@beta yarn add drizzle-kit@beta -D ``` -------------------------------- ### Placeholder Usage in SQLite Source: https://orm.drizzle.team/docs/perf-queries Example of using placeholders with SQLite, showcasing `get` and `all` methods for fetching single or multiple rows. ```typescript import { sql } from "drizzle-orm"; const p1 = db .select() .from(customers) .where(eq(customers.id, sql.placeholder('id'))) .prepare() p1.get({ id: 10 }) // SELECT * FROM customers WHERE id = 10 p1.get({ id: 12 }) // SELECT * FROM customers WHERE id = 12 const p2 = db .select() .from(customers) .where(sql`lower(${customers.name}) like ${sql.placeholder('name')}`) .prepare(); p2.all({ name: '%an%' }) // SELECT * FROM customers WHERE name ilike '%an%' ``` -------------------------------- ### Launch Drizzle Studio Source: https://orm.drizzle.team/drizzle-studio/overview Start Drizzle Studio using the drizzle-kit studio command with your package manager. ```bash npx drizzle-kit studio ``` ```bash yarn drizzle-kit studio ``` ```bash pnpm drizzle-kit studio ``` ```bash bunx drizzle-kit studio ``` -------------------------------- ### Connect to MySQL with Drizzle ORM Source: https://orm.drizzle.team/docs/get-started/mysql-new Example of connecting to a MySQL database using Drizzle ORM. Ensure you have the necessary driver installed. ```typescript import { drizzle } from "drizzle-orm/mysql2"; import mysql from "mysql2/promise"; const pool = mysql.createPool({ host: "localhost", user: "root", password: "password", database: "database", }); export const db = drizzle(pool); ``` -------------------------------- ### Drizzle ORM MySQL Connection Source: https://orm.drizzle.team/docs/guides/mysql-local-setup Example of how to establish a connection to your local MySQL database using Drizzle ORM. Ensure you have the 'mysql2' package installed. ```typescript import { drizzle } from "drizzle-orm/mysql2"; import mysql from "mysql2/promise"; const pool = mysql.createPool({ host: "localhost", user: "your_user", password: "your_password", database: "your_database", }); export const db = drizzle(pool); ``` -------------------------------- ### Prepared Statement for SingleStore Source: https://orm.drizzle.team/docs/perf-queries Example of preparing a statement for SingleStore. This snippet is incomplete as it only shows the initialization of the 'db' object. ```sql const db = drizzle(...); ``` -------------------------------- ### Include Custom Field with SQL Function Source: https://orm.drizzle.team/docs/rqb-v2 Add a custom field by applying a SQL function to an existing field. This example uses `lower()` to get a lowercase version of the user's name. ```typescript import { sql } from 'drizzle-orm'; await db.query.users.findMany({ extras: { loweredName: sql`lower(${users.name})`, }, }) ``` -------------------------------- ### Install Drizzle ORM and better-sqlite3 Source: https://orm.drizzle.team/docs/get-started-sqlite Install Drizzle ORM and the better-sqlite3 package for local SQLite databases. Also install drizzle-kit and types for better-sqlite3. ```bash npm i drizzle-orm better-sqlite3 npm i -D drizzle-kit @types/better-sqlite3 ``` ```bash yarn add drizzle-orm better-sqlite3 yarn add -D drizzle-kit @types/better-sqlite3 ``` ```bash pnpm add drizzle-orm better-sqlite3 pnpm add -D drizzle-kit @types/better-sqlite3 ``` ```bash bun add drizzle-orm better-sqlite3 bun add -D drizzle-kit @types/better-sqlite3 ``` -------------------------------- ### Install Drizzle ORM and postgres.js Packages Source: https://orm.drizzle.team/docs/get-started-postgresql Install Drizzle ORM and the postgres.js driver using your preferred package manager. Also, install Drizzle Kit for development. ```bash npm i drizzle-orm postgres npm i -D drizzle-kit ``` ```bash yarn add drizzle-orm postgres yarn add -D drizzle-kit ``` ```bash pnpm add drizzle-orm postgres pnpm add -D drizzle-kit ``` ```bash bun add drizzle-orm postgres bun add -D drizzle-kit ``` -------------------------------- ### Install Drizzle ORM and PostgreSQL Packages Source: https://orm.drizzle.team/docs/get-started-postgresql Install Drizzle ORM and the PostgreSQL driver using your preferred package manager. Also, install Drizzle Kit for development. ```bash npm i drizzle-orm pg npm i -D drizzle-kit @types/pg ``` ```bash yarn add drizzle-orm pg yarn add -D drizzle-kit @types/pg ``` ```bash pnpm add drizzle-orm pg pnpm add -D drizzle-kit @types/pg ``` ```bash bun add drizzle-orm pg bun add -D drizzle-kit @types/pg ``` -------------------------------- ### Install Drizzle ORM and PostgreSQL Driver Source: https://orm.drizzle.team/docs/get-started/planetscale-postgres-existing Install Drizzle ORM, the pg driver for PostgreSQL, and dotenv for environment variables. Also, install Drizzle Kit, tsx, and @types/pg as development dependencies. ```bash npm i drizzle-orm pg dotenv npm i -D drizzle-kit tsx @types/pg ``` ```bash yarn add drizzle-orm pg dotenv yarn add -D drizzle-kit tsx @types/pg ``` ```bash pnpm add drizzle-orm pg dotenv pnpm add -D drizzle-kit tsx @types/pg ``` ```bash bun add drizzle-orm pg dotenv bun add -D drizzle-kit tsx @types/pg ``` -------------------------------- ### Drizzle Kit Configuration: Extended Example Source: https://orm.drizzle.team/kit-docs/overview An extended Drizzle Kit configuration with options for output directory, driver, database credentials, filtering, and migration settings. ```typescript import { defineConfig } from "drizzle-kit"; export default defineConfig({ out: "./drizzle", dialect: "postgresql", schema: "./src/schema.ts", driver: "pglite", dbCredentials: { url: "./database/", }, extensionsFilters: ["postgis"], schemaFilter: "public", tablesFilter: "*", introspect: { casing: "camel", }, migrations: { prefix: "timestamp", table: "__drizzle_migrations__", schema: "public", }, breakpoints: true, strict: true, verbose: true, }); ``` -------------------------------- ### Initialize Neon HTTP Driver and Query Source: https://orm.drizzle.team/docs/connect-planetscale-postgres Use this for direct HTTP connections to your database. Ensure `DATABASE_URL` is set in your environment variables. Required for PlanetScale Postgres connections. ```typescript import { neon, neonConfig } from '@neondatabase/serverless'; import { drizzle } from 'drizzle-orm/neon-http'; // Required for PlanetScale Postgres connections neonConfig.fetchEndpoint = (host) => `https://${host}/sql`; const sql = neon(process.env.DATABASE_URL!); const db = drizzle({ client: sql }); const result = await db.execute('select 1'); ``` -------------------------------- ### Schema Definition Example Source: https://orm.drizzle.team/docs/drizzle-kit-migrate Example of a Drizzle ORM schema definition for a 'users' table. ```typescript import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core"; export const users = sqliteTable("users", { id: integer("id").primaryKey(), name: text("name"), email: text("email").notNull().unique(), }); ``` -------------------------------- ### Install Drizzle ORM and MySQL Driver Source: https://orm.drizzle.team/docs/get-started/mysql-new Install the necessary Drizzle ORM packages and the MySQL driver using npm, yarn, pnpm, or bun. Also install Drizzle Kit and tsx for development. ```bash npm i drizzle-orm mysql2 dotenv npm i -D drizzle-kit tsx ``` ```bash yarn add drizzle-orm mysql2 dotenv yarn add -D drizzle-kit tsx ``` ```bash pnpm add drizzle-orm mysql2 dotenv pnpm add -D drizzle-kit tsx ``` ```bash bun add drizzle-orm mysql2 dotenv bun add -D drizzle-kit tsx ``` -------------------------------- ### Specifying Drizzle Kit Config Path (Bun) Source: https://orm.drizzle.team/docs/kit-overview Example of using `bunx` to specify a custom Drizzle Kit configuration file for different environments. ```bash bunx drizzle-kit push --config=drizzle-dev.drizzle.config bunx drizzle-kit push --config=drizzle-prod.drizzle.config ``` -------------------------------- ### Generated Drizzle Schema Example Source: https://orm.drizzle.team/docs/get-started/planetscale-existing An example of a Drizzle schema file generated by introspection for a 'users_table'. ```typescript // table schema generated by introspection import { mysqlTable, mysqlSchema, AnyMySqlColumn, primaryKey, unique, serial, varchar, int, } from 'drizzle-orm/mysql-core'; import { sql } from 'drizzle-orm'; export const usersTable = mysqlTable( 'users_table', { id: serial().notNull(), name: varchar({ length: 255 }).notNull(), age: int().notNull(), email: varchar({ length: 255 }).notNull(), }, (table) => [ primaryKey({ columns: [table.id], name: 'users_table_id' }), unique('id').on(table.id), unique('users_table_email_unique').on(table.email), ], ); ``` -------------------------------- ### Initialize MySQL Database Source: https://orm.drizzle.team/docs/guides/mysql-local-setup Command to initialize a new MySQL data directory. Ensure you have MySQL installed and configured in your PATH. ```bash mysqld --initialize --user=mysql ``` -------------------------------- ### Turso CLI Commands Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-turso Commands for signing up, logging in, creating databases, and managing authentication tokens with the Turso CLI. ```bash turso auth signup ``` ```bash turso auth login ``` ```bash turso db create drizzle-turso-db ``` ```bash turso db show drizzle-turso-db ``` ```bash turso db tokens create drizzle-turso-db ``` -------------------------------- ### Delete Data Example Source: https://orm.drizzle.team/docs/get-started-cockroach Illustrates how to delete records from the 'users' table. This example deletes a user by their ID. ```typescript import { db, users } from "."; import { eq } from "drizzle-orm/pg-core"; await db.delete(users).where(eq(users.id, 1)); ``` -------------------------------- ### Launch Drizzle Studio with Custom Port and Verbose Logging Source: https://orm.drizzle.team/drizzle-studio/overview Launch Drizzle Studio on a custom port (e.g., 3000) and enable verbose logging for extended SQL statements. ```bash npx drizzle-kit studio --port 3000 --verbose ``` ```bash yarn drizzle-kit studio --port 3000 --verbose ``` ```bash pnpm drizzle-kit studio --port 3000 --verbose ``` ```bash bunx drizzle-kit studio --port 3000 --verbose ``` -------------------------------- ### Install Drizzle ORM and MySQL Driver Source: https://orm.drizzle.team/docs/get-started-mysql Install the necessary Drizzle ORM packages and the MySQL driver for your project. ```bash npm install drizzle-orm mysql2 npm install -D drizzle-kit @types/mysql2 ``` -------------------------------- ### Querying Data with Drizzle Kit Source: https://orm.drizzle.team/docs/kit-overview Demonstrates how to query data using Drizzle Kit. This example selects all users from the 'users' table. ```typescript import { db } from './db'; import { users } from './schema'; const allUsers = await db.query.users.findMany(); ``` -------------------------------- ### Drizzle Kit Push with Verbose Logging, URL, Schema Path, Out Directory, Drop, and Force Options Source: https://orm.drizzle.team/docs/drizzle-kit-push Apply schema changes from a specified path to a database using a direct URL, with verbose logging, and use both --drop and --force options for a forceful schema reset, outputting migrations to a defined directory with drizzle-kit push. Use --drop and --force with caution. ```bash drizzle-kit push --verbose --url="postgres://user:password@host:port/database" --schema=./src/schema/**/*.ts --out=./drizzle/migrations --drop --force ``` -------------------------------- ### Initialize Gel and Drizzle Source: https://orm.drizzle.team/docs/get-started-gel This snippet shows how to initialize Gel and Drizzle for database operations. Ensure you have the necessary imports. ```javascript import { drizzle } from "drizzle-orm/gel-sqlite"; import { Database } from "@gel-sqlite/database"; const db = drizzle(new Database()); ``` -------------------------------- ### Prepared Statement for SQLite Source: https://orm.drizzle.team/docs/perf-queries Illustrates the creation and execution of a prepared statement for SQLite. The statement is prepared and then executed using the `.all()` method. ```sql const db = drizzle(...); const prepared = db.select().from(customers).prepare(); const res1 = prepared.all(); const res2 = prepared.all(); const res3 = prepared.all(); ``` -------------------------------- ### Migrate with Development Configuration Source: https://orm.drizzle.team/docs/drizzle-kit-up Use this command to run migrations using a specific development configuration file. ```bash npx drizzle-kit migrate --config=drizzle-dev.config.ts ``` ```bash yarn drizzle-kit migrate --config=drizzle-dev.config.ts ``` ```bash pnpm drizzle-kit migrate --config=drizzle-dev.config.ts ``` ```bash bunx drizzle-kit migrate --config=drizzle-dev.config.ts ``` -------------------------------- ### Basic Project File Structure Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-turso Illustrates a typical project layout with Drizzle ORM, including schema definitions and database connection files. ```tree πŸ“¦ β”œ πŸ“‚ src β”‚ β”œ πŸ“‚ db β”‚ β”‚ β”œ πŸ“œ index.ts β”‚ β”‚ β”” πŸ“œ schema.ts β”œ πŸ“‚ migrations β”‚ β”œ πŸ“‚ meta β”‚ β”‚ β”œ πŸ“œ _journal.json β”‚ β”‚ β”” πŸ“œ 0000_snapshot.json β”‚ β”” πŸ“œ 0000_watery_spencer_smythe.sql β”œ πŸ“œ .env β”œ πŸ“œ drizzle.config.ts β”œ πŸ“œ package.json β”” πŸ“œ tsconfig.json ``` -------------------------------- ### Drizzle Kit Push with URL, Schema Path, Out Directory, Drop, and Force Options Source: https://orm.drizzle.team/docs/drizzle-kit-push Apply schema changes from a specified path to a database using a direct URL, and use both --drop and --force options for a forceful schema reset, outputting migrations to a defined directory with drizzle-kit push. Use --drop and --force with caution. ```bash drizzle-kit push --url="postgres://user:password@host:port/database" --schema=./src/schema/**/*.ts --out=./drizzle/migrations --drop --force ``` -------------------------------- ### Drizzle Config File Example Source: https://orm.drizzle.team/docs/drizzle-kit-generate Configure the database dialect and schema path for drizzle-kit using a `drizzle.config.ts` file. ```typescript import { defineConfig } from "drizzle-kit"; export default defineConfig({ dialect: "postgresql", schema: "./src/schema.ts", }); ``` -------------------------------- ### Install dotenv package Source: https://orm.drizzle.team/docs/tutorials/drizzle-with-turso Install the dotenv package to manage environment variables. This is recommended for handling sensitive information like database credentials. ```bash npm i dotenv ``` ```bash yarn add dotenv ``` ```bash pnpm add dotenv ``` ```bash bun add dotenv ``` -------------------------------- ### Install Drizzle ORM and PostgreSQL Driver Source: https://orm.drizzle.team/docs/get-started-postgresql Install Drizzle ORM and the node-postgres driver for PostgreSQL. This is the first step to connect Drizzle to your database. ```bash npm install drizzle-orm pg npm install -D @types/pg ``` -------------------------------- ### CockroachDB CHECK Constraint Example Source: https://orm.drizzle.team/docs/indexes-constraints Provides an example of a CHECK constraint for the 'age' column in CockroachDB, enforcing that the age must be greater than 21. ```typescript import { sql } from "drizzle-orm"; import { check, int4, cockroachTable, text, uuid } from "drizzle-orm/cockroach-core"; export const users = cockroachTable( "users", { id: uuid().defaultRandom().primaryKey(), username: text().notNull(), age: int4(), }, (table) => [ check("age_check1", sql`${table.age} > 21`), ] ); ``` ```sql CREATE TABLE "users" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "username" text NOT NULL, "age" int4, CONSTRAINT "age_check1" CHECK ("users"."age" > 21) ); ``` -------------------------------- ### Drizzle Kit Push with Database Configuration via CLI Source: https://orm.drizzle.team/docs/drizzle-kit-push Configure database connection and schema details directly on the command line. This is useful for CI/CD environments. Options include `dialect`, `schema`, `url`, `tablesFilter`, and `extensionsFilters`. ```bash npx drizzle-kit push dialect=postgresql schema=src/schema.ts url=postgresql://user:password@host:port/dbname ``` ```bash npx drizzle-kit push dialect=postgresql schema=src/schema.ts driver=pglite url=database/ ``` ```bash npx drizzle-kit push dialect=postgresql schema=src/schema.ts --tablesFilter=β€˜user*’ --extensionsFilters=postgis url=postgresql://user:password@host:port/dbname ``` ```bash yarn drizzle-kit push dialect=postgresql schema=src/schema.ts url=postgresql://user:password@host:port/dbname ``` ```bash yarn drizzle-kit push dialect=postgresql schema=src/schema.ts driver=pglite url=database/ ``` ```bash yarn drizzle-kit push dialect=postgresql schema=src/schema.ts --tablesFilter=β€˜user*’ --extensionsFilters=postgis url=postgresql://user:password@host:port/dbname ``` ```bash pnpm drizzle-kit push dialect=postgresql schema=src/schema.ts url=postgresql://user:password@host:port/dbname ``` ```bash pnpm drizzle-kit push dialect=postgresql schema=src/schema.ts driver=pglite url=database/ ``` ```bash pnpm drizzle-kit push dialect=postgresql schema=src/schema.ts --tablesFilter=β€˜user*’ --extensionsFilters=postgis url=postgresql://user:password@host:port/dbname ``` ```bash bunx drizzle-kit push dialect=postgresql schema=src/schema.ts url=postgresql://user:password@host:port/dbname ``` ```bash bunx drizzle-kit push dialect=postgresql schema=src/schema.ts driver=pglite url=database/ ``` ```bash bunx drizzle-kit push dialect=postgresql schema=src/schema.ts --tablesFilter=β€˜user*’ --extensionsFilters=postgis url=postgresql://user:password@host:port/dbname ``` -------------------------------- ### Update Data Example Source: https://orm.drizzle.team/docs/get-started-cockroach Shows how to update existing records in the 'users' table. This example updates a user's email based on their ID. ```typescript import { db, users } from "."; import { eq } from "drizzle-orm/pg-core"; await db.update(users).set({ email: "john.doe.updated@example.com", }).where(eq(users.id, 1)); ``` -------------------------------- ### Drizzle-Kit Migrate with CLI Options Source: https://orm.drizzle.team/docs/drizzle-kit-migrate Execute the `drizzle-kit migrate` command using CLI options to specify the dialect and database connection URL. ```bash npx drizzle-kit migrate --dialect=postgresql --url=postgresql://user:password@host:port/dbname ``` -------------------------------- ### Initialize Neon WebSockets Driver and Query Source: https://orm.drizzle.team/docs/connect-planetscale-postgres Use this for WebSocket connections, recommended for connection pooling via PgBouncer (port 6432). Ensure `DATABASE_URL` is set. `neonConfig.pipelineConnect` should be `false` for PlanetScale. ```typescript import { Pool, neonConfig } from '@neondatabase/serverless'; import { drizzle } from 'drizzle-orm/neon-serverless'; // Required for PlanetScale Postgres connections neonConfig.pipelineConnect = false; neonConfig.wsProxy = (host, port) => `${host}/v2?address=${host}:${port}`; const pool = new Pool({ connectionString: process.env.DATABASE_URL }); const db = drizzle({ client: pool }); const result = await db.execute('select 1'); ```