db_query("SELECT kalender_id FROM lehre.tbl_kalender LIMIT 1")) { $qry = "CREATE TABLE lehre.tbl_kalender ( kalender_id bigserial NOT NULL, von timestamp NOT NULL, bis timestamp NOT NULL, typ character varying(32), status_kurzbz character varying(32), vorgaenger_kalender_id bigint, insertamum timestamp DEFAULT now(), insertvon character varying(32), updateamum timestamp DEFAULT now(), updatevon character varying(32), CONSTRAINT tbl_kalender_pk PRIMARY KEY (kalender_id) ); COMMENT ON TABLE lehre.tbl_kalender IS 'Schedule Calendar Events'; CREATE TABLE lehre.tbl_kalender_typ ( typ character varying(32) NOT NULL, CONSTRAINT tbl_kalender_typ_pk PRIMARY KEY (typ) ); COMMENT ON TABLE lehre.tbl_kalender_typ IS 'Type of Calendar Events'; INSERT INTO lehre.tbl_kalender_typ (typ) VALUES (E'lehreinheit'); INSERT INTO lehre.tbl_kalender_typ (typ) VALUES (E'reservierung'); INSERT INTO lehre.tbl_kalender_typ (typ) VALUES (E'event'); CREATE TABLE lehre.tbl_kalender_lehreinheit ( lehreinheit_id integer NOT NULL, kalender_id bigint NOT NULL, CONSTRAINT tbl_kalender_lehreinheit_pk PRIMARY KEY (lehreinheit_id,kalender_id) ); COMMENT ON TABLE lehre.tbl_kalender_lehreinheit IS 'Connects Calender Events to Courses'; ALTER TABLE lehre.tbl_kalender_lehreinheit ADD CONSTRAINT tbl_lehreinheit_fk FOREIGN KEY (lehreinheit_id) REFERENCES lehre.tbl_lehreinheit (lehreinheit_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE; CREATE TABLE lehre.tbl_kalender_ort ( kalender_ort_id bigserial NOT NULL, location text, ort_kurzbz character varying(32), kalender_id bigint, CONSTRAINT tbl_kalender_ort_pk PRIMARY KEY (kalender_ort_id) ); COMMENT ON TABLE lehre.tbl_kalender_ort IS E'Connects one Calendar Entry to multiple Rooms'; COMMENT ON COLUMN lehre.tbl_kalender_ort.location IS E'Text Description if not a physical inhouse Room (External Location, Conference Link, etc)'; ALTER TABLE lehre.tbl_kalender_ort ADD CONSTRAINT tbl_kalender_fk FOREIGN KEY (kalender_id) REFERENCES lehre.tbl_kalender (kalender_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_kalender_ort ADD CONSTRAINT tbl_ort_fk FOREIGN KEY (ort_kurzbz) REFERENCES public.tbl_ort (ort_kurzbz) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_kalender_lehreinheit ADD CONSTRAINT tbl_kalender_fk FOREIGN KEY (kalender_id) REFERENCES lehre.tbl_kalender (kalender_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE; CREATE TABLE lehre.tbl_kalender_status ( status_kurzbz character varying(32) NOT NULL, bezeichnung text, bezeichnung_mehrsprachig character varying(255)[] NOT NULL, sort smallint, CONSTRAINT tbl_kalender_status_pk PRIMARY KEY (status_kurzbz) ); COMMENT ON TABLE lehre.tbl_kalender_status IS 'Calender visibility Status'; INSERT INTO lehre.tbl_kalender_status (status_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'planning', E'planning', E'{\"In Planung\", \"Planning\"}', 1); INSERT INTO lehre.tbl_kalender_status (status_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'sync_preview', E'sync_preview', E'{\"Synchronisierung für Voransicht\", \"Sync for Preview\"}', 2); INSERT INTO lehre.tbl_kalender_status (status_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'preview', E'preview', E'{\"Voransicht\", \"Preview\"}', 3); INSERT INTO lehre.tbl_kalender_status (status_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'sync_live', E'sync_live', E'{\"Synchronisierung für Live\", \"Sync for Live\"}', 4); INSERT INTO lehre.tbl_kalender_status (status_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'live', E'Sichtbar für Studierende', E'{\"Live\", \"Live\"}', 5); INSERT INTO lehre.tbl_kalender_status (status_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'todelete', E'todelete', E'{\"Zu löschen\", \"To delete\"}', 6); INSERT INTO lehre.tbl_kalender_status (status_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'deleted', E'deleted', E'{\"Gelöscht\", \"Deleted\"}', 7); INSERT INTO lehre.tbl_kalender_status (status_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'archived', E'archived', E'{\"Archiviert\", \"Archived\"}', 8); ALTER TABLE lehre.tbl_kalender ADD CONSTRAINT tbl_kalender_status_fk FOREIGN KEY (status_kurzbz) REFERENCES lehre.tbl_kalender_status (status_kurzbz) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_kalender ADD CONSTRAINT tbl_kalender_typ_fk FOREIGN KEY (typ) REFERENCES lehre.tbl_kalender_typ (typ) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender to vilesci; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender to web; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_status to vilesci; GRANT SELECT ON lehre.tbl_kalender_status to web; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_lehreinheit to vilesci; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_lehreinheit to web; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_ort to vilesci; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_ort to web; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_typ to vilesci; GRANT SELECT ON lehre.tbl_kalender_typ to web; CREATE TABLE sync.tbl_stundenplandev_kalender( stundenplandev_kalender_id bigserial NOT NULL, stundenplandev_id integer NOT NULL, kalender_id bigint NOT NULL, lastupdate timestamp, CONSTRAINT tbl_stundenplandev_kalender_pk PRIMARY KEY (stundenplandev_kalender_id) ); GRANT SELECT, UPDATE, INSERT, DELETE ON sync.tbl_stundenplandev_kalender to vilesci; COMMENT ON TABLE sync.tbl_stundenplandev_kalender IS 'Migration from old Stundenplan to new Kalender Table'; GRANT USAGE ON lehre.tbl_kalender_kalender_id_seq TO vilesci; GRANT USAGE ON lehre.tbl_kalender_kalender_id_seq TO web; GRANT USAGE ON sync.tbl_stundenplandev_kalender_stundenplandev_kalender_id_seq TO vilesci; GRANT USAGE ON lehre.tbl_kalender_ort_kalender_ort_id_seq TO vilesci; CREATE INDEX idx_kalender_ort_kalender_id ON lehre.tbl_kalender_ort USING btree (kalender_id); CREATE INDEX idx_kalender_ort_kalender_id_ort_kurzbz ON lehre.tbl_kalender_ort USING btree (ort_kurzbz, kalender_id); CREATE INDEX idx_kalender_von ON lehre.tbl_kalender USING btree (von); "; if(!$db->db_query($qry)) echo 'lehre.tbl_kalender: '.$db->db_last_error().'
'; else echo '
lehre.tbl_kalender: neue Tabellen hinzugefuegt'; } if(!$result = @$db->db_query("SELECT kalender_id FROM lehre.tbl_kalender_event LIMIT 1")) { $qry = "CREATE TABLE lehre.tbl_kalender_event ( kalender_id bigint NOT NULL, titel character varying(255), beschreibung text, CONSTRAINT tbl_kalender_event_pk PRIMARY KEY (kalender_id) ); ALTER TABLE lehre.tbl_kalender_event ADD CONSTRAINT tbl_kalender_event_fk FOREIGN KEY (kalender_id) REFERENCES lehre.tbl_kalender (kalender_id) ON DELETE RESTRICT ON UPDATE CASCADE; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_event to vilesci; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_event to web; CREATE TABLE lehre.tbl_kalender_event_rolle ( rolle_kurzbz character varying(32) NOT NULL, bezeichnung text, bezeichnung_mehrsprachig character varying(255)[] NOT NULL, sort smallint, CONSTRAINT tbl_kalender_event_rolle_pk PRIMARY KEY (rolle_kurzbz) ); INSERT INTO lehre.tbl_kalender_event_rolle (rolle_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'organisator', E'Organisierende', E'{\"Organisierende\", \"Organizer\"}', 1); INSERT INTO lehre.tbl_kalender_event_rolle (rolle_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES (E'teilnehmer', E'Teilnehmende', E'{\"Teilnehmende\", \"Participant\"}', 2); GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_event_rolle to vilesci; GRANT SELECT ON lehre.tbl_kalender_event_rolle to web; CREATE TABLE lehre.tbl_kalender_event_teilnehmer ( kalender_event_teilnehmer_id bigserial NOT NULL, kalender_id bigint NOT NULL, rolle_kurzbz character varying(32), uid character varying(32), studiensemester_kurzbz character varying(32), gruppe_kurzbz character varying(32), studiengang_kz integer, semester smallint, verband character(1), gruppe character(1), studentenlehrverband_id integer, CONSTRAINT tbl_kalender_event_teilnehmer_pk PRIMARY KEY (kalender_event_teilnehmer_id) ); ALTER TABLE lehre.tbl_kalender_event_teilnehmer ADD CONSTRAINT tbl_kalender_event_fk FOREIGN KEY (kalender_id) REFERENCES lehre.tbl_kalender (kalender_id) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_kalender_event_teilnehmer ADD CONSTRAINT tbl_kalender_event_uid_fk FOREIGN KEY (uid) REFERENCES public.tbl_benutzer (uid) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_kalender_event_teilnehmer ADD CONSTRAINT tbl_kalender_event_rolle_fk FOREIGN KEY (rolle_kurzbz) REFERENCES lehre.tbl_kalender_event_rolle (rolle_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_kalender_event_teilnehmer ADD CONSTRAINT tbl_gruppe_fk FOREIGN KEY (gruppe_kurzbz) REFERENCES public.tbl_gruppe (gruppe_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_kalender_event_teilnehmer ADD CONSTRAINT tbl_lehrverband_fk FOREIGN KEY (studiengang_kz, semester, verband, gruppe) REFERENCES public.tbl_lehrverband(studiengang_kz, semester, verband, gruppe) ON DELETE RESTRICT ON UPDATE CASCADE; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_event_teilnehmer to vilesci; GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_kalender_event_teilnehmer to web; GRANT USAGE ON lehre.tbl_kalender_event_teilnehmer_kalender_event_teilnehmer_id_seq TO vilesci; GRANT USAGE ON lehre.tbl_kalender_event_teilnehmer_kalender_event_teilnehmer_id_seq TO web; CREATE TABLE sync.tbl_reservierung_kalender( reservierung_kalender_id bigserial NOT NULL, reservierung_id integer NOT NULL, kalender_id bigint NOT NULL, lastupdate timestamp, CONSTRAINT tbl_reservierung_kalender_pk PRIMARY KEY (reservierung_kalender_id) ); GRANT SELECT, UPDATE, INSERT, DELETE ON sync.tbl_reservierung_kalender to vilesci; COMMENT ON TABLE sync.tbl_reservierung_kalender IS 'Migration from old Reservierung to new Kalender Table'; GRANT USAGE ON sync.tbl_reservierung_kalender_reservierung_kalender_id_seq TO vilesci; "; if(!$db->db_query($qry)) echo 'lehre.tbl_kalender_event: '.$db->db_last_error().'
'; else echo '
lehre.tbl_kalender_event: neue Tabellen hinzugefuegt'; }