mirror of
https://github.com/Tech-Workers-Coalition-Italia/mobilizon-reshare.git
synced 2025-03-04 03:17:41 +01:00
* added poc * added check for sqlite db * added events test * draft docker-compose-test.yml * improved docker-compose * added support for postgres migrations * add documentation * added some qol to migrations * added migration generation script * removed settings.toml * waiting for postgress in script * commented script * added sample web config * fixed tests * mock memory db * reviewed PR
49 lines
2.2 KiB
Markdown
49 lines
2.2 KiB
Markdown
# Contributing
|
|
## Develop
|
|
|
|
To run pre-commit hooks run `pre-commit install` after cloning the repository.
|
|
|
|
Make sure to have `pre-commit` installed in your active python environment. To install: `pip install pre-commit`. For more info: https://pre-commit.com/.
|
|
|
|
To install dependencies you can either use [Guix](https://github.com/Tech-Workers-Coalition-Italia/mobilizon-reshare/blob/master/doc/development-environment-with-guix.md) or poetry:
|
|
|
|
```shell
|
|
$ poetry install
|
|
Installing dependencies from lock file
|
|
|
|
Package operations: 44 installs, 0 updates, 0 removals
|
|
|
|
[...]
|
|
|
|
Installing the current project: mobilizon-reshare (0.1.0)
|
|
$
|
|
```
|
|
|
|
### Testing
|
|
|
|
To run the test suite, run `scripts/run_pipeline_tests.sh` from the root of the repository.
|
|
|
|
At the moment no integration test is present and they are executed manually. Reach out to us if you want to
|
|
access the testing environment or you want to help automate the integration tests.
|
|
|
|
### How to handle migrations
|
|
|
|
Changes to the data model need to be handled through migrations. We use aerich to manage the migration files.
|
|
Both our CLI and our web service are configured in such a way that migrations are run transparently when the package is
|
|
updated. If you want to test that the update doesn't corrupt your data, we suggest trying the update in a test database.
|
|
|
|
To create a new migration file, use aerich CLI. It will take care of generating the file. If further code is necessary,
|
|
add it to the new migration file.
|
|
|
|
Since we support two database (sqlite and postgres) that have slightly different dialects and since aerich doesn't
|
|
really support this scenario, it is necessary to generate migrations separately and place the migrations files in the
|
|
respective folders.
|
|
|
|
Aerich picks up the migrations according to the scheme of the db in the configuration.
|
|
|
|
Currently the consistency of the migrations for the different databases is not tested so please pay extra care when
|
|
committing a change and request special review.
|
|
|
|
Aerich configuration is specified in the pyproject.toml file. Since it doesn't support multiple databases, we have two
|
|
configuration files that allow to run aerich on different databases if you enter their respective migration folders.
|
|
You can find them in mobilizon_reshare/migrations. |