Add Alembic to project for database migrations

This commit is contained in:
Lexi / Zoe 2022-04-15 16:10:38 +02:00
parent 7755bfb46d
commit 7ce43a2bfe
Signed by: binaryDiv
GPG key ID: F8D4956E224DA232
15 changed files with 256 additions and 49 deletions

View file

@ -2,9 +2,17 @@
DOCKER_COMPOSE = docker-compose
DOCKER_RUN = $(DOCKER_COMPOSE) run --rm backend
# General
# -------
# Default target
.PHONY: all
all: docker-up
.PHONY: up
up: docker-up
# Shortcut for first start (initializing database, etc.)
.PHONY: first-start
first-start: docker-build db-upgrade docker-up
# Container management
@ -16,7 +24,7 @@ docker-up:
.PHONY: docker-down
docker-down:
$(DOCKER_COMPOSE) down
$(DOCKER_COMPOSE) down --remove-orphans
.PHONY: docker-build
docker-build:
@ -28,7 +36,7 @@ docker-rebuild:
.PHONY: docker-purge
docker-purge:
$(DOCKER_COMPOSE) down --volumes
$(DOCKER_COMPOSE) down --remove-orphans --volumes
.PHONY: docker-restart
docker-restart:
@ -45,3 +53,23 @@ docker-run:
.PHONY: docker-shell
docker-shell:
$(DOCKER_RUN) bash
# Database management
# -------------------
# Run migrations to upgrade the database to the head revision (set REVISION parameter to override)
.PHONY: db-upgrade
db-upgrade:
$(DOCKER_RUN) alembic upgrade $(or $(REVISION),head)
# Run migrations to downgrade the database to the previous revision (set REVISION parameter to override)
.PHONY: db-downgrade
db-downgrade:
$(DOCKER_RUN) alembic downgrade $(or $(REVISION),-1)
# Autogenerate a revision for database migration (requires MESSAGE parameter to set the revision message)
.PHONY: db-generate-migration
db-generate-migration:
@test -n "$(MESSAGE)" || (echo "Please set the revision message: make db-generate-migration MESSAGE=\"...\""; exit 1)
$(DOCKER_RUN) alembic revision --autogenerate -m "$(MESSAGE)"