forked from 3wordchant/capsul-flask
47 lines
2.1 KiB
Markdown
47 lines
2.1 KiB
Markdown
|
# Working with the Capsul database
|
||
|
|
||
|
## Running manual database queries
|
||
|
|
||
|
You can manually mess around with the database like this:
|
||
|
|
||
|
```
|
||
|
pipenv run flask cli sql -f test.sql
|
||
|
```
|
||
|
|
||
|
```
|
||
|
pipenv run flask cli sql -c 'SELECT * FROM vms'
|
||
|
```
|
||
|
|
||
|
This one selects the vms table with the column name header:
|
||
|
|
||
|
```
|
||
|
pipenv run flask cli sql -c "SELECT string_agg(column_name::text, ', ') from information_schema.columns WHERE table_name='vms'; SELECT * from vms"
|
||
|
```
|
||
|
|
||
|
How to modify a payment manually, like if you get a chargeback or to fix customer payment issues:
|
||
|
|
||
|
```
|
||
|
$ pipenv run flask cli sql -c "SELECT id, created, email, dollars, invalidated from payments"
|
||
|
1, 2020-05-05T00:00:00, forest.n.johnson@gmail.com, 20.00, FALSE
|
||
|
|
||
|
$ pipenv run flask cli sql -c "UPDATE payments SET invalidated = True WHERE id = 1"
|
||
|
1 rows affected.
|
||
|
|
||
|
$ pipenv run flask cli sql -c "SELECT id, created, email, dollars, invalidated from payments"
|
||
|
1, 2020-05-05T00:00:00, forest.n.johnson@gmail.com, 20.00, TRUE
|
||
|
```
|
||
|
|
||
|
## Database schema management
|
||
|
|
||
|
capsulflask has a concept of a schema version. When the application starts, it will query the database for a table named `schemaversion` that has one row and one column (`version`). If the `version` it finds is not equal to the `desiredSchemaVersion` variable set in `db.py`, it will run migration scripts from the `schema_migrations` folder one by one until the `schemaversion` table shows the correct version.
|
||
|
|
||
|
For example, the script named `02_up_xyz.sql` should contain code that migrates the database from schema version 1 to schema version 2. Likewise, the script `02_down_xyz.sql` should contain code that migrates from schema version 2 back to schema version 1.
|
||
|
|
||
|
**IMPORTANT: if you need to make changes to the schema, make a NEW schema version. DO NOT EDIT the existing schema versions.**
|
||
|
|
||
|
In general, for safety, schema version upgrades should not delete data. Schema version downgrades will simply throw an error and exit for now.
|
||
|
|
||
|
## how to view the logs on the database server (legion.cyberia.club)
|
||
|
|
||
|
`sudo -u postgres pg_dump capsul-flask | gzip -9 > capsul-backup-2021-02-15.gz`
|