قاعدة بيانات

أحد أدوات Sumor Cloud.
المزيد من الوثائق
موصل قاعدة بيانات لـ MySQL وما إلى ذلك. يعتمد على entity.

CI
Test
Coverage
Audit

التثبيت

npm i @sumor/database --save

المتطلبات الأساسية

إصدار Node.JS

يتطلب إصدار Node.JS بنسخة 16.x أو أعلى

يتطلب Node.JS ES module

نظرًا لأن هذه الحزمة مكتوبة بتنسيق ES module،
يرجى تعديل الشيفرة التالية في ملف package.json الخاص بك:

{
  "type": "module"
}

الاستخدام

الاستخدام العام

import database from '@sumor/database'

const config = {
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'database',
  port: 3306
}

await database.install(config, {
  entity: {
    Car: {
      property: {
        brand: {
          type: 'string',
          length: 100
        },
        model: {
          type: 'string',
          length: 100
        }
      }
    }
  },
  view: {}
})

// الحصول على عميل مع حوض اتصال
const client = await database.client(config)

// الحصول على الاتصال
const db = await client.connect()

// تعيين مستخدم العمل
db.setUser('tester')

// إنشاء سجل
const car1Id = await db.insert('Car', {
  brand: 'BMW',
  model: 'X5'
})
const car2Id = await db.insert('Car', {
  brand: 'BMW',
  model: 'X6'
})

// قراءة السجل
const car = await db.single('Car', { id: carId })
// car = {id: car1Id, brand: 'BMW', model: 'X5'}

// استعلام السجلات
const cars = await db.query('Car', {
  brand: 'BMW'
})
// cars = [{id: car1Id, brand: 'BMW', model: 'X5'}, {id: car2Id, brand: 'BMW', model: 'X6'}]

// عد السجلات
const count = await db.count('Car', {
  brand: 'BMW'
})
// count = 2

// تحديث السجل
await db.update(
  'Car',
  { id: car1Id },
  {
    brand: 'BMW',
    model: 'X5M'
  }
)

// ضمان السجل
await db.ensure('Car', ['brand'], {
  brand: 'BMW',
  model: 'X5C'
})
// لن يتم إدراج السجل إذا كانت العلامة التجارية 'BMW' موجودة بالفعل

// تعديل السجل
await db.modify('Car', ['brand'], {
  brand: 'BMW',
  model: 'X5C'
})
// سيُحدث السجل إذا كانت العلامة التجارية 'BMW' موجودة بالفعل

// حذف السجل
await db.delete('Car', { id: car1Id })

// إغلاق الاتصال
await db.commit()

// التراجع عن الأمر
await db.rollback()

// إغلاق الاتصال
await db.release()

// تدمير العميل عندما يجب إيقاف خادم الخدمة
await client.destroy()

خيارات الاستعلام

// استعلام السجلات بخيارات
const cars = await db.select(
  'Car',
  {
    brand: 'BMW'
  },
  {
    term: 'X5',
    termRange: ['model'],
    top: 10,
    skip: 0
  }
)