@plyaz/db
v0.2.0
Published
Package description
Downloads
388
Keywords
Readme
@plyaz/db
Database abstraction layer with support for multiple adapters, migrations, seeds, and enterprise features.
Installation
pnpm add @plyaz/dbQuick Start
Configuration
Create a db.config.mjs in your project root:
/** @type {import('@plyaz/db').DatabaseServiceConfig} */
export default {
adapter: 'drizzle', // 'drizzle' | 'supabase' | 'sql' | 'mock'
config: {
connectionString: process.env.DATABASE_URL,
},
// Optional features
softDelete: { enabled: true },
audit: { enabled: true },
timestamps: { enabled: true },
};Basic Usage
import { createDatabaseService } from '@plyaz/db';
import config from './db.config.mjs';
const db = await createDatabaseService(config);
// Find records
const users = await db.findMany('users', {
filters: [{ field: 'status', operator: 'eq', value: 'active' }],
pagination: { limit: 10, offset: 0 },
});
// Find by ID
const user = await db.findById('users', 'user-123');
// Create
const newUser = await db.create('users', { name: 'John', email: '[email protected]' });
// Update
const updated = await db.update('users', 'user-123', { name: 'Jane' });
// Delete
const deleted = await db.delete('users', 'user-123');Adapters
| Adapter | Description |
|---------|-------------|
| drizzle | PostgreSQL via Drizzle ORM (recommended) |
| supabase | Supabase client |
| sql | Raw PostgreSQL |
| mock | In-memory for testing |
CLI
The package includes a CLI for database management:
# Run migrations
npx plyaz-db migrate up
npx plyaz-db migrate down
npx plyaz-db migrate status
# Run seeds
npx plyaz-db seed run
npx plyaz-db seed status
# Health check
npx plyaz-db healthCLI Options
npx plyaz-db --config ./path/to/db.config.mjs migrate up
npx plyaz-db --env ./path/to/.env migrate upFeatures
- Multiple Adapters - Drizzle, Supabase, raw SQL, or mock
- Soft Delete - Mark records as deleted without removing
- Audit Logging - Track all database changes
- Encryption - Field-level encryption
- Caching - Query result caching with Redis
- Read Replicas - Automatic read/write splitting
- Migrations - SQL-based schema migrations
- Seeds - Database seeding with rollback support
- Health Checks - Connection monitoring
Repository Pattern
import { BaseRepository } from '@plyaz/db';
class UserRepository extends BaseRepository<User> {
constructor(db: DatabaseService) {
super(db, 'users');
}
async findByEmail(email: string) {
return this.findMany({
filters: [{ field: 'email', operator: 'eq', value: email }],
});
}
}Types
All types are available from @plyaz/types/db:
import type {
DatabaseServiceConfig,
DatabaseAdapterType,
QueryOptions,
PaginatedResult,
} from '@plyaz/types/db';