@cardstack/postgresql
v0.14.38-patch.0
Published
PostgreSQL data source plugin for @cardstack/hub.
Downloads
725
Keywords
Readme
PostgreSQL data source plugin for Cardstack
This plugin allows you to use a PostgreSQL database as storage for your Cardstack Hub server.
Current Limitations
There's not yet any configuration for choosing which tables & columns will be included or how to rename them for use within the Hub. Therefore:
- every table must have an
id
column and that column must be marked in PostgreSQL as the primary key. - the
id
must be of typevarchar
(all cardstack ids allow arbitrary alphanumeric strings) - if you want automatic id generation, you can use something like
create sequence article_id_seq; create table articles (id varchar primary key default cast(nextval('article_id_seq') as varchar));
- you may not have a
type
column (your JSONAPI type comes from the table name) - your column names must be globally unique throughout the Hub (this is always a requirement for Fields in the hub, and your column names are mapping one-to-one with fields)
Required database configuration
I've been testing with PostgreSQL 9.6. Minimum PostgreSQL version is most likely 9.4.
To enable efficient incremental indexing of the database, we use Logical Decoding, which means you will need to set the following in postgresql.conf
:
wal_level = logical
max_replication_slots = 1 # Any number greater than 0 will work
If you are using AWS RDS, the AWS-specific setting you need in your parameter group is rds.logical_replication
.
The test suite is configured to talk to a PostgreSQL docker container. You can start it like:
docker run --name cardstack-postgres -d --rm -p 5432:5432 cardstack/pg-test
And stop it like:
docker stop cardstack-postgres