From vmkteam-developer
References mfd-generator Makefile commands to generate Go models, repositories, VT RPC/services, and tests from PostgreSQL schema XML. Use for syncing DB changes to code.
npx claudepluginhub vmkteam/claude-plugins --plugin vmkteam-developerThis skill uses the workspace's default tool permissions.
Ты — эксперт по mfd-generator (https://github.com/vmkteam/mfd-generator).
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Ты — эксперт по mfd-generator (https://github.com/vmkteam/mfd-generator).
MFD Generator генерирует Go-код (модели, репозитории, VT-сервисы) из XML-описания схемы PostgreSQL.
make mfd-xml # обновить XML из схемы PostgreSQL
make mfd-vt-xml # сгенерировать VT XML
make mfd-xml-lang # сгенерировать переводы
make mfd-model # сгенерировать Go-модели (model.go, model_search.go, model_validate.go)
make mfd-repo NS=<ns> # сгенерировать репозитории для namespace
make mfd-db-test # сгенерировать тестовые хелперы
make mfd-vt-rpc NS=<ns> # сгенерировать VT RPC-код
make mfd-vt-template NS=<ns> # сгенерировать JS-шаблоны
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
<Project>
<Name>reviewsrv.mfd</Name>
<PackageNames>
<string>common</string>
<string>review</string>
</PackageNames>
<GoPGVer>10</GoPGVer>
<TableMapping>
<common>users</common>
<review>reviews,reviewFiles,issues</review>
</TableMapping>
</Project>
<Package>
<Name>blog</Name>
<Entities>
<Entity Name="Post" Namespace="blog" Table="posts">
<Attributes>
<Attribute Name="ID" DBName="postId" DBType="int4" GoType="int" PK="true" Nullable="Yes" Addable="true" Updatable="true" />
<Attribute Name="Title" DBName="title" DBType="varchar" GoType="string" Nullable="No" Addable="true" Updatable="true" Max="255" />
<Attribute Name="UserID" DBName="userId" DBType="int4" GoType="int" FK="User" Nullable="No" Addable="true" Updatable="true" />
</Attributes>
<Searches>
<Search Name="IDs" AttrName="ID" SearchType="SEARCHTYPE_ARRAY" />
<Search Name="TitleILike" AttrName="Title" SearchType="SEARCHTYPE_ILIKE" />
</Searches>
</Entity>
</Entities>
</Package>
| Свойство | Описание |
|---|---|
Name | Имя Go-поля (PK автоматически → "ID") |
DBName | Имя колонки в БД |
DBType | Тип PostgreSQL |
GoType | Тип Go |
PK | Primary key |
FK | Foreign key — ссылка на Entity (не таблицу) |
Nullable | Yes/No |
Addable | Можно задать при INSERT |
Updatable | Можно задать при UPDATE |
Min/Max | Ограничения длины/значения |
| PostgreSQL | Go |
|---|---|
| integer, serial | int |
| bigint | int64 |
| real | float32 |
| double, numeric | float64 |
| text, varchar, uuid | string |
| boolean | bool |
| timestamp, date | time.Time |
| json, jsonb | EntityFieldName (именованный тип) |
| Тип | SQL-условие |
|---|---|
SEARCHTYPE_EQUALS | f = v |
SEARCHTYPE_NOT_EQUALS | f != v |
SEARCHTYPE_NULL / NOT_NULL | f IS NULL / IS NOT NULL |
SEARCHTYPE_GE / LE / G / L | >=, <=, >, < |
SEARCHTYPE_ILIKE | f ILIKE '%v%' |
SEARCHTYPE_ARRAY | f IN (v1, v2) |
SEARCHTYPE_NOT_INARRAY | f NOT IN (v1, v2) |
SEARCHTYPE_ARRAY_CONTAINS | v = ANY(f) |
SEARCHTYPE_JSONB_PATH | f @> v |
Формат: AttrName="JsonField->keyName". Обязательно указывать GoType.
<Search Name="SmsCount" AttrName="Params->smsCount" SearchType="SEARCHTYPE_EQUALS" GoType="int" />
Name атрибута используется в ссылках из Searches и VT — при переименовании обновить все ссылкиFK указывается как имя Entity, не таблицыcreatedAt/modifiedAt → Addable="false", Updatable="false"mfd-xml// Code generated by mfd-generator v0.6.1; DO NOT EDIT.
НЕ РЕДАКТИРУЙ файлы с таким заголовком. Исключение: model_params.go (append-only).