Skip to content

Repository files navigation

@itboom/drizzle-utils 🚀

@itboom/drizzle-utils is a utility library for working with Drizzle ORM in a type-safe and ergonomic way.
It includes createPgEnum() — a simple helper to safely generate PostgreSQL enums from string enums or string arrays.

⚠️ Does not support numeric enums for safety reasons.


Table of Contents

  1. Features ✨
  2. Installation 📦
  3. Usage 🔧
  4. Full Schema Example 🏗️
  5. API Reference 📚
  6. License 📄
  7. Contributing 🤝
  8. Author 👤

Features ✨

  • ✅ Safe string-only enum extraction
  • 🧠 Clear runtime validation of enum values
  • 📦 Tiny footprint with zero dependencies
  • ⚡ Compatible with any pgTable() column definition

Installation 📦

Bun

bun add @itboom/drizzle-utils

npm

npm install @itboom/drizzle-utils

Usage 🔧

From a string enum

import{createPgEnum}from"@itboom/drizzle-utils/pg";enumUserRole{ADMIN="admin",MODERATOR="moderator",USER="user",}constuserRole=createPgEnum("user_role",UserRole);pgTable("user",{role: userRole().default(UserRole.USER).notNull(),});

From a string array

import{createPgEnum}from"@itboom/drizzle-utils/pg";conststatus=createPgEnum("listing_status",["DRAFT","ACTIVE","ARCHIVED"]);pgTable("listing",{status: status().notNull(),});

Full Schema Example 🏗️

import{boolean,integer,pgTable,timestamp,uuid,varchar,}from"drizzle-orm/pg-core";import{createPgEnum}from"@itboom/drizzle-utils/pg";enumUserRole{ADMIN="admin",MODERATOR="moderator",USER="user",}constuserRole=createPgEnum("user_role",UserRole);exportconstuser=pgTable("user",{id: uuid().defaultRandom().primaryKey(),role: userRole().default(UserRole.USER).notNull(),email: varchar({length: 255}).notNull().unique(),name: varchar({length: 255}),createdAt: timestamp({mode: "date"}).defaultNow(),});

API Reference 📚

createPgEnum(name, values)

Creates a reusable PostgreSQL enum column for Drizzle.

  • name — the enum name in the database
  • values — either a string enum or an array of string values

Returns a column factory function usable in pgTable().


License 📄

This project is licensed under the MIT License. See the LICENSE file for details.


Contributing 🤝

Contributions are welcome!
Please open an issue or submit a PR to extend features or improve typing.


Author 👤

Created by Bohdan Kulinchenko
Founder of itboom.dev
GitHub: @ITBoomDev


Happy typing with @itboom/drizzle-utils! ✨

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages