Make matrix-registration use Postgres by default

Now that 0.7.2 is out, the Docker image supports Postgres
and we can do the (SQLite -> Postgres) migration.

I've also found out that we needed to fix up the `tokens.ex_date` column
data type a bit to prevent matrix-registration from raising exceptions
when comparing `datetime.now()` with `ex_date` coming from the database.

Example:

> File "/usr/local/lib/python3.8/site-packages/matrix_registration/tokens.py", line 58, in valid
> expired = self.ex_date < datetime.now()
> TypeError: can't compare offset-naive and offset-aware datetimes
development
Slavi Pantaleev 4 years ago
parent 1bd5c240e5
commit a197968b7f

@ -1317,9 +1317,8 @@ matrix_registration_systemd_required_services_list: |
(['matrix-postgres.service'] if matrix_postgres_enabled else []) (['matrix-postgres.service'] if matrix_postgres_enabled else [])
}} }}
# We'd like to use 'postgres' if matrix_postgres_enabled, but the container image doesn't seem to support that. # Postgres is the default, except if not using `matrix_postgres` (internal postgres)
# Learn more here: https://github.com/ZerataX/matrix-registration/issues/44 matrix_registration_database_engine: "{{ 'postgres' if matrix_postgres_enabled else 'sqlite' }}"
matrix_registration_database_engine: 'sqlite'
matrix_registration_database_password: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'mx.registr.db') | to_uuid }}" matrix_registration_database_password: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'mx.registr.db') | to_uuid }}"
###################################################################### ######################################################################

@ -88,7 +88,6 @@ matrix_registration_admin_secret: ""
matrix_registration_riot_instance: "https://riot.im/app/" matrix_registration_riot_instance: "https://riot.im/app/"
# Default matrix-registration configuration template which covers the generic use case. # Default matrix-registration configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it. # You can customize it by controlling the various variables inside it.
# #

@ -18,6 +18,11 @@
engine_variable_name: 'matrix_registration_database_engine' engine_variable_name: 'matrix_registration_database_engine'
engine_old: 'sqlite' engine_old: 'sqlite'
systemd_services_to_stop: ['matrix-registration.service'] systemd_services_to_stop: ['matrix-registration.service']
# pgloader makes `ex_date` of type `TIMESTAMP WITH TIMEZONE`,
# which makes matrix-registration choke on it later on when comparing dates.
additional_psql_statements_list:
- ALTER TABLE tokens ALTER COLUMN ex_date TYPE TIMESTAMP WITHOUT TIME ZONE;
additional_psql_statements_db_name: "{{ matrix_registration_database_db_name }}"
- import_tasks: "roles/matrix-postgres/tasks/util/migrate_db_to_postgres.yml" - import_tasks: "roles/matrix-postgres/tasks/util/migrate_db_to_postgres.yml"

@ -18,10 +18,3 @@
when: "item.old in vars" when: "item.old in vars"
with_items: with_items:
- {'old': 'matrix_registration_docker_repo', 'new': 'matrix_registration_container_image_self_build_repo'} - {'old': 'matrix_registration_docker_repo', 'new': 'matrix_registration_container_image_self_build_repo'}
- name: Fail if Postgres usage attempted
fail:
msg: >
matrix-registration doesn't support using Postgres just yet.
Learn more here: https://github.com/ZerataX/matrix-registration/issues/44
when: "matrix_registration_database_engine == 'postgres'"

Loading…
Cancel
Save