DEV Community

Alex Spinov
Alex Spinov

Posted on

Drizzle Studio Has a Free API That Most Developers Dont Know About

Drizzle Studio is a built-in database GUI that comes free with Drizzle ORM. Browse, edit, and query your database from the browser.

Launch

npx drizzle-kit studio
# Opens browser at https://local.drizzle.studio
Enter fullscreen mode Exit fullscreen mode

Drizzle ORM Setup

// drizzle.config.ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  schema: "./src/db/schema.ts",
  out: "./drizzle",
  dialect: "postgresql",
  dbCredentials: { url: process.env.DATABASE_URL }
});
Enter fullscreen mode Exit fullscreen mode

Schema

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

export const users = pgTable("users", {
  id: serial("id").primaryKey(),
  name: text("name").notNull(),
  email: text("email").unique().notNull(),
  age: integer("age"),
  active: boolean("active").default(true),
  createdAt: timestamp("created_at").defaultNow()
});

export const posts = pgTable("posts", {
  id: serial("id").primaryKey(),
  title: text("title").notNull(),
  content: text("content"),
  authorId: integer("author_id").references(() => users.id)
});
Enter fullscreen mode Exit fullscreen mode

Queries

import { db } from "./db";
import { users, posts } from "./schema";
import { eq, gt, like } from "drizzle-orm";

const allUsers = await db.select().from(users);
const activeUsers = await db.select().from(users).where(eq(users.active, true));
const withPosts = await db.select().from(users).leftJoin(posts, eq(users.id, posts.authorId));
Enter fullscreen mode Exit fullscreen mode

Key Features

  • Free database GUI
  • Browse/edit/filter data
  • Run SQL queries
  • View relations
  • Works with Postgres, MySQL, SQLite

Need to scrape or monitor web data at scale? Check out my web scraping actors on Apify or email spinov001@gmail.com for custom solutions.

Top comments (0)