feat: introduce bin/add-constraints.sh
This commit is contained in:
parent
e6f80e0545
commit
8fb32b188c
|
@ -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.
|
|
@ -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);
|
|
@ -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!
|
||||
|
|
Loading…
Reference in New Issue