Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

database-connector-service

Package Overview
Dependencies
Maintainers
0
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

database-connector-service

A TypeScript-based service for managing MySQL, MSSQL, and Redis connections.

  • 1.0.1
  • npm
  • Socket score

Version published
Weekly downloads
11
Maintainers
0
Weekly downloads
 
Created
Source

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 { createQuery, query, execute, transaction } from 'database-connector-service';

// Sorgu Oluşturucu Kullanımı
const users = await createQuery('users')
    .select(['id', 'name', 'email'])
    .where({ active: true })
    .orderBy('name')
    .cache('active-users', 3600)
    .getAll();

// Önbellekli direkt sorgu
const result = await query(
    'SELECT * FROM users WHERE status = ?',
    ['active'],
    { 
        cache: { 
            key: 'active-users', 
            ttl: 3600 
        } 
    }
);

// İş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');
});

Örnekler

Sorgu Oluşturucu

// 1. Temel Sorgu
const users = await createQuery('users')
    .select(['id', 'name', 'email'])
    .where({ active: true })
    .orderBy('name')
    .getAll();

// 2. Birleştirmeler (Joins)
const orders = await createQuery('orders')
    .select([
        'orders.id',
        'orders.total',
        'users.name as user_name'
    ])
    .leftJoin('users', 'users.id = orders.user_id')
    .where({ 'orders.status': 'completed' })
    .getAll();

// 3. Karmaşık Koşullar
const stats = await createQuery('orders')
    .select([
        'user_id',
        'COUNT(*) as order_count',
        'SUM(total) as total_amount'
    ])
    .where({ status: 'completed' })
    .andWhere('created_at > ?', ['2024-01-01'])
    .groupBy('user_id')
    .having('total_amount > ?', [1000])
    .orderBy('total_amount', 'DESC')
    .getAll();

// 4. Tek Kayıt
const user = await createQuery('users')
    .where({ id: 1 })
    .getOne();

// 5. Sayfalama
const pagedResults = await createQuery('users')
    .where({ active: true })
    .orderBy('name')
    .limit(10)
    .offset(0)
    .getAll();

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'
    }
);

Önbellek Yönetimi

// 1. Sorgu Oluşturucu ile Önbellekleme
const users = await createQuery('users')
    .where({ active: true })
    .cache('active-users', 3600)  // anahtar ve TTL (saniye)
    .getAll();

// 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

FAQs

Package last updated on 10 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc