-- Query 8
-- Funkcija, kas pārbauda vai lietotājs ir pieslēdzies
DELIMITER $$

CREATE FUNCTION fn_is_logged_in(p_session_token VARCHAR(64)) RETURNS BOOLEAN
BEGIN
    DECLARE valid INT; -- Derīgo sesiju skaits

    -- Pārbauda vai sesija ir aktīva un nav beigusies
    SELECT COUNT(*) INTO valid
    FROM sessions
    WHERE session_token = p_session_token
      AND is_active = TRUE
      AND expires_at > NOW();

    -- Ja sesija ir derīga
    IF valid > 0 THEN
        -- Atjauno aktivitātes laiku un pagarina sesiju
        UPDATE sessions
        SET last_activity_at = NOW(),
            expires_at = DATE_ADD(NOW(), INTERVAL 10 MINUTE)
        WHERE session_token = p_session_token;

        RETURN TRUE;
    END IF;

    -- Ja sesija nav derīga
    RETURN FALSE;
END$$

DELIMITER ;
