Files
kycnotme/web/prisma/triggers/04_service_verification_status.sql

61 lines
1.7 KiB
MySQL
Raw Permalink Normal View History

2025-06-14 18:56:58 +00:00
CREATE OR REPLACE FUNCTION manage_service_visibility_timestamps()
2025-05-19 10:23:36 +00:00
RETURNS TRIGGER AS $$
BEGIN
2025-06-14 18:56:58 +00:00
IF NEW."serviceVisibility" = 'PUBLIC' OR NEW."serviceVisibility" = 'ARCHIVED' THEN
2025-05-19 10:23:36 +00:00
IF OLD."listedAt" IS NULL THEN
NEW."listedAt" := NOW();
END IF;
2025-06-14 18:56:58 +00:00
ELSE
2025-05-19 10:23:36 +00:00
NEW."listedAt" := NULL;
END IF;
2025-06-14 18:56:58 +00:00
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION manage_service_verification_timestamps()
RETURNS TRIGGER AS $$
BEGIN
IF (NEW."verificationStatus" = 'APPROVED' OR NEW."verificationStatus" = 'VERIFICATION_SUCCESS') THEN
IF OLD."approvedAt" IS NULL THEN
NEW."approvedAt" := NOW();
NEW."isRecentlyApproved" := TRUE;
END IF;
ELSE
NEW."approvedAt" := NULL;
NEW."isRecentlyApproved" := FALSE;
END IF;
2025-05-19 10:23:36 +00:00
IF NEW."verificationStatus" = 'VERIFICATION_SUCCESS' THEN
NEW."verifiedAt" := NOW();
2025-06-14 18:56:58 +00:00
ELSE
2025-05-19 10:23:36 +00:00
NEW."verifiedAt" := NULL;
2025-06-14 18:56:58 +00:00
END IF;
IF NEW."verificationStatus" = 'VERIFICATION_FAILED' THEN
NEW."spamAt" := NOW();
ELSE
NEW."spamAt" := NULL;
2025-05-19 10:23:36 +00:00
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
2025-06-14 18:56:58 +00:00
-- Drop the old triggers TODO: remove this some day
2025-05-19 10:23:36 +00:00
DROP TRIGGER IF EXISTS trigger_set_service_listed_at ON "Service";
DROP TRIGGER IF EXISTS trigger_manage_service_timestamps ON "Service";
2025-06-14 18:56:58 +00:00
DROP TRIGGER IF EXISTS trigger_manage_service_visibility_timestamps ON "Service";
DROP TRIGGER IF EXISTS trigger_manage_service_verification_timestamps ON "Service";
CREATE TRIGGER trigger_manage_service_visibility_timestamps
BEFORE UPDATE OF "serviceVisibility" ON "Service"
FOR EACH ROW
EXECUTE FUNCTION manage_service_visibility_timestamps();
CREATE TRIGGER trigger_manage_service_verification_timestamps
2025-05-19 10:23:36 +00:00
BEFORE UPDATE OF "verificationStatus" ON "Service"
FOR EACH ROW
2025-06-14 18:56:58 +00:00
EXECUTE FUNCTION manage_service_verification_timestamps();