Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
drizzle-kit
Advanced tools
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
Drizzle-kit is an npm package designed to simplify database migrations and schema management for JavaScript and TypeScript applications. It provides a set of tools to create, manage, and apply database migrations in a structured and efficient manner.
Create Migrations
This feature allows you to create new database migrations. The code sample demonstrates how to create a migration that adds a 'users' table with columns for 'id', 'name', 'email', and timestamps.
const { createMigration } = require('drizzle-kit');
createMigration('add-users-table', (migration) => {
migration.createTable('users', (table) => {
table.increments('id').primary();
table.string('name');
table.string('email').unique();
table.timestamps();
});
});
Apply Migrations
This feature allows you to apply all pending migrations to your database. The code sample shows how to apply migrations using the `applyMigrations` function.
const { applyMigrations } = require('drizzle-kit');
applyMigrations();
Rollback Migrations
This feature allows you to rollback the last applied migration. The code sample demonstrates how to rollback the most recent migration using the `rollbackMigration` function.
const { rollbackMigration } = require('drizzle-kit');
rollbackMigration();
List Migrations
This feature allows you to list all migrations, both applied and pending. The code sample shows how to list migrations using the `listMigrations` function.
const { listMigrations } = require('drizzle-kit');
listMigrations();
Knex.js is a SQL query builder for JavaScript that supports various database systems. It provides a powerful and flexible API for building and executing SQL queries, as well as managing database migrations. Compared to drizzle-kit, Knex.js offers more extensive query building capabilities but may have a steeper learning curve.
Sequelize is a promise-based Node.js ORM for Postgres, MySQL, MariaDB, SQLite, and Microsoft SQL Server. It features solid transaction support, relations, eager and lazy loading, read replication, and more. While Sequelize offers a comprehensive ORM solution, drizzle-kit focuses specifically on database migrations and schema management.
TypeORM is an ORM for TypeScript and JavaScript (ES7, ES6, ES5). It supports various databases and provides a robust set of features for managing database schemas and migrations. TypeORM is more feature-rich and supports advanced ORM functionalities, whereas drizzle-kit is more lightweight and focused on migrations.
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.
Check the full documentation on the website.
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);
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
FAQs
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
The npm package drizzle-kit receives a total of 449,089 weekly downloads. As such, drizzle-kit popularity was classified as popular.
We found that drizzle-kit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.