Миграции
В бойлерплейте работа с базой данных сведена к минимуму, поэтому не нужно создавать таблицы и писать запросы. Миграции происходят из тегов структур.
Рассмотрим структуру 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:
- Чтобы вручную не прописывать теги, сгенерируем их, используя Easytags.
-
Замени значения тегов согласно изображению. Не забудь изменить название таблицы в методе TableName() на Test.
-
Зарегистрируй таблицу.
- Перезапусти сервер, подключись к базе и проверь, появилась ли таблица.
С репозиторием из урока ты можешь ознакомиться по ссылке.