Spaces:
Sleeping
Sleeping
File size: 2,638 Bytes
aa916fd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
-- Add project management functions
-- Function to create a project with account validation
CREATE OR REPLACE FUNCTION create_project(
name TEXT,
description TEXT,
account_id UUID
) RETURNS json
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
new_project_id uuid;
project_data json;
BEGIN
-- Insert project
INSERT INTO public.projects (name, description, account_id)
VALUES (create_project.name, create_project.description, create_project.account_id)
RETURNING project_id INTO new_project_id;
-- Get the full project data
SELECT json_build_object(
'project_id', p.project_id,
'name', p.name,
'description', p.description,
'account_id', p.account_id,
'sandbox', p.sandbox,
'created_at', p.created_at,
'updated_at', p.updated_at
) INTO project_data
FROM public.projects p
WHERE p.project_id = new_project_id;
RETURN project_data;
END;
$$;
-- Function to update a project
CREATE OR REPLACE FUNCTION update_project(
project_id UUID,
name TEXT,
description TEXT
) RETURNS json
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
updated_project_data json;
BEGIN
-- Update the project
UPDATE public.projects
SET
name = COALESCE(update_project.name, name),
description = COALESCE(update_project.description, description),
updated_at = now()
WHERE project_id = update_project.project_id;
-- Get the updated project data
SELECT json_build_object(
'project_id', p.project_id,
'name', p.name,
'description', p.description,
'account_id', p.account_id,
'sandbox', p.sandbox,
'created_at', p.created_at,
'updated_at', p.updated_at
) INTO updated_project_data
FROM public.projects p
WHERE p.project_id = update_project.project_id;
RETURN updated_project_data;
END;
$$;
-- Function to update a project's sandbox information
CREATE OR REPLACE FUNCTION update_project_sandbox(
project_id UUID,
sandbox_data jsonb
) RETURNS json
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
updated_project_data json;
BEGIN
-- Update the project sandbox data
UPDATE public.projects
SET
sandbox = sandbox_data,
updated_at = now()
WHERE project_id = update_project_sandbox.project_id;
-- Get the updated project data
SELECT json_build_object(
'project_id', p.project_id,
'name', p.name,
'description', p.description,
'account_id', p.account_id,
'sandbox', p.sandbox,
'created_at', p.created_at,
'updated_at', p.updated_at
) INTO updated_project_data
FROM public.projects p
WHERE p.project_id = update_project_sandbox.project_id;
RETURN updated_project_data;
END;
$$; |