Elide предоставляет три модуля SQL:
| Модуль | Точка входа | Модель подключения |
|---|---|---|
| SQLite | elide:sqlite | Встроенная и синхронная |
| PostgreSQL | elide:postgres | Сетевое подключение и API на промисах |
| MySQL | elide:mysql | Сетевое подключение и API на промисах |
Глобального объекта 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();Для MySQL используйте elide:mysql и порт 3306. Объект конфигурации требует
database, user и password. Поведение подключения и запросов требует
работающего сервера баз данных, и его следует проверять на той версии сервера и
конфигурации, которые использует ваше приложение.