2023-04-14 10:32:31 +02:00

308 lines
11 KiB
Transact-SQL

UPDATE TBIDB_BASE SET CONFIG_VALUE = '1.0.3' where CONFIG_NAME = 'DB_VERSION'
CREATE NONCLUSTERED INDEX IDX_GUID_TEXTTEM_ID
ON [dbo].[TBIDB_TERM_LANGUAGE] ([LANGUAGE_ID])
INCLUDE ([GUID],[TEXT_TERM_ID])
GO
CREATE NONCLUSTERED INDEX IDX_CHANGED_WHEN
ON [dbo].[TBIDB_OBJECT_METADATA_CHANGE] ([CHANGED_WHEN])
INCLUDE ([GUID])
GO
CREATE NONCLUSTERED INDEX IDX_CHANGED_WHEN_IDBOBJID
ON [dbo].[TBIDB_OBJECT_METADATA_CHANGE] ([IDB_OBJ_ID])
INCLUDE ([CHANGED_WHEN])
GO
ALTER PROCEDURE [dbo].[PRIDB_NEW_OBJ_DATA] @IDB_OBJ_ID BIGINT,@ATTRIBUTE VARCHAR(100),@WHO VARCHAR(100), @TERM_VAL VARCHAR(MAX),
@LANG_CODE VARCHAR(5) = 'de-DE', @FOREIGN_KEY BIGINT = 0, @OMD_ID BIGINT OUTPUT
AS
BEGIN
DECLARE
@ATTR_ID INTEGER,
@TYP_ID TINYINT,
@TYP_DESCR VARCHAR(100),
@MULTI BIT,
@LANG_ID INT
--PRINT '@FOREIGN_KEY: ' + CONVERT(VARCHAR(50),@FOREIGN_KEY)
IF @FOREIGN_KEY <> 0 AND @IDB_OBJ_ID <> @FOREIGN_KEY
BEGIN
IF NOT EXISTS(SELECT IDB_OBJ_ID FROM TBIDB_OBJECT WHERE REFERENCE_KEY = @FOREIGN_KEY)
BEGIN
PRINT 'FOUND NO IDB-OBJECT FOR REFERENCE KEY: ' + CONVERT(VARCHAR(50),@FOREIGN_KEY)
END
ELSE
BEGIN
SELECT @IDB_OBJ_ID = IDB_OBJ_ID FROM TBIDB_OBJECT WHERE REFERENCE_KEY = @FOREIGN_KEY
--Print 'PRIDB_NEW_OBJ_DATA: Checked the DocID as Reference: ' + Convert(Varchar(10),@IDB_OBJ_ID)
END
END
IF NOT EXISTS(SELECT GUID FROM TBIDB_ATTRIBUTE WHERE UPPER(TITLE) = UPPER(@ATTRIBUTE))
RAISERROR ('NO VALID ATTRIBUTE',16,1)
SELECT @ATTR_ID = T.GUID, @TYP_ID = T.TYP_ID, @MULTI = T.MULTI_CONTEXT,@TYP_DESCR = T1.NAME_TYPE FROM TBIDB_ATTRIBUTE T, TBIDB_ATTRIBUTE_TYPE T1
WHERE T.TYP_ID = T1.GUID AND UPPER(T.TITLE) = UPPER(@ATTRIBUTE)
SELECT @LANG_ID = GUID FROM TBIDB_LANGUAGE WHERE LANG_CODE = @LANG_CODE
DECLARE @MY_TERM_ID BIGINT
EXEC PRIDB_NEW_TERM @TYP_DESCR,@TERM_VAL,@WHO,@TERM_ID = @MY_TERM_ID OUTPUT;
--PRINT 'PRIDB_NEW_OBJ_DATA: @TYP_ID is: ' + Convert(Varchar(10),@TYP_ID)
IF @TYP_ID IN (1,8) --VARCHAR
BEGIN
IF NOT EXISTS(SELECT GUID FROM TBIDB_TERM_LANGUAGE WHERE LANGUAGE_ID = @LANG_ID AND TEXT_TERM_ID = @MY_TERM_ID)
INSERT INTO TBIDB_TERM_LANGUAGE (LANGUAGE_ID,TEXT_TERM_ID,ADDED_WHO) VALUES (@LANG_ID,@MY_TERM_ID,@WHO)
SELECT @MY_TERM_ID = MAX(GUID) FROM TBIDB_TERM_LANGUAGE WHERE LANGUAGE_ID = @LANG_ID AND TEXT_TERM_ID = @MY_TERM_ID
IF @TYP_ID = 1 --Single Varchar
BEGIN
IF NOT EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID)
INSERT INTO [dbo].[TBIDB_OBJECT_METADATA]
([IDB_OBJ_ID]
,[ATTR_ID]
,[TEXT_TERM_LANG_ID]
,[ADDED_WHO])
VALUES
(@IDB_OBJ_ID
,@ATTR_ID
,@MY_TERM_ID
,@WHO)
ELSE
IF EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND [TEXT_TERM_LANG_ID] <> @MY_TERM_ID)
UPDATE TBIDB_OBJECT_METADATA SET [TEXT_TERM_LANG_ID] = @MY_TERM_ID, CHANGED_WHO = @WHO WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID
SELECT @OMD_ID = GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND [TEXT_TERM_LANG_ID] = @MY_TERM_ID
END
ELSE
IF NOT EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND [TEXT_TERM_LANG_ID] = @MY_TERM_ID)
INSERT INTO [dbo].[TBIDB_OBJECT_METADATA]
([IDB_OBJ_ID]
,[ATTR_ID]
,[TEXT_TERM_LANG_ID]
,[ADDED_WHO])
VALUES
(@IDB_OBJ_ID
,@ATTR_ID
,@MY_TERM_ID
,@WHO)
--ELSE
--PRINT 'IDB-METADATAOBJECT-VALUE SEEMS TO EXIST: @IDB_OBJ_ID: ' + Convert(Varchar(10),@IDB_OBJ_ID)
END
ELSE IF @TYP_ID IN (2,7,9) --BIGINT
BEGIN
IF NOT EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID)
BEGIN
INSERT INTO [dbo].[TBIDB_OBJECT_METADATA]
([IDB_OBJ_ID]
,[ATTR_ID]
,[INT_TERM_ID]
,[ADDED_WHO])
VALUES
(@IDB_OBJ_ID
,@ATTR_ID
,@MY_TERM_ID
,@WHO)
END
ELSE
IF EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND [INT_TERM_ID] <> @MY_TERM_ID)
UPDATE TBIDB_OBJECT_METADATA SET [INT_TERM_ID] = @MY_TERM_ID, CHANGED_WHO = @WHO WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID
SELECT @OMD_ID = GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND INT_TERM_ID = @MY_TERM_ID
END
ELSE IF @TYP_ID = 3 --FLOAT
BEGIN
IF NOT EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID)
BEGIN
INSERT INTO [dbo].[TBIDB_OBJECT_METADATA]
([IDB_OBJ_ID]
,[ATTR_ID]
,[FLOAT_TERM_ID]
,[ADDED_WHO])
VALUES
(@IDB_OBJ_ID
,@ATTR_ID
,@MY_TERM_ID
,@WHO)
END
ELSE
IF EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND [FLOAT_TERM_ID] <> @MY_TERM_ID)
UPDATE TBIDB_OBJECT_METADATA SET [FLOAT_TERM_ID] = @MY_TERM_ID, CHANGED_WHO = @WHO WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID
SELECT @OMD_ID = GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND FLOAT_TERM_ID = @MY_TERM_ID
END
ELSE IF @TYP_ID = 4 --DECIMAL
BEGIN
IF NOT EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID)
BEGIN
INSERT INTO [dbo].[TBIDB_OBJECT_METADATA]
([IDB_OBJ_ID]
,[ATTR_ID]
,[DEC_TERM_ID]
,[ADDED_WHO])
VALUES
(@IDB_OBJ_ID
,@ATTR_ID
,@MY_TERM_ID
,@WHO)
END
ELSE
IF EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND DEC_TERM_ID <> @MY_TERM_ID)
UPDATE TBIDB_OBJECT_METADATA SET [DEC_TERM_ID] = @MY_TERM_ID, CHANGED_WHO = @WHO WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID
SELECT @OMD_ID = GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND DEC_TERM_ID = @MY_TERM_ID
END
ELSE IF @TYP_ID = 5 --DATE
BEGIN
IF NOT EXISTS(SELECT GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID)
BEGIN
INSERT INTO [dbo].[TBIDB_OBJECT_METADATA]
([IDB_OBJ_ID]
,[ATTR_ID]
,[DATE_TERM_ID]
,[ADDED_WHO])
VALUES
(@IDB_OBJ_ID
,@ATTR_ID
,@MY_TERM_ID
,@WHO)
END
ELSE
UPDATE TBIDB_OBJECT_METADATA SET [DATE_TERM_ID] = @MY_TERM_ID, CHANGED_WHO = @WHO WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID
SELECT @OMD_ID = GUID FROM TBIDB_OBJECT_METADATA WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND ATTR_ID = @ATTR_ID AND DATE_TERM_ID = @MY_TERM_ID
END
--PRINT 'PRIDB_NEW_OBJ_DATA - Got the new @OMD_ID: ' + CONVERT(VARCHAR(20),@OMD_ID)
END
GO
-- =============================================
-- Author: DD MS
-- Change date: 10.08.2020 MS Anpassung
-- =============================================
ALTER PROCEDURE [dbo].[PRIDB_NEW_DOCUMENT] @OBJ_ST_ID INT, @REL_PATH VARCHAR(512),@WHO VARCHAR(100), @REF_DOCID BIGINT = 0, @BE VARCHAR(500) = '', @IDB_OBJ_ID BIGINT OUTPUT
AS
BEGIN
DECLARE
@SHARE_PATH VARCHAR(100),
@OBJ_STORE_PATH VARCHAR(250),
@NEW_FULL_PATH VARCHAR(512),
@FILENAME_EXT VARCHAR(250),
@FILENAME_ONLY VARCHAR(250),
@RELATIVE_PATH VARCHAR(512),
@RELATIVE_PATH_ONLY VARCHAR(512),
@EXT VARCHAR(10)
SELECT
@SHARE_PATH = T.CAT_STRING, @OBJ_STORE_PATH = T1.OBJ_PATH
FROM TBIDB_CATALOG T, TBIDB_OBJECT_STORE T1 WHERE T1.CAT_ID = T.GUID AND T1.GUID = @OBJ_ST_ID
SET @NEW_FULL_PATH = UPPER(@SHARE_PATH + '\' + @OBJ_STORE_PATH + '\' + @REL_PATH)
SET @NEW_FULL_PATH = REPLACE(@NEW_FULL_PATH,'\\','')
SET @RELATIVE_PATH = UPPER(@REL_PATH)
PRINT 'PRIDB_NEW_DOCUMENT - @NEW_FULL_PATH: ' + @NEW_FULL_PATH
PRINT 'PRIDB_NEW_DOCUMENT - @RELATIVE_PATH: ' + @RELATIVE_PATH
--SELECT @RELATIVE_PATH_ONLY = [dbo].[FNGetDirectoryPath] (@NEW_FULL_PATH);
--PRINT 'PRIDB_NEW_DOCUMENT - @RELATIVE_PATH_ONLY1: ' + @RELATIVE_PATH_ONLY
SELECT @FILENAME_EXT = [dbo].[FNGetFileName] (@NEW_FULL_PATH);
SELECT @FILENAME_ONLY = [dbo].[FNGetFileNameWithoutExtension] (@NEW_FULL_PATH);
SELECT @EXT = UPPER([dbo].[FNGetExtension] (@NEW_FULL_PATH));
SET @RELATIVE_PATH_ONLY = REPLACE(@REL_PATH,'\' + @FILENAME_EXT,'')
PRINT 'PRIDB_NEW_DOCUMENT - @RELATIVE_PATH_ONLY: ' + @RELATIVE_PATH_ONLY
--PRINT '@EXT: ' + @EXT
--IF NOT EXISTS(SELECT [IDB_OBJ_ID] FROM [TBIDB_DOC_INFO] WHERE [OBJ_ST_ID] = @OBJ_ST_ID AND UPPER([RELATIVE_PATH]) = @RELATIVE_PATH)
EXEC PRIDB_NEW_OBJECT 'DOC',@WHO,@BE,@REF_DOCID, @IDB_OBJ_ID = @IDB_OBJ_ID OUTPUT;
PRINT 'PRIDB_NEW_DOCUMENT - @IDB_OBJ_ID from PRIDB_NEW_OBJECT: ' + CONVERT(VARCHAR(20),@IDB_OBJ_ID)
BEGIN
IF NOT EXISTS(SELECT IDB_OBJ_ID FROM [TBIDB_DOC_INFO] WHERE IDB_OBJ_ID = @IDB_OBJ_ID)
INSERT INTO [dbo].[TBIDB_DOC_INFO]
([IDB_OBJ_ID]
,[OBJ_ST_ID]
,[FILENAME_EXT]
,[FILENAME_ONLY]
,EXTENSION
,[RELATIVE_PATH]
,[RELATIVE_PATH_ONLY]
,[ADDED_WHO])
VALUES
(@IDB_OBJ_ID
,@OBJ_ST_ID
,@FILENAME_EXT
,@FILENAME_ONLY
,@EXT
,@RELATIVE_PATH
,@RELATIVE_PATH_ONLY
,@WHO)
ELSE
BEGIN
PRINT 'OBJECT ' + CONVERT(VARCHAR(20),@IDB_OBJ_ID) + ' ALREADY EXISTING ---- So ONLY UPDATE WITH NEW FILE PARAMS'
UPDATE [TBIDB_DOC_INFO] SET [FILENAME_EXT] = @FILENAME_EXT,[FILENAME_ONLY] = @FILENAME_ONLY
,EXTENSION = @EXT
,[RELATIVE_PATH] = @RELATIVE_PATH
,[RELATIVE_PATH_ONLY] = @RELATIVE_PATH_ONLY
,CHANGED_WHO = @WHO
WHERE IDB_OBJ_ID = @IDB_OBJ_ID
IF EXISTS(SELECT IDB_OBJ_ID FROM TBIDB_OBJECT WHERE IDB_OBJ_ID = @IDB_OBJ_ID AND DELETED = 1)
BEGIN
PRINT 'PRIDB_NEW_DOCUMENT - IDB_OBJ_ID: ' + CONVERT(VARCHAR(20),@IDB_OBJ_ID) + ' DELETED FLAG ACTIVE!!'
UPDATE TBIDB_OBJECT SET DELETED = 0 WHERE IDB_OBJ_ID = @IDB_OBJ_ID
END
END
END
END
GO
ALTER PROCEDURE PRIDB_GET_VALUE_TYPE @pVALUE VARCHAR(900)--,@oType VARCHAR(10) OUTPUT
AS
BEGIN
declare @TBTYPE_RESULT table(pTYPE varchar(10))
DECLARE @oTYPE as Varchar(10)
SET @oType = 'NONE'
DECLARE @BIGINT as BIGINT, @FLOAT FLOAT,@DECIMAL DECIMAL(19,2),@DATE DATE
BEGIN TRY
SET @BIGINT = CONVERT(bigint,@pVALUE)
SET @oType = 'BIGINT'
INSERT INTO @TBTYPE_RESULT (pTYPE) VALUES (@oType)
END TRY
BEGIN CATCH
PRINT 'NO BIGINT'
END CATCH
--IF @oType = 'NONE'
BEGIN TRY
SET @FLOAT = CONVERT(FLOAT,@pVALUE)
SET @oType = 'FLOAT'
INSERT INTO @TBTYPE_RESULT (pTYPE) VALUES (@oType)
END TRY
BEGIN CATCH
PRINT 'NO FLOAT'
END CATCH
--IF @oType = 'NONE'
BEGIN TRY
SET @DECIMAL = CONVERT(DECIMAL(19,2),@pVALUE)
SET @oType = 'DECIMAL'
INSERT INTO @TBTYPE_RESULT (pTYPE) VALUES (@oType)
END TRY
BEGIN CATCH
PRINT 'NO DECIMAL'
END CATCH
--IF @oType = 'NONE'
BEGIN TRY
SET @DATE = CONVERT(DATE,@pVALUE)
SET @oType = 'DATE'
INSERT INTO @TBTYPE_RESULT (pTYPE) VALUES (@oType)
END TRY
BEGIN CATCH
PRINT 'NO DATE'
END CATCH
--IF @oType = 'NONE'
BEGIN TRY
SET @oType = 'VARCHAR'
INSERT INTO @TBTYPE_RESULT (pTYPE) VALUES (@oType)
END TRY
BEGIN CATCH
PRINT 'NO VARCHAR'
END CATCH
PRINT '@TYPE: ' + @oType
SELECT * FROM @TBTYPE_RESULT
END