feat(db): add validation stored procedure with THROW errors
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
-- Migration: 048_CreateValidateSearchCriteriaProcedure
|
||||||
|
-- Stored procedure for strict validation with THROW errors
|
||||||
|
|
||||||
|
IF OBJECT_ID('dbo.usp_ValidateSearchCriteria', 'P') IS NOT NULL
|
||||||
|
DROP PROCEDURE dbo.usp_ValidateSearchCriteria;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE dbo.usp_ValidateSearchCriteria(@SearchId INT)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
DECLARE @Criteria VARCHAR(MAX);
|
||||||
|
DECLARE @ErrorMsg NVARCHAR(400);
|
||||||
|
|
||||||
|
-- Get criteria for the search
|
||||||
|
SELECT @Criteria = Criteria
|
||||||
|
FROM dbo.Search
|
||||||
|
WHERE ID = @SearchId;
|
||||||
|
|
||||||
|
-- Validate search exists
|
||||||
|
IF @@ROWCOUNT = 0
|
||||||
|
BEGIN
|
||||||
|
SET @ErrorMsg = CONCAT('Search ID ', @SearchId, ' not found');
|
||||||
|
THROW 50001, @ErrorMsg, 1;
|
||||||
|
END
|
||||||
|
|
||||||
|
-- Validate criteria not null
|
||||||
|
IF @Criteria IS NULL
|
||||||
|
BEGIN
|
||||||
|
SET @ErrorMsg = CONCAT('Search ID ', @SearchId, ' has no criteria');
|
||||||
|
THROW 50002, @ErrorMsg, 1;
|
||||||
|
END
|
||||||
|
|
||||||
|
-- Validate criteria not empty
|
||||||
|
IF @Criteria = ''
|
||||||
|
BEGIN
|
||||||
|
SET @ErrorMsg = CONCAT('Search ID ', @SearchId, ' has no criteria');
|
||||||
|
THROW 50002, @ErrorMsg, 1;
|
||||||
|
END
|
||||||
|
|
||||||
|
-- Validate JSON format
|
||||||
|
IF ISJSON(@Criteria) = 0
|
||||||
|
BEGIN
|
||||||
|
SET @ErrorMsg = CONCAT('Search ID ', @SearchId, ' has invalid JSON');
|
||||||
|
THROW 50003, @ErrorMsg, 1;
|
||||||
|
END
|
||||||
|
|
||||||
|
-- If we get here, validation passed
|
||||||
|
RETURN 0;
|
||||||
|
END
|
||||||
|
GO
|
||||||
Reference in New Issue
Block a user