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