| name | mfd |
| description | MFD Generator — генерация Go-кода из PostgreSQL-схемы (модели, репозитории, фабрики тестов). Используй при правке .mfd файла, запуске `make generate`/`make mfd`, добавлении search-полей или db-test фабрик. |
MFD Generator
Upstream: https://github.com/vmkteam/mfd-generator
Генерирует Go-код (модели, репозитории, VT-сервисы) из XML-описания схемы PostgreSQL. Запускай через --help бинарника для полного списка флагов.
Makefile-цели (vmkteam-конвенция)
- XML из БД:
make mfd-xml, make mfd-vt-xml, make mfd-xml-lang
- Go-код:
make mfd-model, make mfd-repo NS=<ns>, make mfd-db-test
- VT/UI:
make mfd-vt-rpc NS=<ns>, make mfd-vt-template NS=<ns>
- Финал:
make generate (zenrpc + colgen)
Новая таблица
make mfd-xml && make mfd-model && make mfd-repo NS=<ns> && make mfd-db-test
make mfd-vt-xml && make mfd-vt-rpc NS=<ns> && make generate
Изменение существующей
make mfd-xml && make mfd-model && make mfd-repo NS=<ns> && make mfd-db-test
Layout
docs/model/<project>.mfd — корневой MFD (PackageNames, TableMapping, GoPGVer)
docs/model/<namespace>.xml — per-namespace Entities/Attributes/Searches
Entity/Attribute — vmkteam-конвенции
Name = Go-поле; PK автоматически переименовывается в ID
FK="User" — имя Entity, не таблицы
Addable/Updatable — флаги для INSERT/UPDATE
- Аудит-поля
createdAt/modifiedAt → Addable="false" Updatable="false"
- На каждый Attribute автоматически генерируется equals-search; удалённые вручную Searches не восстанавливаются при
mfd-xml
- Переименование Name ломает ссылки из Searches/VT — искать и обновлять вручную
Маппинг типов (нестандартное)
json/jsonb → именованный тип <EntityFieldName> (не map[string]any)
bigint → int64; integer/serial → int
numeric/double → float64
SearchType — полный список
EQUALS, NOT_EQUALS, NULL, NOT_NULL, GE/LE/G/L, ILIKE, ARRAY (IN), NOT_INARRAY, ARRAY_CONTAINS (ANY), JSONB_PATH (@>).
Все с префиксом SEARCHTYPE_.
JSONB-поиск
AttrName использует -> + обязательный GoType:
<Search Name="SmsCount" AttrName="Params->smsCount" SearchType="SEARCHTYPE_EQUALS" GoType="int" />
Маркер generated-файлов
Не редактировать. Исключение — model_params.go (append-only).