mirror of
https://github.com/lnbits/lnbits.git
synced 2025-09-29 05:12:39 +02:00
fix migrations, add documentation, hopefully fix workflow (#899)
* fix migrations, add documentation, hopefully fix workflow * renaming to test-migration and add migration Co-authored-by: dni <dni.khr@gmail.com>
This commit is contained in:
15
.github/workflows/migrations.yml
vendored
15
.github/workflows/migrations.yml
vendored
@@ -9,9 +9,9 @@ jobs:
|
|||||||
postgres:
|
postgres:
|
||||||
image: postgres:latest
|
image: postgres:latest
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: lnbits
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: lnbits
|
||||||
POSTGRES_DB: postgres
|
POSTGRES_DB: migration
|
||||||
ports:
|
ports:
|
||||||
# maps tcp port 5432 on service container to the host
|
# maps tcp port 5432 on service container to the host
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
@@ -36,11 +36,4 @@ jobs:
|
|||||||
sudo apt install unzip
|
sudo apt install unzip
|
||||||
- name: Run migrations
|
- name: Run migrations
|
||||||
run: |
|
run: |
|
||||||
rm -rf ./data
|
make test-migration
|
||||||
mkdir -p ./data
|
|
||||||
export LNBITS_DATA_FOLDER="./data"
|
|
||||||
unzip tests/data/mock_data.zip -d ./data
|
|
||||||
timeout 5s poetry run lnbits --host 0.0.0.0 --port 5001 || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi
|
|
||||||
export LNBITS_DATABASE_URL="postgres://postgres:postgres@0.0.0.0:5432/postgres"
|
|
||||||
timeout 5s poetry run lnbits --host 0.0.0.0 --port 5001 || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi
|
|
||||||
poetry run python tools/conv.py
|
|
||||||
|
19
Makefile
19
Makefile
@@ -46,5 +46,24 @@ test-venv:
|
|||||||
PYTHONUNBUFFERED=1 \
|
PYTHONUNBUFFERED=1 \
|
||||||
./venv/bin/pytest --durations=1 -s --cov=lnbits --cov-report=xml tests
|
./venv/bin/pytest --durations=1 -s --cov=lnbits --cov-report=xml tests
|
||||||
|
|
||||||
|
test-migration:
|
||||||
|
rm -rf ./migration-data
|
||||||
|
mkdir -p ./migration-data
|
||||||
|
unzip tests/data/mock_data.zip -d ./migration-data
|
||||||
|
HOST=0.0.0.0 \
|
||||||
|
PORT=5002 \
|
||||||
|
LNBITS_DATA_FOLDER="./migration-data" \
|
||||||
|
timeout 5s poetry run lnbits --host 0.0.0.0 --port 5002 || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi
|
||||||
|
HOST=0.0.0.0 \
|
||||||
|
PORT=5002 \
|
||||||
|
LNBITS_DATABASE_URL="postgres://lnbits:lnbits@localhost:5432/migration" \
|
||||||
|
timeout 5s poetry run lnbits --host 0.0.0.0 --port 5002 || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi
|
||||||
|
LNBITS_DATA_FOLDER="./migration-data" \
|
||||||
|
LNBITS_DATABASE_URL="postgres://lnbits:lnbits@localhost:5432/migration" \
|
||||||
|
poetry run python tools/conv.py
|
||||||
|
|
||||||
|
migration:
|
||||||
|
poetry run python tools/conv.py
|
||||||
|
|
||||||
bak:
|
bak:
|
||||||
# LNBITS_DATABASE_URL=postgres://postgres:postgres@0.0.0.0:5432/postgres
|
# LNBITS_DATABASE_URL=postgres://postgres:postgres@0.0.0.0:5432/postgres
|
||||||
|
@@ -48,4 +48,25 @@ LNbits currently supports SQLite and PostgreSQL databases. There is a migration
|
|||||||
|
|
||||||
### Adding mock data to `mock_data.zip`
|
### Adding mock data to `mock_data.zip`
|
||||||
|
|
||||||
`mock_data.zip` contains a few lines of sample SQLite data and is used in automated GitHub test to see whether your migration in `conv.py` works. Run your extension and save a few lines of data into a SQLite `your_extension.sqlite3` file. Unzip `tests/data/mock_data.zip`, add `your_extension.sqlite3` and zip it again. Add the updated `mock_data.zip` to your PR.
|
`mock_data.zip` contains a few lines of sample SQLite data and is used in automated GitHub test to see whether your migration in `conv.py` works. Run your extension and save a few lines of data into a SQLite `your_extension.sqlite3` file. Unzip `tests/data/mock_data.zip`, add `your_extension.sqlite3`, updated `database.sqlite3` and zip it again. Add the updated `mock_data.zip` to your PR.
|
||||||
|
|
||||||
|
### running migration locally
|
||||||
|
you will need a running postgres database
|
||||||
|
|
||||||
|
#### create lnbits user for migration database
|
||||||
|
```console
|
||||||
|
sudo su - postgres -c "psql -c 'CREATE ROLE lnbits LOGIN PASSWORD 'lnbits';'"
|
||||||
|
```
|
||||||
|
#### create migration database
|
||||||
|
```console
|
||||||
|
sudo su - postgres -c "psql -c 'CREATE DATABASE migration;'"
|
||||||
|
```
|
||||||
|
#### run the migration
|
||||||
|
```console
|
||||||
|
make test-migration
|
||||||
|
```
|
||||||
|
sudo su - postgres -c "psql -c 'CREATE ROLE lnbits LOGIN PASSWORD 'lnbits';'"
|
||||||
|
#### clean migration database afterwards, fails if you try again
|
||||||
|
```console
|
||||||
|
sudo su - postgres -c "psql -c 'DROP DATABASE IF EXISTS migration;'"
|
||||||
|
```
|
||||||
|
@@ -170,8 +170,9 @@ LNBITS_DATABASE_URL="postgres://postgres:postgres@localhost/lnbits"
|
|||||||
|
|
||||||
# START LNbits
|
# START LNbits
|
||||||
# STOP LNbits
|
# STOP LNbits
|
||||||
# on the LNBits folder, locate and edit 'tools/conv.py' with the relevant credentials
|
poetry run python tools/conv.py
|
||||||
python3 tools/conv.py
|
# or
|
||||||
|
make migration
|
||||||
```
|
```
|
||||||
|
|
||||||
Hopefully, everything works and get migrated... Launch LNbits again and check if everything is working properly.
|
Hopefully, everything works and get migrated... Launch LNbits again and check if everything is working properly.
|
||||||
|
Binary file not shown.
@@ -19,16 +19,12 @@ env.read_env()
|
|||||||
# Change these values as needed
|
# Change these values as needed
|
||||||
|
|
||||||
|
|
||||||
sqfolder = "data/"
|
sqfolder = env.str("LNBITS_DATA_FOLDER", default=None)
|
||||||
|
|
||||||
LNBITS_DATABASE_URL = env.str("LNBITS_DATABASE_URL", default=None)
|
LNBITS_DATABASE_URL = env.str("LNBITS_DATABASE_URL", default=None)
|
||||||
if LNBITS_DATABASE_URL is None:
|
if LNBITS_DATABASE_URL is None:
|
||||||
pgdb = "lnbits"
|
print("missing LNBITS_DATABASE_URL")
|
||||||
pguser = "lnbits"
|
sys.exit(1)
|
||||||
pgpswd = "postgres"
|
|
||||||
pghost = "localhost"
|
|
||||||
pgport = "5432"
|
|
||||||
pgschema = ""
|
|
||||||
else:
|
else:
|
||||||
# parse postgres://lnbits:postgres@localhost:5432/lnbits
|
# parse postgres://lnbits:postgres@localhost:5432/lnbits
|
||||||
pgdb = LNBITS_DATABASE_URL.split("/")[-1]
|
pgdb = LNBITS_DATABASE_URL.split("/")[-1]
|
||||||
|
Reference in New Issue
Block a user