Easy Database Connector
raw JSON →easy-database-connector, currently at version 1.4.1, is a TypeScript-first database connector library primarily designed for MSSQL (SQL Server) environments. It offers a comprehensive suite of features aimed at enhancing performance, security, and developer productivity. Key functionalities include connection pooling for optimal performance, built-in encryption for sensitive data, and integrated Redis caching for pagination and general query results. The library provides robust transaction management, supports bulk operations, and offers type-safe querying with full TypeScript backing. While specific release cadence is not explicitly stated, its current version suggests active development. Its differentiators lie in its all-in-one approach to common database concerns for MSSQL, providing encryption, caching, and robust operations within a single, coherent API, unlike more minimalist ORMs or query builders.
Common errors
error Login failed for user 'your_user'. ↓
DB_USER, DB_PASSWORD, DB_HOST, DB_PORT, and DB_DATABASE are correctly configured in your .env file and that the user has appropriate database permissions. error Error: Environment variable DB_HOST is not set. ↓
DB_TYPE, DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE, DB_PORT, DB_ENCRYPT) are present and correctly named in your .env file. error A Master Key must be open before a Symmetric Key can be opened. Open the Master Key in the database. ↓
MASTER_KEY_PASSWORD, MSSQL_SYNNETRIC_KEY_NAME, and MSSQL_CERTIFICATE_NAME in your .env file match the database configuration. Warnings
gotcha The library relies heavily on environment variables for database, Redis, and encryption configuration. Missing or incorrectly named variables in the .env file can lead to connection failures or unexpected behavior. ↓
gotcha Utilizing the built-in encryption features requires specific setup in your MSSQL database, including creating master keys, symmetric keys, and certificates. Misconfiguration or missing database objects will cause encryption-related operations to fail. ↓
gotcha While optional, enabling and configuring Redis caching requires a running Redis server and correct `REDIS_` environment variables. Incorrect Redis configuration can lead to caching failures, fallback to direct database queries, or application errors. ↓
gotcha When performing bulk operations with the `execute` function, the `bulk.columns` array requires precise MSSQL data type definitions (e.g., `mssql.NVarChar(100)`). Mismatches between these types, the database schema, or the data being inserted will result in insertion errors. ↓
Install
npm install easy-database-connector yarn add easy-database-connector pnpm add easy-database-connector Imports
- query wrong
const query = require('easy-database-connector').query;correctimport { query } from 'easy-database-connector'; - execute wrong
const execute = require('easy-database-connector').execute;correctimport { execute } from 'easy-database-connector'; - transaction wrong
const transaction = require('easy-database-connector').transaction;correctimport { transaction } from 'easy-database-connector';
Quickstart
import { query, execute, queryWithPagination, transaction } from 'easy-database-connector';
import 'dotenv/config'; // Ensure environment variables are loaded
interface User {
id: number;
name: string;
email: string;
active: boolean;
}
async function runExample() {
// Basic query
const users = await query<User>({
sql: 'SELECT * FROM users WHERE active = @p0',
parameters: [true]
});
console.log('Active users:', users);
// Paged query with caching
const pagedUsers = await queryWithPagination<User>({
sql: 'SELECT * FROM users',
parameters: [],
page: 1,
pageSize: 10,
orderBy: 'name ASC',
cache: {
key: 'users:page1',
ttl: 300 // 5 minutes
}
});
console.log('Paged users:', pagedUsers.rows);
// Encrypted data insertion (requires MSSQL encryption setup)
// Ensure environment variables for encryption are set: MSSQL_SYNNETRIC_KEY_NAME, MSSQL_CERTIFICATE_NAME, MASTER_KEY_PASSWORD
try {
await execute({
sql: 'INSERT INTO secure_data (data) VALUES (@p0)',
parameters: ['sensitive information'],
encryption: {
open: { aes: true, masterkey: true },
data: ['0']
}
});
console.log('Sensitive data inserted (encrypted).');
} catch (e) {
console.error('Failed to insert encrypted data. Check MSSQL encryption setup and .env config.', e);
}
// Transaction example
await transaction(async (trx) => {
await execute({
sql: 'INSERT INTO users (name) VALUES (@p0)',
parameters: ['John Doe'],
transaction: trx
});
await execute({
sql: 'INSERT INTO logs (action) VALUES (@p0)',
parameters: ['user_john_created'],
transaction: trx
});
});
console.log('Transaction completed: User and log created.');
}
runExample().catch(console.error);