npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

easy-database-connector

v1.4.1

Published

A flexible database connector service with MSSQL support, pagination, caching, and encryption

Downloads

165

Readme

Easy Database Connector

Performans odaklı, güvenli ve esnek bir veritabanı bağlantı servisi. MSSQL desteği, sayfalama, önbellek, şifreleme ve işlem yönetimiyle gelir.

Özellikler

  • 🔒 Hassas veriler için yerleşik şifreleme desteği
  • 🚀 Optimal performans için bağlantı havuzu (connection pooling)
  • 📄 Önbellekli sayfalama desteği
  • 💾 Redis önbellekleme entegrasyonu
  • 🔄 İşlem (transaction) desteği
  • 🔌 Toplu işlemler (bulk operations)
  • 📦 TypeScript desteği
  • 🛡️ Tip güvenliği
  • 🔧 Eşzamanlı işlem desteği ve paralelleştirilmiş güvenlik

Kurulum

npm install easy-database-connector

Hızlı Başlangıç

import { query, execute, queryWithPagination, transaction } from 'easy-database-connector';

// Temel sorgu
const users = await query<User>({
    sql: 'SELECT * FROM users WHERE active = @p0',
    parameters: [true]
});

// Önbellekli sayfalama sorgusu
const pagedUsers = await queryWithPagination<User>({
    sql: 'SELECT * FROM users',
    parameters: [],
    page: 1,
    pageSize: 10,
    orderBy: 'name ASC',
    cache: {
        key: 'users:page1',
        ttl: 300 // 5 dakika
    }
});

// Şifrelenmiş veri
await execute({
    sql: 'INSERT INTO secure_data (data) VALUES (@p0)',
    parameters: ['sensitive information'],
    encryption: {
        open: { aes: true, masterkey: true },
        data: ['0']
    }
});

// İşlem (transaction) örneği
await transaction(async (trx) => {
    await execute({
        sql: 'INSERT INTO users (name) VALUES (@p0)',
        parameters: ['John'],
        transaction: trx
    });

    await execute({
        sql: 'INSERT INTO logs (action) VALUES (@p0)',
        parameters: ['user_created'],
        transaction: trx
    });
});

Yapılandırma

.env dosyası oluşturun:

# Veritabanı Yapılandırması
DB_TYPE=mssql
DB_HOST=localhost
DB_USER=your_user
DB_PASSWORD=your_password
DB_DATABASE=your_database
DB_PORT=1433
DB_ENCRYPT=true

# Şifrelenmiş Sütunlar İçin
MSSQL_SYNNETRIC_KEY_NAME=your_key_name
MSSQL_CERTIFICATE_NAME=your_cert_name
MASTER_KEY_PASSWORD=your_master_key_password

# Redis Yapılandırması
REDIS_ENABLED=true
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
REDIS_TTL=3600

API Referansı

Sorgu Fonksiyonları

query<T>(input: ExecuteInput): Promise<T[]>

İsteğe bağlı önbellekleme ile SELECT sorguları çalıştırır.

const users = await query<User>({
    sql: 'SELECT * FROM users',
    parameters: [],
    cache: {
        key: 'all-users',
        ttl: 3600
    }
});

queryWithPagination<T>(input: ExecuteInput): Promise<QueryResult<T>>

Toplam sayı ile sayfalanmış bir sorgu çalıştırır.

const result = await queryWithPagination<User>({
    sql: 'SELECT * FROM users',
    page: 1,
    pageSize: 10,
    orderBy: 'created_at DESC'
});

execute(input: ExecuteInput): Promise<unknown[]>

INSERT, UPDATE, DELETE sorguları veya toplu işlemler çalıştırır.

// Toplu ekleme
await execute({
    sql: 'INSERT INTO users',
    parameters: users,
    bulk: {
        columns: [
            ['name', mssql.NVarChar(100)],
            ['email', mssql.NVarChar(100)]
        ],
        batchSize: 1000
    }
});

transaction<T>(callback: (trx: Transaction) => Promise<T>): Promise<T>

Bir işlem içinde birden fazla sorgu çalıştırır.

await transaction(async (trx) => {
    await execute({
        sql: 'DELETE FROM users WHERE id = @p0',
        parameters: [1],
        transaction: trx
    });
});

Tipler

ExecuteInput

interface ExecuteOptions {
    sql: string;
    parameters?: SqlValue[];
    encryption?: {
        open: boolean | { aes?: boolean; masterkey?: boolean };
        data: string[];
    };
    bulk?: {
        columns: ColumnType[];
        batchSize?: number;
    };
    page?: number;
    pageSize?: number;
    orderBy?: string;
    cache?: {
        key: string;
        ttl?: number;
    };
    transaction?: mssql.Transaction;
}

QueryResult

interface QueryResult<T> {
    data: T[];
    pagination: {
        page: number;
        pageSize: number;
        total: number;
        totalPages: number;
    };
}

Paralel İşlemler ve Performans İyileştirmeleri

Bu kütüphanenin son sürümü, özellikle paralel işlemlerde ve AES şifreleme işlemlerinde performans ve güvenilirliği artırmak için önemli iyileştirmeler içermektedir:

  1. İyileştirilmiş Anahtar Yönetimi: Eşzamanlı işlemler için mutex tabanlı güvenlik ve doğru anahtar izolasyonu
  2. Bağlantı Havuzu Optimizasyonu: Güvenilir havuz yönetimi ve bağlantı ömrü kontrolü
  3. Hata İzleme ve Günlükleme: Kapsamlı hata izleme ve tanılama yetenekleri
  4. Önbellek Yönetimi: Redis bağlantı havuzu ve güvenilir önbellekleme
  5. Hafıza Yönetimi: Toplu işlemlerde ve AES şifreleme işlemlerinde geliştirilmiş hafıza yönetimi

En İyi Kullanım Örnekleri

  1. Şifrelenmiş verileri işlerken daha küçük toplu işlem boyutları kullanın:
await execute({
    sql: 'INSERT INTO secure_data',
    parameters: largeDataset,
    bulk: {
        columns: [
            ['data', mssql.NVarChar(500)],
        ],
        batchSize: 500  // Şifrelenmiş veriler için daha küçük batch boyutu
    },
    encryption: {
        open: { aes: true, masterkey: true },
        data: ['data']
    }
});
  1. İşlemlerde bağlantı havuzunu verimli kullanmak için:
// Uzun süreli büyük işlemler yerine daha küçük, bağımsız işlemler tercih edin
const batchSize = 1000;
for (let i = 0; i < items.length; i += batchSize) {
    const batch = items.slice(i, i + batchSize);
    await transaction(async (trx) => {
        for (const item of batch) {
            await execute({
                sql: 'INSERT INTO items (name) VALUES (@p0)',
                parameters: [item.name],
                transaction: trx
            });
        }
    });
}

Katkıda Bulunma

Katkılarınızı bekliyoruz! Lütfen bir Pull Request göndermekten çekinmeyin.

Lisans

MIT Lisansı