@titanpl/pgorm
v1.0.0
Published
🗄️ A lightweight, fluent ORM for Titan Planet - Built with t.db PostgreSQL client
Maintainers
Readme
@titanpl/pgorm
🗄️ TitanPL PostgreSQL ORM - A lightweight, fluent ORM designed specifically for the Titan Planet ecosystem.
Built on top of t.db, this extension provides a cleaner, object-oriented way to interact with your PostgreSQL database using Models, Query Builders, and Migrations.
📦 Installation
npm install @titanpl/pgorm🚀 Usage
The extension is automatically loaded by Titan and exposed globally as t.pgorm.
defining a Model
// Define a User model
const User = t.pgorm.model('users', {
name: t.pgorm.types.STRING,
email: t.pgorm.types.STRING,
age: t.pgorm.types.INTEGER,
is_active: t.pgorm.types.BOOLEAN
});
// Add validation rules (uses @titanpl/valid)
User.rules({
name: t.valid.string().min(2),
email: t.valid.string().email(),
age: t.valid.number().min(18)
});Querying
// Find active users older than 21
const users = User.where('is_active', true)
.where('age', '>', 21)
.orderBy('created_at', 'DESC')
.get();
// Find one by ID
const user = User.find(1);
// Create a new user
const newUser = User.create({
name: "Alice",
email: "[email protected]",
age: 25
});Migrations
You can use the built-in migration helper to manage schemas.
t.pgorm.migration().run('create_users_table', `
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
age INTEGER,
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
)
`);🛠️ API Reference
t.pgorm.model(tableName, schema)
Creates and returns a new Model instance.
t.pgorm.types
Constants for defining schema types: STRING, INTEGER, BOOLEAN, JSON, UUID, etc.
Model Methods
find(id): Find record by primary keywhere(col, op, val): Add WHERE clausecreate(data): Insert new recordupdate(id, data): Update recorddelete(id): Delete recordget(): Execute query and get all resultsfirst(): Get first result
License
ISC
