Exercício Criativo 5: Seu Primeiro Robô de Dados

Sua Missão: Programar sua primeira Database Function no Supabase! Vamos criar um robô simples que mora dentro do seu banco de dados e executa uma tarefa específica quando chamado.

Agora que você sabe o que são funções e como elas podem automatizar tarefas ou encapsular lógica, é hora de construir a sua.

O Desafio:

Escolha UMA das ideias de função abaixo e tente implementá-la no SQL Editor do Supabase. Não precisa ser super complexa, o objetivo é entender a estrutura e o processo de criação.

Ideias para seu Robô:

  1. Robô Mensageiro: Crie uma função chamada saudacao_personalizada que recebe um parâmetro nome_agente (do tipo text) e retorna uma saudação (do tipo text), como por exemplo: "Olá, [nome_agente]! Missão aceita.".

    • Dica: Use concatenação de strings (||).

    • Linguagem: Pode ser sql ou plpgsql.

    • Retorno: text.

  2. Robô Calculador de Nível: Crie uma função chamada calcular_nivel_poder que recebe dois parâmetros: habilidade_base (int) e bonus_equipamento (int). A função deve retornar a soma dos dois, representando o nível de poder total.

    • Linguagem: plpgsql é mais adequada para variáveis e cálculos, mas sql pode funcionar se for só SELECT habilidade_base + bonus_equipamento;.

    • Retorno: integer.

  3. Robô Verificador de Atividade: Crie uma função chamada verificar_agente_ativo que recebe um id_agente (uuid) como parâmetro. A função deve consultar a tabela agentes e retornar true se o agente com esse ID estiver com a coluna ativo marcada como true, e false caso contrário.

    • Dica: Use SELECT ativo INTO variavel_retorno FROM agentes WHERE id = id_agente; dentro da função PL/pgSQL.

    • Linguagem: plpgsql.

    • Retorno: boolean.

  4. (Avançado) Robô Promotor: Crie uma função chamada promover_agente que recebe um id_agente (uuid). A função deve aumentar o nivel_habilidade do agente em 1, mas somente se o nível atual for menor que 10. A função não precisa retornar nada (void).

    • Dica: Use UPDATE ... WHERE id = id_agente AND nivel_habilidade < 10; dentro da função.

    • Linguagem: plpgsql.

    • Retorno: void.

Como Fazer:

  1. Vá para o SQL Editor (</>) no seu projeto Supabase.

  2. Escreva o comando CREATE OR REPLACE FUNCTION ... para a ideia que você escolheu.

  3. Preste atenção na sintaxe: nome da função, parâmetros (com tipos), tipo de retorno (RETURNS), linguagem (LANGUAGE) e o corpo da função entre AS $$ ... $$;.

  4. Clique em "RUN" para criar a função.

  5. Teste sua função! Use um comando SELECT para chamá-la. Exemplos:

    • SELECT saudacao_personalizada("Sombra");

    • SELECT calcular_nivel_poder(8, 2);

    • SELECT verificar_agente_ativo("uuid-001");

    • SELECT promover_agente("uuid-002"); (Depois verifique a tabela agentes para ver se funcionou).

Como Entregar:

  • Copie e cole o código CREATE FUNCTION que você escreveu.

  • Copie e cole o comando SELECT que você usou para testar sua função e o resultado que obteve.

Objetivo: Perder o medo de criar funções no banco de dados! Entender a sintaxe básica e ver como elas podem ser chamadas para executar tarefas.

Last updated