Skip to content

Releases: rphlmr/drizzle-lab

0.2.0

04 Jul 09:51
0aca064
Compare
Choose a tag to compare

What's Changed

  • Add server-side caching for generated OG images

0.1.0

04 Jul 07:43
0aca064
Compare
Choose a tag to compare

What's Changed

  • The playground's database is now cleaned on every run (#13)

[email protected]

17 Nov 13:54
0aca064
Compare
Choose a tag to compare

What's Changed

Features

  • Increase the zoom-out distance
  • Try to parse tsconfig.json with comments (non standard)

Fixes

  • Visualizer correctly refreshes on schema changes (regression from previous release)
  • Save nodes positions with debounce (could cause a crash if too many changes were sent)

[email protected]

17 Nov 15:52
0aca064
Compare
Choose a tag to compare

@drizzle-lab/api is now Open Source!

Fork of Drizzle Kit API - Enhanced with features for schema documentation and visualization.

Important

This package is a community project based on Drizzle Kit.

I recommend using Drizzle Kit as much as possible.

Installation

npm install @drizzle-lab/api

Features

  • 🔄 Import schema from files or database
  • 📝 Document your schema with JSDoc-like syntax
  • 📸 Generate snapshot from Drizzle objects
  • 🎨 Generate SQL from schema
  • 📊 Generate TypeScript from schema
  • 🎯 Support for PostgreSQL, MySQL and SQLite

API Reference

Extensions

Document your schema with the explain function.

Works for tables and views.

import { explain } from "@drizzle-lab/api/extensions";
import { pgTable, text, jsonb } from "drizzle-orm/pg-core";

export const users = explain(
  pgTable("users", {
    id: text("id").primaryKey(),
    name: text("name").notNull(),
    metadata: jsonb("metadata").$type<{ role: string }>(),
  }), // or your table object
  {
    description: "Users table storing core user information",
    columns: {
      id: "Unique identifier for the user",
      name: "User's full name",
      metadata: "Additional user metadata stored as JSON"
    },
    jsonShapes: {
      metadata: {
        role: "string"
      }
    }
  }
);

PostgreSQL API

Import and transform PostgreSQL schemas:

import { importDrizzleConfig } from "@drizzle-lab/api/config/node";
import { importFromFiles } from "@drizzle-lab/api/pg/node";
import { 
  importFromDatabase, 
  schemaToSql, 
  snapshotToTypeScript,
  drizzleObjectsToSnapshot
} from "@drizzle-lab/api/pg";

// Import schema from config
const config = await importDrizzleConfig();
const drizzleObjects = await importFromFiles(config.schema);

// Import schema from database
const snapshot = drizzleObjectsToSnapshot(drizzleObjects, config);

// Generate SQL
const sql = schemaToSql(schema);

// Generate TypeScript
const ts = snapshotToTypeScript(snapshot, "preserve");

MySQL API

Import and transform MySQL schemas:

import { importDrizzleConfig } from "@drizzle-lab/api/config/node";
import { importFromFiles } from "@drizzle-lab/api/mysql/node";
import { 
  importFromDatabase, 
  schemaToSql, 
  snapshotToTypeScript,
  drizzleObjectsToSnapshot
} from "@drizzle-lab/api/mysql";

// Import schema from config
const config = await importDrizzleConfig();
const drizzleObjects = await importFromFiles(config.schema);

// Generate snapshot
const snapshot = drizzleObjectsToSnapshot(drizzleObjects, config);
    
// Generate SQL
const sql = schemaToSql(schema);

// Generate TypeScript
const ts = snapshotToTypeScript(snapshot, "preserve");

SQLite API

Import and transform SQLite schemas:

import { importDrizzleConfig } from "@drizzle-lab/api/config/node";
import { importFromFiles } from "@drizzle-lab/api/sqlite/node";
import { 
  importFromDatabase, 
  schemaToSql, 
  snapshotToTypeScript,
  drizzleObjectsToSnapshot
} from "@drizzle-lab/api/sqlite";

// Import schema from config
const config = await importDrizzleConfig();
const drizzleObjects = await importFromFiles(config.schema);

// Generate snapshot
const snapshot = drizzleObjectsToSnapshot(drizzleObjects, config);

// Generate SQL
const sql = schemaToSql(schema);

// Generate TypeScript
const ts = snapshotToTypeScript(snapshot, "preserve");

(Optional) Extended Config

export default defineConfig({
  // ...
  lab: {
    projectId: "drizzle-lab", // optional, defaults to "drizzle-lab". Used to identify the project in json output
  },
});

Environment Variables

They are all optional.

Variable Description Default
DRIZZLE_LAB_DEBUG Enable debug logging false
DRIZZLE_LAB_CWD Working directory ""
DRIZZLE_LAB_CONFIG_PATH Path to config file drizzle.config.ts
DRIZZLE_LAB_SAVE_DIR Directory to save output ./drizzle
DRIZZLE_LAB_PROJECT_ID Project ID to identify the project in json output drizzle-lab
TS_CONFIG_PATH Path to tsconfig.json ./tsconfig.json

License

MIT

[email protected]

12 Nov 09:23
0aca064
Compare
Choose a tag to compare
[email protected] Pre-release
Pre-release

Drizzle Lab CLI

Commands

npx drizzle-lab visualizer

Usage:
  Drizzle Lab CLI visualizer [flags]

Flags:
  --config string      Path to drizzle config file
  --debug              Enable log output (default: false)
  --save-dir string    Directory to save visualizer data (default: ".drizzle-lab")
  --project-id string  A unique identifier for the current visualized project. It is used as filename to save the visualizer state.

Global flags:
  -h, --help      help for visualizer
  -v, --version   version for Drizzle Lab CLI