/*
* Автор: Галкин А.И.
* Дата: 2014-10-08
* Назначение: Изменение таблицы MESSAGES_TEMPLATES для хранения XAML шаблонов
* Изменяются объекты:
		rebuild MESSAGES_TEMPLATES
		drop sequence SEQ_MESSAGES_TEMPLATES
		drop package PKG_TEMPLATE_CFM
		drop package PKG_TEMPLATE

/*
  ****** Инструкции для SQLPlus (обязательно) ******
  Для печати сообщений:
  DBMS_OUTPUT.put_line('<Message>');
*/
whenever sqlerror exit 1;
set serveroutput on;
set echo off;

declare
	filename      varchar2(256) := 'sfm.database-update.2014-10-08.RebuildMESSAGES_TEMPLATES.sql';
	purpose       varchar2(4000) := 'Изменение таблицы MESSAGES_TEMPLATES для хранения XAML шаблонов';
	script_exists number := 0;
begin

	--delete from DB_Update_History where script_name = filename;	commit;
	select count(*)
		into script_exists
		from DB_Update_History
	 where script_name = filename;

	if (script_exists > 0) then
		RAISE_APPLICATION_ERROR(-20001, '"' || filename || '" уже присутствует в базе');
	else
		insert into DB_Update_History
			(script_name, purpose)
		values
			(filename, purpose);
	end if;

	commit;

exception
	when others then
		rollback;
		raise;
end;
/
DROP PACKAGE KFM.PKG_TEMPLATE_CFM;

DROP PACKAGE KFM.PKG_TEMPLATE;

DELETE FROM KFM.MESSAGES_TEMPLATES;

ALTER TABLE KFM.MESSAGES_TEMPLATES DROP PRIMARY KEY CASCADE;

DROP TABLE KFM.MESSAGES_TEMPLATES CASCADE CONSTRAINTS;

DROP SEQUENCE KFM.SEQ_MESSAGES_TEMPLATES;

CREATE TABLE KFM.MESSAGES_TEMPLATES
(
   VERSIONCODE    VARCHAR2(36 CHAR) NOT NULL,
   IS_EDITABLE     NUMBER (1, 0) NOT NULL,
   CREATION_DATE   DATE DEFAULT SYSDATE NOT NULL,
   TEMPLATE        BLOB NOT NULL,
   CONSTRAINT MESSAGES_TEMPLATES_PK PRIMARY KEY (VERSIONCODE, IS_EDITABLE),
   CONSTRAINT IS_EDITABLE_CHECK CHECK (IS_EDITABLE IN (0, 1))
);

COMMENT ON TABLE KFM.MESSAGES_TEMPLATES IS
   'Шаблоны отображения';

COMMENT ON COLUMN KFM.MESSAGES_TEMPLATES.VERSIONCODE IS
   'Версия сообщения';

COMMENT ON COLUMN KFM.MESSAGES_TEMPLATES.IS_EDITABLE IS
   '0 - нередактриуемый шаблон, 1 - редактируемы шаблон';

COMMENT ON COLUMN KFM.MESSAGES_TEMPLATES.CREATION_DATE IS
   'Дата создания записи';

COMMENT ON COLUMN KFM.MESSAGES_TEMPLATES.TEMPLATE IS
   'Тело шаблона';

CREATE OR REPLACE PUBLIC SYNONYM MESSAGES_TEMPLATES FOR KFM.MESSAGES_TEMPLATES;

GRANT DELETE,
      INSERT,
      SELECT,
      UPDATE
   ON KFM.MESSAGES_TEMPLATES
   TO KFM_ROLE;
