Pre-built Images
The pre-built Postgres Docker image described in Docker Images may be adequate for a production deployment. The image is stateless and can be easily scaled horizontally to increase capacity.
Database Schema
The schema defined in
postgres/schema.sql
must be applied to the database before the container will function.
The schema is stable, and any changes to the schema will be made in a major version with migration instructions provided.
An integration may:
- Add additional tables to the database
- Add additional columns to the
clients
table. If those columns do not have default values, ensure the server is configured withCREATE_CLIENTS=false
as described below. - Insert rows into the
clients
table, using default values for all columns exceptclient_id
and any application-specific columns. - Delete rows from the
clients
table. Note that this table is configured to automatically delete all data associated with a client when the client's row is deleted.
Managing Clients
By default, taskchampion-sync-server creates a new, empty client when it
receives a connection from an unrecognized client ID. Setting
CREATE_CLIENTS=false
disables this functionality, and is recommended in
production deployments to avoid abuse.
In this configuration, it is the responsibility of the integration to create
new client rows when desired, using a statement like INSERT into clients (client_id) values ($1)
with the new client ID as a parameter. Similarly,
clients may be deleted, along with all stored task data, using a statement like
DELETE from clients where client_id = $1
.