Добавить в корзинуПозвонить
Найти в Дзене
letsCode

Spring Boot FlyWay: миграции БД, профиль пользователя

Spring Boot Web Application: готовим приложение к деплою, наводим порядок: фиксируем структуру БД и переходим на версионирование БД с использованием flyway. Дополнительно добавляем в БД дефолтного администратора и добавляем страницу профиля пользователя, где каждый пользователь может поменять свой пароль или email. Миграции нужны для версионирования изменений БД в соответствии со структурой доменной модели. Проще говоря: при запуске проекта из репозитория с нуля на любом этапе, мы получим нужную структуру БД, со всеми таблицами и полями, которые нужны для работы приложения + все необходимые данные, вроде дефолтного администратора. Сайт flyway: https://flywaydb.org/ Код из видео: https://github.com/drucoder/sweater/tree/addDbMigration Самой первой миграцией нужно задать стартовую структуру БД. Для этого добавим в наш файл application.properties следующие свойства: https://gist.github.com/drucoder/657da10885703294c79dfdd836e9795c И запустим приложение. В логах приложения ищем записи, н

Spring Boot Web Application: готовим приложение к деплою, наводим порядок: фиксируем структуру БД и переходим на версионирование БД с использованием flyway. Дополнительно добавляем в БД дефолтного администратора и добавляем страницу профиля пользователя, где каждый пользователь может поменять свой пароль или email.

Миграции нужны для версионирования изменений БД в соответствии со структурой доменной модели. Проще говоря: при запуске проекта из репозитория с нуля на любом этапе, мы получим нужную структуру БД, со всеми таблицами и полями, которые нужны для работы приложения + все необходимые данные, вроде дефолтного администратора.

Сайт flyway:

https://flywaydb.org/

Код из видео:

https://github.com/drucoder/sweater/tree/addDbMigration

Самой первой миграцией нужно задать стартовую структуру БД. Для этого добавим в наш файл application.properties следующие свойства:

https://gist.github.com/drucoder/657da10885703294c79dfdd836e9795c

И запустим приложение. В логах приложения ищем записи, начинающиеся со слова Hibernate и копируем все строки, в которых создаются объекты БД. После этого создаём директорию миграций db/migration в директории проекта resources, куда добавляем первый файл миграции с именем V1__Init_db.sql. Правила оформления имен файлов можно почитать тут:

https://flywaydb.org/documentation/migrations#naming

В этот файл вставляем скопированные из логов скрипты и оформляем код, в соответствии с требованиями синтаксиса SQL.

Осталось добавить зависимость на flyway и переход на миграции окончен:

https://gist.github.com/drucoder/dae81826441e84e186a8471852b82ac6

Теперь при разворачивании приложения на сервере мы получим чистую БД. Соответственно, все новые пользователи будут иметь рядовые права и создать администратора будет невозможно без прямого доступа к БД.

Чтобы исправить этот огрех, добавим миграцию, в которой вручную опишем добавление администратора по умолчанию. Создаём скрипт миграции V2__Add_admin.sql и описываем там добавление пользователя.

Теперь администратор есть, но у него фиксированный и простой пароль, который он (да и любой другой пользователь) не может изменить. Также никто из пользователей не может изменить свой email.

Для добавления редактора этих полей, создаём шаблон profile.ftl и ответную его часть в контроллере UserController. В UserService добавляем код, обрабатывающий смену пароля и почтового адреса. Если происходит смена почты, то повторно отправляем пользователю ссылку на подтверждение почтового адреса

Для проверки корректности работы приложения можно использовать сервис времменых почтовых ящиков:

https://temp-mail.org/ru/view/a0a6cfdb82ac42e62d87ec27e1d1b159/

Группа ВКонтакте: https://vk.com/letscodedru

Канал в Telegram: https://t.me/letsCode_dru

Чат в Telegram: https://t.me/joinchat/FeiP9xEhqHajfqhLr4z-Nw

Ссылка на канал: https://www.youtube.com/channel/UC1g3kT0ZcSXt4_ZyJOshKJQ