يوفر Elide ثلاث وحدات SQL:
| الوحدة | نقطة الدخول | نموذج الاتصال |
|---|---|---|
| SQLite | elide:sqlite | مضمّنة ومتزامنة |
| PostgreSQL | elide:postgres | اتصال شبكي وواجهة قائمة على Promise |
| MySQL | elide:mysql | اتصال شبكي وواجهة قائمة على Promise |
لا يوجد كائن عام Elide.db. استورد المشغّل الذي تحتاجه.
SQLite
import { Database } from "elide:sqlite";
const db = new Database();
try {
db.exec("CREATE TABLE checks (ok INTEGER)");
db.exec("INSERT INTO checks VALUES (1)");
console.log(db.query("SELECT ok FROM checks").get());
// { ok: 1 }
} finally {
db.close();
}يُنشئ new Database() وnew Database(":memory:") قاعدة بيانات في الذاكرة.
ويفتح المسار قاعدة بيانات مدعومة بملف. وتكشف النسخة query وprepare
وexec وtransaction وloadExtension وserialize وclose.
تكشف العبارة all() وvalues() وget() وrun(). ويقبل كلٌّ منها
معاملات موضعية (?، ?1) أو مسمّاة ($name):
import { Database } from "elide:sqlite";
const db = new Database();
db.exec("CREATE TABLE users (name TEXT, age INTEGER)");
db.prepare("INSERT INTO users VALUES (?, ?)").run("Ada", 36);
db.prepare("INSERT INTO users VALUES ($name, $age)").run({ $name: "Alan", $age: 41 });
console.log(db.prepare("SELECT name FROM users WHERE age > ?").all(40));
// [{name: "Alan"}]
db.close();تغلّف المعاملات دالة استدعاء متزامنة:
import { Database } from "elide:sqlite";
const db = new Database();
try {
db.exec("CREATE TABLE checks (ok INTEGER)");
const insert = db.transaction(() => {
db.exec("INSERT INTO checks VALUES (1)");
});
insert();
console.log(db.query("SELECT COUNT(*) AS count FROM checks").get());
// { count: 1 }
} finally {
db.close();
}PostgreSQL وMySQL
يكشف كلا المشغّلين الشبكيين مصنع Database مع connect:
import { Database } from "elide:postgres";
const db = await Database.connect({
host: "127.0.0.1",
port: 5432,
database: "app",
user: "app",
password: process.env.DB_PASSWORD,
});
await db.close();استخدم elide:mysql والمنفذ 3306 لـ MySQL. ويتطلب كائن الإعداد
database وuser وpassword. ويتطلب سلوك الاتصال والاستعلام
خادم قاعدة بيانات جاريًا وينبغي التحقق منه مقابل إصدار الخادم و
الإعداد الذي يستخدمه تطبيقك.