Перейти к содержимому
ГоМастер

Поиск по урокам

Найдите урок, курс, термин или раздел

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

Вопросы о курсе

ent поддерживает какие СУБД?

MySQL, PostgreSQL, SQLite и TiDB через драйверы database/sql.

Сложно ли жить с кодогенерацией?

Привыкание занимает день. Взамен — компилятор проверяет каждое обращение к данным.