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

🎓 Источники

См. также