Skip to content

Миграции

В бойлерплейте работа с базой данных сведена к минимуму, поэтому не нужно создавать таблицы и писать запросы. Миграции происходят из тегов структур.

Рассмотрим структуру UserDTO.

В UserDTO теги используются для указания дополнительной информации о полях структуры. Рассмотрим каждый из них:

  • json:"id": указывает на имя поля при сериализации в JSON.

  • db:"id": указывает на имя столбца в базе данных.

  • db_type:"BIGSERIAL primary key": указывает на тип столбца в базе данных.

  • db_default:"not null": указывает на значение по умолчанию, которое будет использоваться при создании столбца в базе данных.

  • db_index:"index": указывает на то, что для данного столбца в базе данных должен быть создан индекс, а слово unique указывает на то, что индекс должен быть уникальным.

  • db_ops:"create,update": указывает на то, что данное поле будет использоваться при операциях создания и обновления данных в базе данных.

Используя теги, можно создавать миграции для базы данных, которые создадут таблицы с заданными полями и их типами данных, а также определенными индексами. Также теги позволяют определить значения по умолчанию для полей и указать, какие поля должны быть использованы при операциях создания и обновления данных в базе данных.

Тег db_ops используется для указания полей, которые могут быть использованы в операциях создания и обновления данных в базе данных. Это означает, что при создании или обновлении записей в базе данных, будут учитываться только те поля, которые имеют тег db_ops:"create,update". Другими словами, если в структуре есть поля без этого тега, то при создании записей в базе данных они будут проигнорированы.

В данном случае, если мы захотим создать таблицу в базе данных для структуры UserDTO, то можем использовать миграции, которые прочитают теги и создадут таблицу с соответствующими полями и их типами данных. При этом для создания таблицы будут использоваться только те поля, которые имеют тег db_ops:"create", а для обновления данных в таблице будут использоваться поля, которые имеют тег db_ops:"update".

Достаточно зарегистрировать данную структуру, имеющую interface Tabler, для автоматической миграции в функции bootstrap:

С репозиторием из урока ты можешь ознакомиться по ссылке.

Создание своей таблицы

Создадим TestDTO:

  1. Чтобы вручную не прописывать теги, сгенерируем их, используя Easytags.

  1. Замени значения тегов согласно изображению. Не забудь изменить название таблицы в методе TableName() на Test.

  2. Зарегистрируй таблицу.

  1. Перезапусти сервер, подключись к базе и проверь, появилась ли таблица.

С репозиторием из урока ты можешь ознакомиться по ссылке.