Work in progress
Prerequisites
- Agree Scheme changes (ie. create proposal page for the required schema change e.g. with proposed yang file)
Example: CPS-677: Support 'public' Cm Handle Properties
Build Docker for Postgres
To start an Postgres database instance using docker issue the following command
docker run --name postgres -p 5432:5432 -d -e POSTGRES_DB=cpsdb -e POSTGRES_USER=cps -e POSTGRES_PASSWORD=cps postgres:13.2-alpine
Adding New Tables
To add new tables to tables within CPS using the Liquibase change-log go to the 01-createCPSTables.yaml within the cps-ri->src->main->resources->changelog→db.changes directory.
Under the databaseChangeLog object each change-set is defined with a unique id (Similar to how an array is defined within YAML).
Here the columns are also defined, along with the constraints of a specific column.
To add a new table, under the latest change-set add a new change-set, incrementing the ID by one.
- changeSet: id: 1-38 author: cps
Define a changes object, all new edits will go under this section. Create a new createTable object, and under here the table name can be defined along with the column information/constraints as stated above.
Table once created within SqlDeveloper
Adding/Editing Columns
Once the table is created, columns can be added and edited using a similar syntax to above.
To add foreign key constraints, within the 01-createCPSTables.yaml file create a new change-set and increment the change-set id as done above.
In the following example, I have created a second test table, which will contain a foreign key shared with the primary key of the first test_table.
From the table above we have created a column of type integer called test_table_pk. This is a reference to the primary key within the first test table created above, which will be our foreign key in this table.
Below is the syntax within YAML for creating a foreign key relation between both tables, the base table and column being the table we are creating the constraint on, and the referenced table and column being the table which contains the PK column we are creating our FK relationship with.
test table with fk model.