1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00
Files
AdministrationItDepartmens/.bolt/supabase_discarded_migrations/0007_lively_wind.sql
MoonTestUse1 e81df4c87e Initial commit
2024-12-23 19:27:44 +06:00

66 lines
1.5 KiB
PL/PgSQL

/*
# Add create_user function
1. Changes
- Add function to create new users in employees table
- Function handles first name, last name, department and password
- Returns the created employee record
2. Details
- Creates a stored procedure for consistent user creation
- Validates input parameters
- Returns the full employee record after creation
3. Security
- Function is SECURITY DEFINER to ensure proper access control
- Input validation to prevent invalid data
*/
-- Create function to handle user creation
CREATE OR REPLACE FUNCTION create_user(
p_first_name text,
p_last_name text,
p_department text,
p_password text
)
RETURNS employees
LANGUAGE plpgsql
SECURITY DEFINER
AS $$
DECLARE
v_employee employees;
BEGIN
-- Validate inputs
IF p_first_name IS NULL OR p_first_name = '' THEN
RAISE EXCEPTION 'First name cannot be empty';
END IF;
IF p_last_name IS NULL OR p_last_name = '' THEN
RAISE EXCEPTION 'Last name cannot be empty';
END IF;
IF p_department IS NULL OR p_department = '' THEN
RAISE EXCEPTION 'Department cannot be empty';
END IF;
IF p_password IS NULL OR p_password = '' THEN
RAISE EXCEPTION 'Password cannot be empty';
END IF;
-- Insert new employee
INSERT INTO employees (
first_name,
last_name,
department,
email -- Generate email from name
) VALUES (
p_first_name,
p_last_name,
p_department,
lower(p_last_name || '@example.com')
)
RETURNING * INTO v_employee;
RETURN v_employee;
END;
$$;