قاعدة بيانات

أداة Sumor Cloud.
مزيد من التوثيق موصل قاعدة بيانات لـ MySQL، إلخ. استنادًا إلى Entity.

CI Test Coverage Audit

التثبيت

npm i @sumor/database --save

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

إصدار Node.JS

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

يتطلب Node.JS ES module

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

{
  "type": "module"
}

الاستخدام

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

يمكنك استخدام طريقة التثبيت لتثبيت Entity و View إلى قاعدة البيانات.

database.install(config, [مسار الموارد], [بيانات الموارد])

حالة 1: تثبيت Entity و View من مسار الموارد، ستقوم بتحميل data/entity و data/view من مجلد مشروع الجذر.

import database from '@sumor/database'

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

await database.install(config.database, process.cwd() + '/data')

حالة 2: تثبيت Entity و View من بيانات الموارد، ستقوم بتحميل data/entity و data/view من كائن بيانات.

import database from '@sumor/database'

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

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

import database from '@sumor/database'

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

// الحصول على عميل مع حوض اتصال
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
  }
)

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

Index

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

Join

يمكنك إضافة كائن join إلى تعريف الكيان لإنشاء انضمام على الجدول. كما في المثال التالي، سيتم إنشاء حقل 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: {}
})