Skip to content

База данных

Для работы с базой данных используется стандартный пакет database/sql. Плагин открывает соединение через драйвер "superbot", передавая имя базы данных:

go
import "database/sql"

// Подключение к базе "default" (основная БД)
db, err := sql.Open("superbot", "")
if err != nil {
    return err
}
defer db.Close()

Пустая строка "" эквивалентна "default". Если плагин использует несколько баз данных, указывайте имя явно:

go
// Основная БД
mainDB, _ := sql.Open("superbot", "")

// Именованная БД
analyticsDB, _ := sql.Open("superbot", "analytics")

Запрос

go
rows, err := db.Query("SELECT id, name FROM users WHERE active = $1", true)
if err != nil {
    return err
}
defer rows.Close()

for rows.Next() {
    var id int
    var name string
    rows.Scan(&id, &name)
}

Сохранение

go
_, err := db.Exec(
    "INSERT INTO logs (event, username) VALUES ($1, $2)",
    "login", "alice",
)

Требование

Плагин обязан объявить Database requirement. Хост автоматически добавит секцию databases в конфиг-схему, куда администратор вводит строки подключения.

go
// Одна БД (имя "default"):
wasmplugin.Database("Чтение данных пользователей").Build()

// Несколько БД:
wasmplugin.Database("Основное хранилище").Build(),
wasmplugin.Database("Аналитика (read replica)").Name("analytics").Build(),

Администратор при установке указывает конфиг вида:

json
{
  "databases": {
    "default": "postgres://user:pass@host/main",
    "analytics": "postgres://user:pass@host/analytics"
  }
}

Миграции

SQL-миграции запускаются автоматически перед OnConfigure по базе "default". Подробнее см. Миграции.