Squeenote 1. Bem vindos ao dojo de PL/pgSQL! 2. O que é um dojo? Aprendizado através da prática Resolução de um problema com foco na técnica e não no resultado Se você está aqui, você vai programar! 3. Boas práticas O dojo tenta incentivá-las: TDD e Programação em pares O TDD não é muito popular entre programadores PL/pgSQL No entanto existem diversas ferramentas para isso 4. Método Sempre temos um piloto e um co-piloto Os programadores devem narrar o que estão fazendo e o motivo. Testes falhando: ninguém fala além do piloto e co-piloto (podem fazer perguntas em casos de emergência) Testes passando: a platéia pode dar dicas de refatoração, etc... 5. PL/pgSQL Básico Lembram-se do pascal? CREATE OR REPLACE FUNCTION hello_world() RETURNS text LANGUAGE plpgsql AS $$ 1 of 2 Squeenote DECLARE vlabel text := 'Hello World'; BEGIN RETURN vlabel; END; $$; 6. PL/pgSQL Básico Selecionando valores do banco CREATE OR REPLACE FUNCTION pick_relation() RETURNS text LANGUAGE plpgsql AS $$ DECLARE vlabel text; BEGIN SELECT relname FROM pg_class ORDER BY random() LIMIT 1 INTO vlabel; RETURN vlabel; END; $$; 7. Testando com Epic Primeiro escrevemos uma função de teste que testa um comportamento Sempre finalizamos a função com um RAISE EXCEPTION '[OK]'; Sempre comentamos antes do BEGIN principal: -- module: dojo Rodamos os testes com: SELECT * FROM test.run_all() 8. O problema da vovó surda Dizer para a vovó qualquer coisa em minúsculas faz com que ela responda: "O que foi? Fale mais alto!" Dizer algo em maiúsculas faz com que ela responda: 'Ahhh... Você quis dizer: ' || mensagem em maiúsculas || ' ?' Quando queremos sair precisamos dizer 'TCHAU VOVÓ!' 3 vezes consecutivas e após a terceira vez ela responde: 'Tchau, não precisa gritar!' Qualquer coisa entre os 'TCHAU VOVÓ!' faz a avó surda esquecer que estamos indo embora 2 of 2