38 lines
1.1 KiB
SQL
38 lines
1.1 KiB
SQL
-- Add categorization column
|
|
ALTER TABLE feeds ADD COLUMN categorization JSON NOT NULL DEFAULT '[]';
|
|
|
|
-- Add CHECK constraint
|
|
CREATE TRIGGER validate_feed_categorization
|
|
AFTER INSERT ON feeds
|
|
BEGIN
|
|
SELECT CASE
|
|
WHEN NOT (
|
|
json_valid(NEW.categorization)
|
|
AND json_type(NEW.categorization) = 'array'
|
|
AND (
|
|
SELECT COUNT(*)
|
|
FROM json_each(NEW.categorization)
|
|
WHERE json_type(value) != 'text'
|
|
) = 0
|
|
)
|
|
THEN RAISE(ROLLBACK, 'categorization must be an array of strings')
|
|
END;
|
|
END;
|
|
|
|
CREATE TRIGGER validate_feed_categorization_update
|
|
AFTER UPDATE OF categorization ON feeds
|
|
BEGIN
|
|
SELECT CASE
|
|
WHEN NOT (
|
|
json_valid(NEW.categorization)
|
|
AND json_type(NEW.categorization) = 'array'
|
|
AND (
|
|
SELECT COUNT(*)
|
|
FROM json_each(NEW.categorization)
|
|
WHERE json_type(value) != 'text'
|
|
) = 0
|
|
)
|
|
THEN RAISE(ROLLBACK, 'categorization must be an array of strings')
|
|
END;
|
|
END;
|