2 -- ============LICENSE_START=======================================================
3 -- Copyright (C) 2024 Ericsson
4 -- Modifications Copyright (C) 2024 OpenInfra Foundation Europe
5 -- ================================================================================
6 -- Licensed under the Apache License, Version 2.0 (the "License");
7 -- you may not use this file except in compliance with the License.
8 -- You may obtain a copy of the License at
10 -- http://www.apache.org/licenses/LICENSE-2.0
12 -- Unless required by applicable law or agreed to in writing, software
13 -- distributed under the License is distributed on an "AS IS" BASIS,
14 -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 -- See the License for the specific language governing permissions and
16 -- limitations under the License.
18 -- SPDX-License-Identifier: Apache-2.0
19 -- ============LICENSE_END=========================================================
25 CREATE EXTENSION IF NOT EXISTS postgis;
26 CREATE EXTENSION IF NOT EXISTS postgis_topology;
28 GRANT USAGE ON SCHEMA topology to :pguser;
29 GRANT SELECT ON ALL SEQUENCES IN SCHEMA topology TO :pguser;
30 GRANT SELECT ON ALL TABLES IN SCHEMA topology TO :pguser;
32 CREATE SCHEMA IF NOT EXISTS ties_data;
33 ALTER SCHEMA ties_data OWNER TO :pguser;
34 SET default_tablespace = '';
35 SET default_table_access_method = heap;
39 -- Function to create CONSTRAINT only if it does not exists
40 CREATE OR REPLACE FUNCTION ties_data.create_constraint_if_not_exists (
41 t_name TEXT, c_name TEXT, constraint_sql TEXT
46 IF NOT EXISTS (SELECT constraint_name FROM information_schema.table_constraints WHERE table_name = t_name AND constraint_name = c_name) THEN
47 EXECUTE constraint_sql;
50 $$ language 'plpgsql';
52 -- Update data schema exec status
53 INSERT INTO ties_model.entity_info("schema", "status") VALUES ('ties_data', 'success');
55 CREATE TABLE IF NOT EXISTS ties_data."Sector" (
59 "geo-location" "geography",
60 "REL_FK_serviced-sector" VARCHAR(511),
61 "REL_ID_serviced-sector_serving-namespace" VARCHAR(511)
64 CREATE TABLE IF NOT EXISTS ties_data."Namespace" (
67 "REL_FK_serving-namespace" VARCHAR(511)
70 SELECT ties_data.create_constraint_if_not_exists(
73 'ALTER TABLE ties_data."Sector" ADD CONSTRAINT "PK_Sector_id" PRIMARY KEY ("id");'
76 SELECT ties_data.create_constraint_if_not_exists(
79 'ALTER TABLE ties_data."Namespace" ADD CONSTRAINT "PK_Sector_id" PRIMARY KEY ("id");'
82 SELECT ties_data.create_constraint_if_not_exists(
84 'FK_Sector_REL_FK_serviced-sector',
85 'ALTER TABLE ties_data."Sector" ADD CONSTRAINT "FK_Sector_REL_FK_serviced-sector" FOREIGN KEY ("REL_FK_serviced-sector") REFERENCES ties_data."Namespace" (id) ON DELETE CASCADE;'
88 SELECT ties_data.create_constraint_if_not_exists(
90 'FK_Namespace_REL_FK_serving-namespace',
91 'ALTER TABLE ties_data."Namespace" ADD CONSTRAINT "FK_Namespace_REL_FK_serving-namespace" FOREIGN KEY ("REL_FK_serving-namespace") REFERENCES ties_data."Sector" (id) ON DELETE CASCADE;'
94 SELECT ties_data.create_constraint_if_not_exists(
96 'UNIQUE_Sector_REL_ID_serviced-sector_serving-namespace',
97 'ALTER TABLE ties_data."Sector" ADD CONSTRAINT "UNIQUE_Sector_REL_ID_serviced-sector_serving-namespace" UNIQUE ("REL_ID_serviced-sector_serving-namespace");'