feat: introduce bin/add-constraints.sh

This commit is contained in:
dancingCycle 2024-03-05 20:43:49 +01:00
parent e6f80e0545
commit 8fb32b188c
3 changed files with 85 additions and 30 deletions

22
bin/add-constraints.sh Normal file
View File

@ -0,0 +1,22 @@
#!/bin/bash
#
echo "Started..."
#Started...
#
# special variable $# is the number of arguments
if [ $# -lt 3 ] ; then
echo 'Call ./<script> <db name> <db user> <db schema>'
exit 1
fi
#
DB_NAME="$1"
echo "DB_NAME: ${DB_NAME}"
DB_USER="$2"
echo "DB_USER: ${DB_USER}"
DB_SCHEMA="$3"
echo "DB_SCHEMA: ${DB_SCHEMA}"
#
psql -h localhost -p 5432 -U $DB_USER -f ./sql/add-constraints.sql -d $DB_NAME -v schema=$DB_SCHEMA
#
echo "Done."
#done.

17
sql/add-constraints.sql Normal file
View File

@ -0,0 +1,17 @@
-- colon before variable: for a prepared statement using named placeholders, this will be a parameter name of the form :name
CREATE SCHEMA IF NOT EXISTS :schema;
SET search_path to :schema, public;
ALTER TABLE :schema.route_bundles ALTER COLUMN long_name SET NOT NULL;
ALTER TABLE :schema.routes ALTER COLUMN short_name SET NOT NULL;
ALTER TABLE :schema.routes ALTER COLUMN route_from SET DEFAULT NULL;
ALTER TABLE :schema.routes ALTER COLUMN route_to SET DEFAULT NULL;
ALTER TABLE :schema.service_levels ALTER COLUMN short_name SET NOT NULL;
ALTER TABLE :schema.service_levels ALTER COLUMN long_name SET DEFAULT NULL;
ALTER TABLE :schema.services ADD FOREIGN KEY(route_id) REFERENCES :schema.routes(id);
ALTER TABLE :schema.services ADD FOREIGN KEY(route_bundle_id) REFERENCES :schema.route_bundles(id);
ALTER TABLE :schema.services ADD FOREIGN KEY(service_level_id) REFERENCES :schema.service_levels(id);

View File

@ -4,56 +4,44 @@ CREATE SCHEMA IF NOT EXISTS :schema;
SET search_path to :schema, public;
--CREATE
DROP TABLE IF EXISTS :schema.service_levels;
CREATE TABLE IF NOT EXISTS :schema.service_levels
(
service_level_id SMALLINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
service_level_short_name VARCHAR(8),
service_level_long_name VARCHAR(64)
);
DROP TABLE IF EXISTS :schema.route_bundles;
CREATE TABLE IF NOT EXISTS :schema.route_bundles
(
route_bundle_id SMALLINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
route_bundle_name VARCHAR(64)
id SMALLINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
long_name VARCHAR(64)
);
DROP TABLE IF EXISTS :schema.routes;
CREATE TABLE IF NOT EXISTS :schema.routes
(
route_id SMALLINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
route_short_name TEXT,
id SMALLINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
short_name TEXT,
route_from TEXT,
route_to TEXT
);
DROP TABLE IF EXISTS :schema.service_levels;
CREATE TABLE IF NOT EXISTS :schema.service_levels
(
id SMALLINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
short_name VARCHAR(8),
long_name VARCHAR(64)
);
DROP TABLE IF EXISTS :schema.services;
CREATE TABLE IF NOT EXISTS :schema.services
(
service_id SMALLINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
service_route_bundle SMALLINT,
service_route_id SMALLINT,
id SMALLINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
route_id SMALLINT,
route_bundle_id SMALLINT,
service_level_id SMALLINT
);
--INSERT
INSERT INTO :schema.service_levels(service_level_short_name, service_level_long_name) VALUES
('1+', '1+'),
('1', '1'),
('2', '2'),
('3', '3'),
('SV', 'Stadtverkehr'),
('NV', 'Nachtverkehr'),
('BB', 'Buergerbus'),
('ALT', 'AnrufLinienTaxi');
--TODO Adjust sequence counter after insert query!
INSERT INTO :schema.route_bundles(route_bundle_name) VALUES
INSERT INTO :schema.route_bundles(long_name) VALUES
('Bremen Bus'),
('Bremen Straßenbahn'),
('Bremerhaven'),
@ -62,7 +50,7 @@ INSERT INTO :schema.route_bundles(route_bundle_name) VALUES
('LK Ammerland Ost');
--TODO Adjust sequence counter after insert query!
INSERT INTO :schema.routes(route_short_name, route_from, route_to) VALUES
INSERT INTO :schema.routes(short_name, route_from, route_to) VALUES
('1', 'Huchting', 'Bf Mahndort'),
('1S/E', 'Osterholz', 'Kirchbachstrasse'),
('2', 'Groepelingen', 'Sebalsbrueck'),
@ -77,3 +65,31 @@ INSERT INTO :schema.routes(route_short_name, route_from, route_to) VALUES
('331', 'Conneforde', 'Wiefelstede'),
('347', 'Rastede', 'Rastede');
--TODO Adjust sequence counter after insert query!
--INSERT
INSERT INTO :schema.service_levels(short_name, long_name) VALUES
('1+', '1+'),
('1', '1'),
('2', '2'),
('3', '3'),
('SV', 'Stadtverkehr'),
('NV', 'Nachtverkehr'),
('BB', 'Buergerbus'),
('ALT', 'AnrufLinienTaxi');
--TODO Adjust sequence counter after insert query!
INSERT INTO :schema.services(route_id, route_bundle_id, service_level_id) VALUES
(1, 2, 5),
(2, 2, 5),
(3, 2, 5),
(4, 1, 5),
(5, 1, 5),
(6, 3, 5),
(7, 3, 5),
(8, 3, 6),
(9, 3, 8),
(10, 5, 1),
(11, 5, 3),
(12, 5, 4),
(13, 6, 7);
--TODO Adjust sequence counter after insert query!