Script co comprobación de existencia de objetos, para poder ejecutar

despliegue automático en base de datos.
This commit is contained in:
Marcos Garcia Nuñez
2019-12-13 18:26:55 +01:00
parent 1715f2356a
commit c33bbf0de6

View File

@@ -1,40 +1,88 @@
/* DO
DROP TABLE myhealth.Administrator; $$
DROP TABLE myhealth.FamilyDoctor; begin
DROP TABLE myhealth.MedicalSpecialty;
DROP TABLE myhealth.MedicalTest;
DROP TABLE myhealth.Patient;
DROP TABLE myhealth.PrimaryHealthCareCenter;
DROP TABLE myhealth.Question;
DROP TABLE myhealth.Response;
DROP TABLE myhealth.SpecialistDoctor;
DROP TABLE myhealth.Visit;
DROP SEQUENCE myhealth.ProfesionalNumber; IF NOT EXISTS(SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'myhealth') THEN
DROP SEQUENCE myhealth.CodigoIdentificacionPaciente CREATE SCHEMA myhealth;
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname='usrmyhealth') THEN
create user usrmyhealth with encrypted password 'myhealth.123';
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname='USER') THEN
create user "USER" with encrypted password 'PASSWORD';
END IF;
GRANT ALL ON SCHEMA myhealth TO "USER";
GRANT ALL ON SCHEMA myhealth TO usrmyhealth;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='administrator') THEN
drop table myhealth.administrator;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='familydoctor') THEN
drop table myhealth.familydoctor;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='medicalspecialty') THEN
drop table myhealth.medicalspecialty;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='medicaltest') THEN
drop table myhealth.medicaltest;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='patient') THEN
drop table myhealth.patient;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='primaryhealthcarecenter') THEN
drop table myhealth.primaryhealthcarecenter;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='question') THEN
drop table myhealth.question;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='response') THEN
drop table myhealth.response;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='specialistdoctor') THEN
drop table myhealth.specialistdoctor;
end if;
if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='visit') THEN
drop table myhealth.visit;
end if;
/*
drop table myhealth.administrator;
drop table myhealth.familydoctor;
drop table myhealth.medicalspecialty;
drop table myhealth.medicaltest;
drop table myhealth.patient;
drop table myhealth.primaryhealthcarecenter;
drop table myhealth.question;
drop table myhealth.response;
drop table myhealth.specialistdoctor;
drop table myhealth.visit;
*/ */
if exists (SELECT 1 FROM pg_sequences WHERE schemaname='myhealth' and sequencename='profesionalnumber') THEN
drop sequence myhealth.profesionalnumber;
end if;
if exists (SELECT 1 FROM pg_sequences WHERE schemaname='myhealth' and sequencename='codigoidentificacionpaciente') THEN
drop sequence myhealth.codigoidentificacionpaciente;
end if;
CREATE SEQUENCE myhealth.ProfesionalNumber CREATE SEQUENCE myhealth.ProfesionalNumber
INCREMENT 1 INCREMENT 1
START 1000 START 1000
MINVALUE 1000 MINVALUE 1000
CACHE 1; CACHE 1;
ALTER SEQUENCE myhealth.ProfesionalNumber OWNER TO "USER";
CREATE SEQUENCE myhealth.CodigoIdentificacionPaciente CREATE SEQUENCE myhealth.CodigoIdentificacionPaciente
INCREMENT 1 INCREMENT 1
START 1000 START 1000
MINVALUE 1000 MINVALUE 1000
CACHE 1; CACHE 1;
ALTER SEQUENCE myhealth.CodigoIdentificacionPaciente OWNER TO "USER";
-- Table: myhealth.administrator -- Table: myhealth.administrator
-- DROP TABLE myhealth.administrator; -- DROP TABLE myhealth.administrator;
CREATE TABLE myhealth.administrator CREATE TABLE myhealth.administrator
( (
email VARCHAR(120) COLLATE pg_catalog."default" NOT NULL, email VARCHAR(120) COLLATE pg_catalog."default" NOT NULL,
@@ -64,6 +112,9 @@ CREATE TABLE myhealth.familydoctor
) )
TABLESPACE pg_default; TABLESPACE pg_default;
CREATE UNIQUE INDEX family_doctor_professionaln_index
ON myhealth.familydoctor (professionalnumber);
ALTER TABLE myhealth.familydoctor ALTER TABLE myhealth.familydoctor
OWNER to "USER"; OWNER to "USER";
@@ -122,24 +173,12 @@ CREATE TABLE myhealth.patient
) )
TABLESPACE pg_default; TABLESPACE pg_default;
CREATE UNIQUE INDEX patient_pic_index
ON myhealth.patient (personalIdentificationCode);
ALTER TABLE myhealth.patient ALTER TABLE myhealth.patient
OWNER to "USER"; OWNER to "USER";
-- Table: myhealth.location
-- DROP TABLE myhealth.location;
CREATE TABLE myhealth.location
(
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
name VARCHAR(100) COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT primarylocation_pkey PRIMARY KEY (id)
)
TABLESPACE pg_default;
ALTER TABLE myhealth.location
OWNER to "USER";
-- Table: myhealth.primaryhealthcarecenter -- Table: myhealth.primaryhealthcarecenter
-- DROP TABLE myhealth.primaryhealthcarecenter; -- DROP TABLE myhealth.primaryhealthcarecenter;
@@ -147,8 +186,8 @@ ALTER TABLE myhealth.location
CREATE TABLE myhealth.primaryhealthcarecenter CREATE TABLE myhealth.primaryhealthcarecenter
( (
id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
name character varying(150) COLLATE pg_catalog."default" NOT NULL, name VARCHAR(150) COLLATE pg_catalog."default" NOT NULL,
location character varying(512) COLLATE pg_catalog."default", location VARCHAR(512) COLLATE pg_catalog."default",
CONSTRAINT primaryhealthcarecenter_pkey PRIMARY KEY (id) CONSTRAINT primaryhealthcarecenter_pkey PRIMARY KEY (id)
) )
TABLESPACE pg_default; TABLESPACE pg_default;
@@ -208,6 +247,9 @@ CREATE TABLE myhealth.specialistdoctor
) )
TABLESPACE pg_default; TABLESPACE pg_default;
CREATE UNIQUE INDEX specialistdoctor_professionaln_index
ON myhealth.specialistdoctor (professionalnumber);
ALTER TABLE myhealth.specialistdoctor ALTER TABLE myhealth.specialistdoctor
OWNER to "USER"; OWNER to "USER";
@@ -231,3 +273,5 @@ TABLESPACE pg_default;
ALTER TABLE myhealth.visit ALTER TABLE myhealth.visit
OWNER to "USER"; OWNER to "USER";
END;
$$