feat(db): add scalar extraction functions for SearchCriteria JSON
This commit is contained in:
@@ -0,0 +1,65 @@
|
|||||||
|
-- Migration: 045_CreateScalarExtractionFunctions
|
||||||
|
-- Scalar functions to extract simple values from Search.Criteria JSON
|
||||||
|
|
||||||
|
-- fn_GetSearchMinimumDt: Extract MinimumDt datetime
|
||||||
|
IF OBJECT_ID('dbo.fn_GetSearchMinimumDt', 'FN') IS NOT NULL
|
||||||
|
DROP FUNCTION dbo.fn_GetSearchMinimumDt;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE FUNCTION dbo.fn_GetSearchMinimumDt(@SearchId INT)
|
||||||
|
RETURNS DATETIME2(7)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
DECLARE @Result DATETIME2(7);
|
||||||
|
|
||||||
|
SELECT @Result = TRY_CONVERT(DATETIME2(7), JSON_VALUE(s.Criteria, '$.MinimumDt'))
|
||||||
|
FROM dbo.Search s
|
||||||
|
WHERE s.ID = @SearchId
|
||||||
|
AND s.Criteria IS NOT NULL
|
||||||
|
AND ISJSON(s.Criteria) = 1;
|
||||||
|
|
||||||
|
RETURN @Result;
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- fn_GetSearchMaximumDt: Extract MaximumDt datetime
|
||||||
|
IF OBJECT_ID('dbo.fn_GetSearchMaximumDt', 'FN') IS NOT NULL
|
||||||
|
DROP FUNCTION dbo.fn_GetSearchMaximumDt;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE FUNCTION dbo.fn_GetSearchMaximumDt(@SearchId INT)
|
||||||
|
RETURNS DATETIME2(7)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
DECLARE @Result DATETIME2(7);
|
||||||
|
|
||||||
|
SELECT @Result = TRY_CONVERT(DATETIME2(7), JSON_VALUE(s.Criteria, '$.MaximumDt'))
|
||||||
|
FROM dbo.Search s
|
||||||
|
WHERE s.ID = @SearchId
|
||||||
|
AND s.Criteria IS NOT NULL
|
||||||
|
AND ISJSON(s.Criteria) = 1;
|
||||||
|
|
||||||
|
RETURN @Result;
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- fn_GetSearchExtractMisData: Extract ExtractMisData boolean
|
||||||
|
IF OBJECT_ID('dbo.fn_GetSearchExtractMisData', 'FN') IS NOT NULL
|
||||||
|
DROP FUNCTION dbo.fn_GetSearchExtractMisData;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE FUNCTION dbo.fn_GetSearchExtractMisData(@SearchId INT)
|
||||||
|
RETURNS BIT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
DECLARE @Result BIT;
|
||||||
|
|
||||||
|
SELECT @Result = TRY_CONVERT(BIT, JSON_VALUE(s.Criteria, '$.ExtractMisData'))
|
||||||
|
FROM dbo.Search s
|
||||||
|
WHERE s.ID = @SearchId
|
||||||
|
AND s.Criteria IS NOT NULL
|
||||||
|
AND ISJSON(s.Criteria) = 1;
|
||||||
|
|
||||||
|
RETURN @Result;
|
||||||
|
END
|
||||||
|
GO
|
||||||
Reference in New Issue
Block a user