-- Neste arquivo deve ser considerada toda lógica que deve estar no banco de dados APOS o mesmo ser criado. Será chamado no createDB dentro do repositório, e é um item opcional.
-- Se voce precisar de algo que seja executado na sua aplicação antes destes procedimentos, voce pode adicionar o numero 0 na frente do nome do arquivo, pois eles serão ordenados de forma crescente antes de sua execução
-- O mesmo vale para se voce precisar que algo seja executado apos este processo. Nenhum arquivo é obrigatorio, e se presentes devem ser inobtrusivos.

-- Função deve verificar todo o banco de dados e definir que o ID da tabela recebe o Nextval de Sequence Homonima
CREATE OR REPLACE FUNCTION PUBLIC.FUN_MARCAR_SEQUENCE_DEFAULT() 
RETURNS INTEGER AS
$BD$
DECLARE
  RREG RECORD;
  TSQL TEXT;
  IQTDE INTEGER;
BEGIN
  SELECT 0 INTO IQTDE ;
  FOR RREG IN
    SELECT S.SEQUENCE_SCHEMA||'.'||SPLIT_PART(S.SEQUENCE_NAME,'_',1) AS NOMETABELA,
    C.COLUMN_NAME AS NOMECOLUNA, S.SEQUENCE_SCHEMA AS ESQUEMA, S.SEQUENCE_NAME AS NOMESEQUENCIA
    FROM INFORMATION_SCHEMA.SEQUENCES S
    JOIN INFORMATION_SCHEMA.COLUMNS C ON UPPER(C.COLUMN_NAME) = 'ID' AND C.TABLE_SCHEMA = S.SEQUENCE_SCHEMA
      AND C.TABLE_NAME = SPLIT_PART(S.SEQUENCE_NAME,'_',1)
    WHERE C.COLUMN_DEFAULT IS NULL
  LOOP
    SELECT INTO TSQL 'ALTER TABLE '||RREG.NOMETABELA||' ALTER COLUMN '||RREG.NOMECOLUNA||
      ' SET DEFAULT NEXTVAL('''||RREG.ESQUEMA||'.'||RREG.NOMESEQUENCIA||''');';
    RAISE NOTICE '%',TSQL;
    EXECUTE TSQL;
    SELECT INTO IQTDE IQTDE + 1;    
  END LOOP;
  
  RETURN IQTDE;
END;
$BD$
LANGUAGE PLPGSQL;
----
---- Executa a função que aplica o nextval para todos os IDS, de todas as Tabelas
SELECT PUBLIC.FUN_MARCAR_SEQUENCE_DEFAULT();


-- object recreation