Y7000\张扬阳 8e6614928e 记录初始化状态 2 tygodni temu
..
README.md 8e6614928e 记录初始化状态 2 tygodni temu
api.d.mts 8e6614928e 记录初始化状态 2 tygodni temu
api.d.ts 8e6614928e 记录初始化状态 2 tygodni temu
api.js 8e6614928e 记录初始化状态 2 tygodni temu
api.mjs 8e6614928e 记录初始化状态 2 tygodni temu
bin.cjs 8e6614928e 记录初始化状态 2 tygodni temu
index.d.mts 8e6614928e 记录初始化状态 2 tygodni temu
index.d.ts 8e6614928e 记录初始化状态 2 tygodni temu
index.js 8e6614928e 记录初始化状态 2 tygodni temu
index.mjs 8e6614928e 记录初始化状态 2 tygodni temu
package.json 8e6614928e 记录初始化状态 2 tygodni temu
utils.js 8e6614928e 记录初始化状态 2 tygodni temu
utils.mjs 8e6614928e 记录初始化状态 2 tygodni temu

README.md

Drizzle Kit

Drizzle Kit is a CLI migrator tool for Drizzle ORM. It is probably the one and only tool that lets you completely automatically generate SQL migrations and covers ~95% of the common cases like deletions and renames by prompting user input. https://github.com/drizzle-team/drizzle-kit-mirror - is a mirror repository for issues.

Documentation

Check the full documentation on the website.

How it works

Drizzle Kit traverses a schema module and generates a snapshot to compare with the previous version, if there is one. Based on the difference, it will generate all needed SQL migrations. If there are any cases that can't be resolved automatically, such as renames, it will prompt the user for input.

For example, for this schema module:

// src/db/schema.ts

import { integer, pgTable, serial, text, varchar } from "drizzle-orm/pg-core";

const users = pgTable("users", {
    id: serial("id").primaryKey(),
    fullName: varchar("full_name", { length: 256 }),
  }, (table) => ({
    nameIdx: index("name_idx", table.fullName),
  })
);

export const authOtp = pgTable("auth_otp", {
  id: serial("id").primaryKey(),
  phone: varchar("phone", { length: 256 }),
  userId: integer("user_id").references(() => users.id),
});

It will generate:

CREATE TABLE IF NOT EXISTS auth_otp (
 "id" SERIAL PRIMARY KEY,
 "phone" character varying(256),
 "user_id" INT
);

CREATE TABLE IF NOT EXISTS users (
 "id" SERIAL PRIMARY KEY,
 "full_name" character varying(256)
);

DO $$ BEGIN
 ALTER TABLE auth_otp ADD CONSTRAINT auth_otp_user_id_fkey FOREIGN KEY ("user_id") REFERENCES users(id);
EXCEPTION
 WHEN duplicate_object THEN null;
END $$;

CREATE INDEX IF NOT EXISTS users_full_name_index ON users (full_name);

Installation & configuration

npm install -D drizzle-kit

Running with CLI options:

// package.json
{
 "scripts": {
  "generate": "drizzle-kit generate --out migrations-folder --schema src/db/schema.ts"
 }
}
npm run generate