Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
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 274,676 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 4 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.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.