قاعدة بيانات

أداة Sumor Cloud.
المزيد من الوثائق موصل قاعدة بيانات لـ MySQL وغيرها، يعتمد على entity.

CI Test Coverage Audit

التثبيت

npm i @sumor/database --save

الشروط الأساسية

إصدار Node.JS

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

يتطلب إصدار الموديول من Node.JS

نظرًا لأن هذه الحزمة مكتوبة بلغة الموديول ES، يرجى تغيير الكود التالي في ملف 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
  }
)