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=========================================================
24 CREATE SCHEMA IF NOT EXISTS ties_groups;
25 ALTER SCHEMA ties_groups OWNER TO topology_exposure_user;
26 SET default_tablespace = '';
27 SET default_table_access_method = heap;
29 SET ROLE 'topology_exposure_user';
31 -- Function to create CONSTRAINT only if it does not exists
32 CREATE OR REPLACE FUNCTION ties_groups.create_constraint_if_not_exists (
33 t_name TEXT, c_name TEXT, constraint_sql TEXT
38 IF NOT EXISTS (SELECT constraint_name FROM information_schema.table_constraints WHERE table_schema = 'ties_groups' AND table_name = t_name AND constraint_name = c_name) THEN
39 EXECUTE constraint_sql;
42 $$ language 'plpgsql';
44 CREATE TABLE IF NOT EXISTS ties_groups."groups" (
45 "id" VARCHAR(150) PRIMARY KEY,
46 "name" VARCHAR(150) NOT NULL,
47 "type" VARCHAR(50) NOT NULL
50 CREATE TABLE IF NOT EXISTS ties_groups."static_groups" (
52 "topology_type" TEXT NOT NULL,
53 "provided_members_ids" TEXT[] NOT NULL,
54 PRIMARY KEY ("id", "topology_type"),
55 FOREIGN KEY ("id") REFERENCES ties_groups."groups" ("id") ON DELETE CASCADE
58 CREATE TABLE IF NOT EXISTS ties_groups."dynamic_groups" (
59 "id" VARCHAR(150) PRIMARY KEY,
60 "criteria" JSONB NOT NULL,
61 FOREIGN KEY ("id") REFERENCES ties_groups."groups" ("id") ON DELETE CASCADE
64 SELECT ties_groups.create_constraint_if_not_exists(
67 'ALTER TABLE ties_groups."groups" ADD CONSTRAINT "CHECK_groups_type" CHECK ("type" IN (''static'', ''dynamic''))'