38 lines
1.5 KiB
PL/PgSQL
38 lines
1.5 KiB
PL/PgSQL
-- Migration: Update fn_update_course to include generation_status
|
|
CREATE OR REPLACE FUNCTION fn_update_course(
|
|
p_id UUID,
|
|
p_organization_id UUID,
|
|
p_title VARCHAR(255),
|
|
p_description TEXT,
|
|
p_passing_percentage INTEGER,
|
|
p_pacing_mode VARCHAR(50),
|
|
p_start_date TIMESTAMPTZ,
|
|
p_end_date TIMESTAMPTZ,
|
|
p_certificate_template VARCHAR(255) DEFAULT NULL,
|
|
p_price DOUBLE PRECISION DEFAULT 0.0,
|
|
p_currency VARCHAR(10) DEFAULT 'USD',
|
|
p_marketing_metadata JSONB DEFAULT NULL,
|
|
p_course_image_url TEXT DEFAULT NULL,
|
|
p_generation_status VARCHAR(20) DEFAULT NULL
|
|
) RETURNS SETOF courses AS $$
|
|
BEGIN
|
|
RETURN QUERY
|
|
UPDATE courses
|
|
SET title = COALESCE(p_title, title),
|
|
description = COALESCE(p_description, description),
|
|
passing_percentage = COALESCE(p_passing_percentage, passing_percentage),
|
|
pacing_mode = COALESCE(p_pacing_mode, pacing_mode),
|
|
start_date = p_start_date,
|
|
end_date = p_end_date,
|
|
certificate_template = COALESCE(p_certificate_template, certificate_template),
|
|
price = COALESCE(p_price, price),
|
|
currency = COALESCE(p_currency, currency),
|
|
marketing_metadata = COALESCE(p_marketing_metadata, marketing_metadata),
|
|
course_image_url = COALESCE(p_course_image_url, course_image_url),
|
|
generation_status = COALESCE(p_generation_status, generation_status),
|
|
updated_at = NOW()
|
|
WHERE id = p_id AND organization_id = p_organization_id
|
|
RETURNING *;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|