Skip to content

emergente-labs/effect-sql-model

Repository files navigation

@emergente-labs/effect-sql-model

Compile Effect Schema / @effect/sql/Model definitions into Drizzle ORM tables.

Define your model once and generate:

  • Drizzle table definitions
  • variant-aware model fields (select, insert, update, json)
  • schema-driven column metadata and table config

Installation

npm install @emergente-labs/effect-sql-model effect drizzle-orm @effect/sql

Quick Start

import { Effect, Schema as S } from "effect";
import { Model } from "@effect/sql";
import { schemaDrizzle } from "@emergente-labs/effect-sql-model";
import { Config as PgConfig } from "@emergente-labs/effect-sql-model/pg";

const { field, compileModel } = schemaDrizzle(PgConfig);

class User extends Model.Class<User>("User")({
  id: S.UUID.pipe(field((col) => col.primaryKey())),
  email: S.String,
  age: S.Int,
}) {}

const table = Effect.runSync(compileModel(User));

Features

  • AST-based compiler from Effect Schema to Drizzle columns
  • PostgreSQL adapter included (/pg)
  • adapter extension points for additional dialects
  • field-level and table-level annotations
  • circular-reference aware model compilation
  • type-level tests for inferred column builders

License

MIT

About

Effect Schema to Drizzle ORM table compiler

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors