Rikard BartholfandGitHub 46513e5f40 Update vat for RO (#490)
* Update vat for RO

* Bump revision

* Cleanup
2025-08-05 15:01:45 +02:00
2025-08-05 15:01:45 +02:00
2025-01-07 12:22:58 +01:00

Database migration

Detailed information about this

Setup

Configuration

The credentials for each environment that could be updated is stored in the env/ directory.

Example

env/default.conf could look like this:

#!/bin/bash
export PSQL_OPTS="-h HOST_NAME -U root"
export DB_NAME=DATABASE_NAME

Create one file for each environment you'd be able to migrate.

When db-upgrade is issued, it takes the first part of any name as argument and performs the migration on selected environment.

$ ./db-upgrade localhost would for example find a file named localhost.conf and use the credentials inside for the migration.

To avoid having to enter password for selected user on each run, just use a .pgpass file. An example .pgpass file can be found in lastpass with name pgpass.

Login information for production cluster can be found is lastpass named production-cluster - Aurora.

db-upgrade assumes the default environment should be used if it's argument is omitted. So, start by creating an initial default.conf with credentials for your localhost or some non-critical environment.

Migration files

The files in the /migrations directory are changes to the scheme, not the full scheme.

The naming convention for migration files are:

  • 000.000.sql
  • 000.001.sql
  • 000.002.sql
  • 000.003.sql
  • 000.004.sql
  • ...and so on

Example The first file, migrations/000.000.sql may look like this:

create table users (
  name varchar(32) not null,
  primary key (name)
);

The second file, migrations/000.001.sql may look like this:

alter table users
add email varchar(256) not null;

To do the actual migration, then just run:

# ./db-upgrade [ENVIRONMENT NAME]

Example docker-compose.yml for postgres

Execute this first:

mkdir data
chmod o+rwx data
version: '3.7'

services:
  db:
    image: postgres:13
    restart: always
    environment:
      POSTGRES_PASSWORD: postgres
      TZ: 'Europe/Stockholm'
      PGTZ: 'Europe/Stockholm'
    ports:
      - "5432:5432"
    volumes:
      - ./data:/var/lib/postgresql/data
      - /var/run/postgresql:/var/run/postgresql

networks:
  default:
    external: true
    name: postgres
S
Description
No description provided
Readme
1.6 MiB
Languages
PLpgSQL 97.7%
Shell 2.3%