قاعدة البيانات

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

CI
Test
Coverage
Audit

التثبيت

npm i @sumor/database --save

المتطلبات

إصدار Node.JS

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

يتطلب إصدار Node.JS ES module

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

خيارات تعريف الكيان

الفهرس

يمكنك إضافة مصفوفة فهرس إلى تعريف الكيان لإنشاء فهرس على الجدول، وبشكل افتراضي، سيتم إنشاء فهرس على حقل id.

الانضمام

يمكنك إضافة كائن انضمام إلى تعريف الكيان لإنشاء انضمام على الجدول. مثل المثال التالي، سيتم إنشاء حقل userId في كيان Car.

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
        }
      },
      index: ['userId'],
      join: {
        user: 'User'
      }
    }
  },
  view: {}
})