قاعدة بيانات

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

CI Test Coverage Audit

التثبيت

npm i @sumor/database --save

الشروط المسبقة

إصدار Node.JS

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

يتطلب وحدة تصدير Node.JS ES

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

// get client with connection pool
const client = await database.client(config)

// get connection
const db = await client.connect()

// set operate user
db.setUser('tester')

// create record
const car1Id = await db.insert('Car', {
  brand: 'BMW',
  model: 'X5'
})
const car2Id = await db.insert('Car', {
  brand: 'BMW',
  model: 'X6'
})

// read record
const car = await db.single('Car', { id: carId })
// car = {id: car1Id, brand: 'BMW', model: 'X5'}

// query records
const cars = await db.query('Car', {
  brand: 'BMW'
})
// cars = [{id: car1Id, brand: 'BMW', model: 'X5'}, {id: car2Id, brand: 'BMW', model: 'X6'}]

// count records
const count = await db.count('Car', {
  brand: 'BMW'
})
// count = 2

// update record
await db.update(
  'Car',
  { id: car1Id },
  {
    brand: 'BMW',
    model: 'X5M'
  }
)

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

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

// delete record
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
  }
)