Metasql — работа с SQL
Библиотека Metarhia для работы с реляционными БД через декларативные схемы. Не ORM в классическом смысле — ближе к query builder + миграции.
Зачем не ORM
автор: «ORM не дают двухстороннюю синхронизацию состояния между памятью и базой данных. А без этого практически не получится ничего нормально делать».
ORM (Sequelize, TypeORM) — это маппинг объект → таблица. Metasql проще: схема описывает таблицы, query-builder генерирует SQL, миграции автогенерируются.
Что делает
- Описание схемы БД через metaschema.
- Генерация SQL DDL (CREATE/ALTER TABLE).
- Автоматические миграции при изменении схемы.
- Query builder поверх pg/node-postgres.
Пример схемы таблицы
// applications/myapp/schemas/User.js
({
Entity: {},
fields: {
name: 'string',
email: 'string',
age: { type: 'number', min: 0 },
createdAt: 'datetime',
},
indices: [['email']],
})
Metasql прочитает → создаст таблицу User с нужными колонками, индексами, констрейнтами.
Миграции автогенерятся
Изменили схему — metasql migrate сравнивает текущее состояние БД и схемы → генерирует ALTER-операции.
Контракт типов един
Тот же тип { email: 'email' } валидирует:
- Входной параметр RPC-метода.
- Поле в БД.
- Доменную сущность.
Не нужно дублировать схемы для разных слоёв.
Сравнение
| Sequelize/TypeORM | Prisma | Metasql | |
|---|---|---|---|
| Описание | классы/декораторы | schema.prisma | metaschema-объекты |
| Миграции | команды | команды | автогенерация |
| Связь с типами API | ручная | сгенерён клиент | единая схема |
| Поддержка БД | много | много | в основном PostgreSQL |
🎓 Источники
- 🎓 Летняя школа 2022 #5 — схемы, контракты и типы, metasql, миграции · 2022-07-21
- 🎓 Metarhia metaschema — рефакторинг · 2022-05-20