A lightweight set of helper functions for Postgres.js to simplify simple CRUD operations.
npm install pgbuddyA no-nonsense, type-safe and tiny query builder wrapping postgres.js.
- 🛡️ Type-safe queries with TypeScript
- 🔒 SQL injection prevention
- 🎯 Simple CRUD operation builders
- 🚀 NEW: Chainable query API
- 📦 Thin wrapper over postgres.js
``bash`
npm install pgbuddy postgres
`typescript
import postgres from "postgres";
import { PgBuddyClient } from "pgbuddy";
// Create postgres.js connection
const sql = postgres("postgres://username:password@localhost:5432/dbname");
const db = new PgBuddyClient(sql);
interface User {
id: number;
email: string;
name: string;
active: boolean;
}
// Define table
const users = db.table
// Find users with chainable methods
const activeUsers = await users
.where({ active: true })
.orderBy([{ column: "id", direction: "DESC" }])
.take(10)
.findMany();
// Create a user
const newUser = await users.create({
email: "user@example.com",
name: "User",
active: true,
});
// Create multiple users
const newUsers = await users.createMany([
{ email: "user1@example.com", name: "User 1", active: true },
{ email: "user2@example.com", name: "User 2", active: true },
]);
// Update a user
const updatedUser = await users.where({ id: 1 }).update({ active: false });
// Delete a user
const deletedUser = await users.where({ id: 1 }).delete();
`
`typescript
import postgres from "postgres";
import { PgBuddy } from "pgbuddy";
const sql = postgres("postgres://username:password@localhost:5432/dbname");
const pgBuddy = new PgBuddy(sql);
interface User {
id: number;
email: string;
}
const userTable = pgBuddy.table
// Simple type-safe queries
await userTable.select({
where: { email: "user@example.com" },
});
`
}
const userTable = pgBuddy.table
// Simple type-safe queries
await userTable.select({
where: { email: 'user@example.com' }
});
`
PgBuddy provides two APIs for database operations:
PgBuddy is a wrapper around postgres.js. For advanced PostgreSQL features like:
- Transactions
- Prepared Statements
- Listen/Notify
- Copy Operations
- Custom Types
- Connection Pooling
Please refer to the postgres.js documentation.
MIT
Contributions welcome! Please read our contributing guidelines first.
``