ent ~13 часов 25 уроковпрактика
ent (Ent ORM): курс по графовой ORM для Go
ent — ORM от Facebook, который описывает схему данных как код и генерирует типобезопасные запросы. Связи становятся графом, запросы — цепочками предикатов, а ошибки ловит компилятор. Курс ведёт от первой схемы до privacy-политик и GraphQL.
Чему научитесь
Чему научитесь
- Проектировать схемы и связи в ent
- Генерировать код и жить с кодогенерацией
- Писать запросы builder-стилем с типами
- Строить хуки, интерсепторы и privacy-правила
- Настраивать миграции: automigrate и versioned
- Понимать, когда ent лучше GORM и sqlc
Для кого курс
- Тем, кому тесно в классических ORM
- Проектам со сложными связями данных
- Командам, ценящим кодогенерацию
Что понадобится
- Базовый Go
- Основы SQL и реляционных связей
Программа курса: 25 уроков
- 1Знакомство с ent и code generationПочему ent — «граф», архитектура генератора.~15 мин · что такое ent, ent orm
- 2Установка и инициализация схемыent init, структура ent/schema, первая сущность.~20 мин · ent схема, ent init
- 3Поля: типы и валидацияfield.*, дефолты, валидаторы, уникальность.~20 мин · ent поля, ent field
- 4Optional и Nillable поляРазница optional/nillable, NULL-семантика.~16 мин · ent optional nillable, nullable ent
- 5Edges: связи O2M и M2ORef, ForeignKey, OnDelete, первичные связи.~22 мин · ent edges, связи ent
- 6Edges: M2M и Throughmany2many, кастомная join-таблица через through.~22 мин · ent many2many, m2m ent
- 7Генерация кода: go generateent generate, структура сгенерированного кода.~18 мин · ent generate, кодогенерация ent
- 8Создание сущностейclient.User.Create, OnConflict, bulk-вставки.~18 мин · ent create, создание ent
- 9Запросы: Query builderQuery, All, Only, First, Get по ID.~20 мин · ent query, запросы ent
- 10Предикаты и фильтрыuser.And, Or, Not, повторное использование условий.~20 мин · ent предикаты, predicates ent
- 11Жадная загрузка With*WithPosts, WithOwner, вложенные загрузки.~20 мин · ent preload, with ent
- 12Пагинация и сортировкаOffset/Limit, OrderBy, курсорная пагинация.~18 мин · ent пагинация, order ent
- 13Обновление и UpsertUpdate, Set/Add, OnConflict sql.~18 мин · ent update, upsert ent
- 14УдалениеDelete, каскадное поведение edges.~14 мин · ent delete, удаление ent
- 15Миграции: automigrate и versionedSchema.Create, atlas-миграции, ревью.~20 мин · ent миграции, atlas ent
- 16Транзакции в entclient.Tx, коммит/роллбек, вложенные Tx.~20 мин · ent транзакции, tx ent
- 17Хуки: перехват измененийHook, On/If, аудит-логи через хуки.~20 мин · ent хуки, hooks ent
- 18InterceptorsПерехват запросов, мягкие фильтры на чтение.~18 мин · ent interceptors, перехват ent
- 19Privacy-политикиAllow/Deny Query/Mutation, политики доступа.~22 мин · ent privacy, privacy layer
- 20Индексы и аннотацииIndex, Fields/Edges, уникальные составные.~18 мин · ent индексы, index ent
- 21GraphQL-интеграцияentgql, автогенерация резолверов.~22 мин · ent graphql, entgql
- 22Несколько баз данныхНесколько клиентов, мульти-тенантность.~18 мин · ent мультибазовость, tenant ent
- 23Тестирование ent-кодаSQLite в тестах, enttest, фикстуры.~18 мин · тестирование ent, enttest
- 24Производительность: подводные камниN+1, SELECT-столбцы, batch-операции.~20 мин · производительность ent, n+1 ent
- 25Итоговый проект: микроблогПользователи, посты, лайки, подписки — граф целиком.~30 мин · ent проект, микроблог go
Вопросы о курсе
ent поддерживает какие СУБД?
MySQL, PostgreSQL, SQLite и TiDB через драйверы database/sql.
Сложно ли жить с кодогенерацией?
Привыкание занимает день. Взамен — компилятор проверяет каждое обращение к данным.