feat(db): add scalar extraction functions for SearchCriteria JSON

This commit is contained in:
Joseph Doherty
2026-01-06 13:11:11 -05:00
parent 397b339c86
commit 5ee348dc98
@@ -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