This package has been deprecated

Author message:

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

database-connector-service

0.1.121-beta.1 • Public • Published

Database Connector Services

Esnek ve güçlü bir Node.js veritabanı bağlayıcısı. MySQL ve MSSQL için yerleşik destek, Redis önbellekleme, sorgu oluşturma ve işlem yönetimi özellikleri sunar.

Özellikler

  • ✨ MySQL ve MSSQL desteği
  • 🚀 Yerleşik Redis önbellekleme
  • 🔧 Akıcı sorgu oluşturucu
  • 📦 İşlem desteği
  • 📝 TypeScript desteği
  • 🔄 Otomatik önbellek invalidasyonu
  • 📊 Sayfalama desteği

Kurulum

npm install database-connector-service

Yapılandırma

Proje kök dizininizde bir .env dosyası oluşturun:

# Veritabanı Yapılandırması
DB_TYPE=mysql     # veya mssql
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_DATABASE=your_database
DB_PORT=3306      # MySQL=3306, MSSQL=1433
DB_ENCRYPT=false  # MSSQL için

# Redis Yapılandırması (İsteğe bağlı)
REDIS_ENABLED=true
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_TTL=3600

Hızlı Başlangıç

import { createQueryBuilder, query, execute, transaction } from 'database-connector-service';

Direkt Sorgular

// 1. Basit Sorgu
const users = await query(
    'SELECT * FROM users WHERE active = ?',
    [true]
);

// 2. Önbellekli
const cachedUsers = await query(
    'SELECT * FROM users WHERE active = ?',
    [true],
    {
        cache: {
            key: 'active-users',
            ttl: 3600
        }
    }
);

// 3. Sayfalama
const { data, pagination } = await queryWithPagination(
    'SELECT * FROM users WHERE active = ?',
    [true],
    {
        page: 1,
        pageSize: 10,
        orderBy: 'name',
        direction: 'ASC'
    }
);

// İşlem örneği
await transaction(async (trx) => {
    await trx.query('INSERT INTO users (name) VALUES (?)', ['John']);
    await trx.query('UPDATE stats SET total = total + 1');
});

Sorgu Oluşturucu

const users = createQueryBuilder('users');

// SELECT örneği
const activeUsers = await users
    .select()
    .select('id', 'name', 'email')
    .where('status', '=', 'active')
    .leftJoin('orders', 'users.id = orders.user_id')
    .groupBy('role')
    .having('COUNT(*) > 5')
    .orderBy('created_at', 'DESC')
    .cache('active-users', 3600)
    .execute<User>();

// INSERT örneği
await users
    .insert()
    .values({
        name: 'John',
        email: 'john@example.com'
    })
    .invalidateCache('users', 'stats')
    .execute();

// UPDATE örneği
await users
    .update()
    .set({
        status: 'inactive',
        updated_at: new Date()
    })
    .where('id', '=', 1)
    .invalidateCache('users')
    .execute();

// DELETE örneği
await users
    .delete()
    .where('status', '=', 'inactive')
    .invalidateCache('users', 'stats')
    .execute();

// Transaction örneği
await users.transaction(async (trx) => {
    await users
        .insert()
        .values({ name: 'John' })
        .execute();

    await users
        .update()
        .set({ total: 100 })
        .where('type', '=', 'user')
        .execute();
});

// Pagination örneği
const { data, pagination } = await users
    .select()
    .where('active', '=', true)
    .orderBy('name')
    .paginate<User>({ page: 1, pageSize: 20 });

Önbellek Yönetimi

// 1. Sorgu Oluşturucu ile Önbellekleme
const users = createQueryBuilder('users');

const users = await createQueryBuilder('users')
    .select()
    .where('status', '=', 'active')
    .cache('active-users', 3600)
    .execute<User>();

// 2. Çoklu Önbellek Desenlerini İnvalidasyon
await invalidateCache(['users', 'orders', 'stats']);

// 3. Otomatik Önbellek İnvalidasyonu
await execute(
    'INSERT INTO users (name) VALUES (?)',
    ['John'],
    ['users', 'user_stats']  // invalidasyon için önbellek desenleri
);

İşlem Desteği

// İşlem Örneği
await transaction(async (trx) => {
    // Kullanıcı ekle
    const [user] = await trx.query(
        'INSERT INTO users (name) VALUES (?) RETURNING id',
        ['John']
    );

    // Kullanıcı ID'sini kullanarak profil ekle
    await trx.query(
        'INSERT INTO profiles (user_id, bio) VALUES (?, ?)',
        [user.id, 'New user bio']
    );

    // İstatistikleri güncelle
    await trx.query(
        'UPDATE user_stats SET total = total + 1'
    );
});

Sorgu Oluşturucu Özellikleri

Seçme İşlemleri

  • Temel seçme
  • Çoklu sütunlar
  • Takma adlar
  • Toplama fonksiyonları

Birleştirme İşlemleri

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • Çoklu birleştirmeler

Where Koşulları

  • Eşitlik koşulları
  • IN ifadeleri
  • BETWEEN
  • NULL kontrolleri
  • AND/OR ile karmaşık koşullar
  • Parametre bağlama

Gruplama ve Having

  • Çoklu sütunlarda GROUP BY
  • HAVING koşulları
  • Toplama fonksiyonları

Sıralama ve Sayfalama

  • Çoklu sütunlarda ORDER BY
  • ASC/DESC desteği
  • LIMIT ve OFFSET
  • Yerleşik sayfalama

Önbellek İşlemleri

  • Anahtar tabanlı önbellekleme
  • TTL desteği
  • Otomatik invalidasyon
  • Desen tabanlı invalidasyon

Katkıda Bulunma

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

Lisans

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i database-connector-service

Weekly Downloads

1

Version

0.1.121-beta.1

License

MIT

Unpacked Size

33.4 kB

Total Files

19

Last publish

Collaborators

  • ahmetdlbs