CREATE TABLE if not exists gis.ogc_service
(
  ogc_service_id text NOT NULL DEFAULT admin.next_id(),
  name text, -- Назва
  service text, -- TMS/WMS/WFS
  url text, -- Шлях
  enabled boolean, -- Опис
  geom geometry, -- Баунд
  updated_by text,
  updated_at timestamp without time zone,
  created_at timestamp without time zone DEFAULT date_trunc('minutes'::text, now()),
  created_by text,
  group_id text, -- Ідентифікатор групи
  ispublic boolean DEFAULT false, -- Чи є сервіс публічним
  service_id text DEFAULT admin.next_id(), -- ID
  srid text, -- srid
  info text,
  scheme text, -- Схема
  category text, -- Категорія
  attribution text, -- Атрибуція
  editor_id text,
  editor_date timestamp without time zone,
  cdate timestamp without time zone DEFAULT date_trunc('minutes'::text, now()),
  uid text,
  files json,
  access_level text DEFAULT 'public'::text, -- Рівень доступу (public, user, admin)
  sub_layers text, -- Під шари (Для WMS)
  isadmin boolean DEFAULT false, -- Ознака доступу лише для адмін частини порталу
  user_group_id text, -- Група користувачів
  url_list text[], -- URL List
  table_name text, -- Таблиця на клік (інтерактивний шар)
  setting json, -- Додаткові налаштування
  CONSTRAINT ogc_service_pkey PRIMARY KEY (ogc_service_id),
  CONSTRAINT gis_ogc_service_group_id_fkey FOREIGN KEY (group_id)
      REFERENCES gis.group_list (group_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);

COMMENT ON TABLE gis.ogc_service IS 'Сервіси';

COMMENT ON COLUMN gis.ogc_service.name IS 'Назва';
COMMENT ON COLUMN gis.ogc_service.service IS 'TMS/WMS/WFS';
COMMENT ON COLUMN gis.ogc_service.url IS 'Шлях';
COMMENT ON COLUMN gis.ogc_service.enabled IS 'Опис';
COMMENT ON COLUMN gis.ogc_service.geom IS 'Баунд';
COMMENT ON COLUMN gis.ogc_service.group_id IS 'Ідентифікатор групи';
COMMENT ON COLUMN gis.ogc_service.ispublic IS 'Чи є сервіс публічним';
COMMENT ON COLUMN gis.ogc_service.service_id IS 'ID';
COMMENT ON COLUMN gis.ogc_service.srid IS 'srid';
COMMENT ON COLUMN gis.ogc_service.scheme IS 'Схема';
COMMENT ON COLUMN gis.ogc_service.category IS 'Категорія';
COMMENT ON COLUMN gis.ogc_service.attribution IS 'Атрибуція';
COMMENT ON COLUMN gis.ogc_service.access_level IS 'Рівень доступу (public, user, admin)';
COMMENT ON COLUMN gis.ogc_service.sub_layers IS 'Під шари (Для WMS)';
COMMENT ON COLUMN gis.ogc_service.isadmin IS 'Ознака доступу лише для адмін частини порталу';
COMMENT ON COLUMN gis.ogc_service.user_group_id IS 'Група користувачів';
COMMENT ON COLUMN gis.ogc_service.url_list IS 'URL List';
COMMENT ON COLUMN gis.ogc_service.table_name IS 'Таблиця на клік (інтерактивний шар)';
COMMENT ON COLUMN gis.ogc_service.setting IS 'Додаткові налаштування';

CREATE INDEX if not exists gis_ogc_service_category_trgm_idx
  ON gis.ogc_service
  USING gin
  (category COLLATE pg_catalog."default" gin_trgm_ops);

CREATE INDEX if not exists gis_ogc_service_enabled_btree_idx
  ON gis.ogc_service
  USING btree
  (enabled);

CREATE INDEX if not exists gis_ogc_service_isadmin_btree_idx
  ON gis.ogc_service
  USING btree
  (ispublic);

CREATE INDEX if not exists gis_ogc_service_ispublic_btree_idx
  ON gis.ogc_service
  USING btree
  (ispublic);

CREATE INDEX if not exists gis_ogc_service_name_gin_idx
  ON gis.ogc_service
  USING gin
  (name COLLATE pg_catalog."default" gin_trgm_ops);

CREATE INDEX if not exists gis_ogc_service_name_gin_idx_lower
  ON gis.ogc_service
  USING gin
  (lower(name) COLLATE pg_catalog."default" gin_trgm_ops);

CREATE INDEX if not exists gis_ogc_service_name_trgm_idx
  ON gis.ogc_service
  USING gin
  (name COLLATE pg_catalog."default" gin_trgm_ops);

CREATE INDEX if not exists gis_ogc_service_service_btree_idx
  ON gis.ogc_service
  USING btree
  (service COLLATE pg_catalog."default");

CREATE INDEX if not exists gis_ogc_service_srid_btree_idx
  ON gis.ogc_service
  USING btree
  (srid COLLATE pg_catalog."default");

alter table gis.ogc_service add column if not exists html text;
comment on column gis.ogc_service.html is 'HTML картки';