Skip to content

Commit 535be10

Browse files
committed
fix(sql): Adding correct procedure �prender_feitico
1 parent 5831b87 commit 535be10

File tree

1 file changed

+24
-34
lines changed

1 file changed

+24
-34
lines changed

source/database/ddl/procedures.sql

+24-34
Original file line numberDiff line numberDiff line change
@@ -451,57 +451,47 @@ DECLARE
451451
v_possui_feitico_atual BOOLEAN;
452452
v_conhecimento_arcano_suficiente BOOLEAN;
453453
BEGIN
454-
-- get character inventory
455-
SELECT id INTO v_inventario_id
454+
SELECT id
455+
INTO v_inventario_id
456456
FROM inventario
457457
WHERE personagem_id = p_personagem_id;
458458

459-
-- if doesn't have a inventory, return error
460-
IF v_inventario_id IS NULL THEN
461-
RAISE EXCEPTION 'O personagem % não possui inventário.', p_personagem_id;
462-
END IF;
463-
464-
SELECT de_id INTO v_requisito_id
459+
SELECT de_id
460+
INTO v_requisito_id
465461
FROM feitico_requerimento
466462
WHERE para_id = p_feitico_id;
467463

468-
SELECT COALESCE(
469-
(SELECT EXISTS (
470-
SELECT 1 FROM feitico_aprendido
471-
WHERE inventario_id = v_inventario_id AND feitico_id = v_requisito_id
472-
)), TRUE
464+
-- Verifica se já possui o feitiço pré-requisito
465+
SELECT EXISTS (
466+
SELECT 1
467+
FROM feitico_aprendido
468+
WHERE inventario_id = v_inventario_id
469+
AND feitico_id = v_requisito_id
473470
) INTO v_pre_requisito_aprendido;
474471

472+
-- Verifica se já possui o feitiço atual
475473
SELECT EXISTS (
476-
SELECT 1 FROM feitico_aprendido
477-
WHERE inventario_id = v_inventario_id AND feitico_id = p_feitico_id
474+
SELECT 1
475+
FROM feitico_aprendido
476+
WHERE inventario_id = v_inventario_id
477+
AND feitico_id = p_feitico_id
478478
) INTO v_possui_feitico_atual;
479479

480-
SELECT COALESCE(
481-
(p.conhecimento_arcano >= f.conhecimento_arcano_necessario), FALSE
482-
) INTO v_conhecimento_arcano_suficiente
480+
-- Verifica se possui conhecimento arcano suficiente para o feitiço
481+
SELECT (p.conhecimento_arcano >= f.conhecimento_arcano_necessario)
482+
INTO v_conhecimento_arcano_suficiente
483483
FROM personagem p
484484
JOIN feitico f ON f.id = p_feitico_id
485485
WHERE p.id = p_personagem_id;
486486

487-
IF v_possui_feitico_atual THEN
488-
RAISE NOTICE 'O personagem % já aprendeu este feitiço.', p_personagem_id;
489-
RETURN p_personagem_id;
487+
-- Só aprende o feitiço se ainda não tiver, já possuir o pré-requisito e tiver conhecimento arcano
488+
IF NOT v_possui_feitico_atual
489+
AND v_pre_requisito_aprendido
490+
AND v_conhecimento_arcano_suficiente THEN
491+
INSERT INTO feitico_aprendido(inventario_id, feitico_id)
492+
VALUES (v_inventario_id, p_feitico_id);
490493
END IF;
491494

492-
IF NOT v_pre_requisito_aprendido THEN
493-
RAISE NOTICE 'O personagem % não tem o pré-requisito necessário para este feitiço.', p_personagem_id;
494-
RETURN p_personagem_id;
495-
END IF;
496-
497-
IF NOT v_conhecimento_arcano_suficiente THEN
498-
RAISE NOTICE 'O personagem % não tem conhecimento arcano suficiente para aprender este feitiço.', p_personagem_id;
499-
RETURN p_personagem_id;
500-
END IF;
501-
502-
INSERT INTO feitico_aprendido(inventario_id, feitico_id)
503-
VALUES (v_inventario_id, p_feitico_id);
504-
505495
RETURN p_personagem_id;
506496
END;
507497
$$ LANGUAGE plpgsql;

0 commit comments

Comments
 (0)