-- +goose up -- +goose statementbegin CREATE OR REPLACE PROCEDURE insert_repository( IN p_repo_full_name VARCHAR(255), IN p_owner_name VARCHAR(255), IN p_owner_type VARCHAR(20) ) BEGIN DECLARE v_owner_id BIGINT; DECLARE v_repo_id BIGINT; -- Check if the owner already exists SELECT owner_id INTO v_owner_id FROM owners WHERE owner_name = p_owner_name AND owner_type = p_owner_type; -- If the owner does not exist, insert a new owner IF v_owner_id IS NULL THEN INSERT INTO owners (owner_name, owner_type) VALUES (p_owner_name, p_owner_type); SET v_owner_id = LAST_INSERT_ID(); END IF; -- Insert the repository using the obtained owner_id INSERT INTO repos (repo_full_name, repo_owner_id) VALUES (p_repo_full_name, v_owner_id); -- No explicit return needed in procedures END; -- +goose statementend -- +goose down DROP PROCEDURE IF EXISTS insert_repository;