Objetivo
Este documento tem como objetivo explicar o funcionamento do processo de atualização de scripts de banco de dados do integrador.
Funcionamento
O sistema cria uma tabela contendo o número da versão dos scripts executados.
Quando executado, o sistema busca os scripts com número MAIOR que a versão atual do sistema, e os executa em ordem crescente.
O resultado do processo de atualização será exibido no console (prompt de comando) e será salvo em formato texto também no diretório "_logs", que será criado ao executar a aplicação.
Os scripts deverão estar em arquivos com extensão ".sql" e nomeados conforme a sua versão. Por exemplo:
- 22.01.001.sql
- 22.01.002.sql
- 22.01.003.sql
Utilização
Para utilizar como módulo de outros projetos:
- adicionar referência para o projeto IntegradorNativoVtex.Atualizador
- incluir em um arquivo appsettings.json as configurações necessárias no formato informado neste documento (próxima seção)
- invocar o método de extensão AddIntegradorNativoVtexAtualizador() em um objeto IServiceCollection para carregar as dependências necessárias
- invocar o método Executa() de um objeto do tipo IAtualizacaoScripts incluso via Injeção de Dependência
Configurações necessárias no arquivo 'appsettings.json'
{
"ConfiguracoesAtualizador": {
"CaminhoParaArquivosSql": "" // o endereço do diretório onde estão os arquivos sql
},
"ConnectionString": {
"Oracle": "", // a string de conexão do banco
}
}
Regras para scritps
- cada comando sql deverá terminar com /
- os scripts que NÃO estiverem em um bloco begin/end NÃO devem terminar em ;
- triggers deverão ser criadas com CREATE OR REPLACE
- antes da criação de uma nova tabela, verificar se a mesma não existe através da procedure SP_ECMIV_DROP_TABLE_IF_EXISTS
- antes da criação de uma nova sequence, verificar se a mesma não existe através da procedure SP_ECMIV_DROP_SEQ_IF_EXISTS
- a execução de scripts 'alter table' deverá ser feita através da procedure SP_ECMIV_ALTER_TABLE_IF_EXISTS
Criar um usuário
- durante a implantação, é necessário criar um novo usuário do tipo GESTOR
- para isso, deve-se executar o seguinte script, trocando os textos SEU_NOME e SEU_EMAIL pelas informações corretas do gestor a ser cadastrado:
INSERT INTO ECM_USUARIOS (DESCNOME, DESCSENHA, INDSITUACAO, EMAIL, SEQUSUARIONIVEL)
VALUES (SEU_NOME, '90F80B22F53A5D4D72F7B126EF4B1F44', 'A', SEU_EMAIL, 3)
/
- a senha criptografada é Mudar@123, e pode ser alterada no painel da aplicação
Para clientes novos que NÃO utilizaram o integrador em versão anterior à Janeiro de 2022
- o sistema cria a tabela de versionamento automaticamente
- todos os scripts de versionamento são executados em ordem crescente
Para clientes que utilizaram o integrador anteriormente à versão 22.01.000 (lançada em Janeiro de 2022)
- caso este script não seja executado, ao executar o atualizador os dados configurados (incluindo de usuários) serão sobrescritos com os valores padrão e precisarão ser reconfigurados
- executar TODO o seguinte script no banco de dados:
create table ecm_versionamento (
seqversao number not null,
versao varchar(10) not null,
usuultatualizacao VARCHAR2(50) not null,
dtaultatualizacao DATE not null)
/
CREATE SEQUENCE S_ECM_VERSIONAMENTO
/
CREATE OR REPLACE TRIGGER TSBI_ECM_VERSIONAMENTO
BEFORE INSERT ON ecm_versionamento
FOR EACH ROW
BEGIN
SELECT S_ECM_VERSIONAMENTO.NEXTVAL INTO :NEW.seqversao FROM DUAL;
END;
/
insert into ecm_versionamento
(versao, usuultatualizacao, dtaultatualizacao)
values
('1.01.000', 'CONSINCO', TO_DATE(sysdate, 'dd/mm/yyyy hh24:mi:ss'))
/