# Padrões de Integrações > [name=Joelton da silva de moura] > [time=Dec 23, 2021 11:47] Neste documento será trato o padrão de integração ### Padrão de criação de objeto Para criação de objeto no banco de dados externo deve manter um padrão de nomenclatura: **inicial objeto** + **psi** + **nome objeto**. <div style=" background-color: #e9e9e9; color: inherit; height: 90; width: 570PX; border-radius: 15px 0px 15px 0px; padding: 5px "> vw_psi_filial </br> prc_psi_filial </br> pkg_psi_filial </div> ### Fluxo de consulta com base externa As consulta de select entre clint, api e banco externo deve ser trata utilizando recurso de view com isso evitamos repetição de sql e melhoramos a semântica. Além de facilitar futuras integrações onde pode ser passado qual views o sistema já espera receber. ```mermaid stateDiagram req_consulta --> api api --> req_consulta api --> view view --> bd_externo bd_externo --> resultado resultado --> api ``` ### Modelos de Views **Regras de Modelagem** - As view deve ser modeladas de forma que retorne apenas o espelho da entidade ou seja deve ser evitado multiplos join dentro da view. - Os domínios que representa ativo ou inativo devera retorna **A** ou **I**. - Campos de **FK** e **PK** nas views tem que está identificados - Para melhor peformace retorna apenas campos que será utilizado evitando o uso do famoso retorna tudo ou ordenação. - Retorna campos sem mascará Ex.: CNPJ 00.000.000/0000-00 - 00000000000000 <details> <summary > <a style=" font-weight: bold; color: #000">&nbsp;&nbsp;vw_psi_filial</a> </summary> nesta view será retornada os dados das empresas. | column_name | data_type | data_length | nullable | comments | | ----------- | --------- | ----------- | -------- | -------------------------------------- | | DTEXCLUSAO | DATE | 7 | Y | Indica a data de inativação da filial. | | FANTASIA | STRING | 25 | Y | | | CODFIL_PK | STRING | 2 | N | | | RAZAOSOCIAL | STRING | 40 | N | | | CIDADE | STRING | 30 | Y | | | UF | STRING | 2 | Y | | | ATIVO | STRING | 1 | N | Indica se filial está ativa ou inativa | --- DML da view ```sql create or replace view vw_psi_filial as select CODIGO AS CODFIL_PK ,RAZAOSOCIAL ,FANTASIA ,CIDADE ,UF ,DECODE(pcfilial.dtexclusao, NULL, 'A', 'I') AS ATIVO ,DTEXCLUSAO from pcfilial ``` </details> <details> <summary > <a style=" font-weight: bold; color: #000">&nbsp;&nbsp;vw_psi_fornecedores</a> </summary> View que retorna dados dos fornecedores | column_name | data_type | data_length | nullable | comments | | ------------ | --------- | ----------- | -------- | -------- | | TIPOFORNEC | VARCHAR2 | 1 | Y | | | CODFORNEC_PK | NUMBER | 22 | N | | | RAZAOSOCIAL | VARCHAR2 | 60 | N | | | CIDADE | VARCHAR2 | 15 | Y | | | ESTADO | VARCHAR2 | 2 | Y | | | CNPJ | VARCHAR2 | 18 | Y | | | REVENDA | VARCHAR2 | 1 | Y | | | DTEXCLUSAO | DATE | 7 | Y | | | FANTASIA | VARCHAR2 | 60 | Y | | | Ativo | VARCHAR2 | 1 | Y | | --- DML da view ```sql CREATE OR REPLACE VIEW vw_psi_fornecedores AS SELECT PCFORNEC.CODFORNEC AS CODFORNEC_PK, PCFORNEC.FORNECEDOR AS RAZAOSOCIAL, PCFORNEC.FANTASIA, REGEXP_REPLACE(PCFORNEC.CGC, '[^[:digit:]]') AS CNPJ, PCFORNEC.ESTADO, PCFORNEC.CIDADE, PCFORNEC.DTEXCLUSAO, DECODE(DTEXCLUSAO, NULL, 'A', 'I') ATIVO, CASE WHEN PCFORNEC.TIPOFORNEC = 'V' THEN 'COMÉRCIO VAREJISTA' WHEN PCFORNEC.TIPOFORNEC = 'D' THEN 'CENTRAL DE DISTRIBUIÇÃO' WHEN PCFORNEC.TIPOFORNEC = 'C' THEN 'COMÉRCIO ATACADISTA' WHEN PCFORNEC.TIPOFORNEC = 'I' THEN 'INDÚSTRIA' WHEN PCFORNEC.TIPOFORNEC = 'S' THEN 'PRESTADOR SERVIÇOS' ELSE 'OUTROS' END TIPOFORNEC, CASE WHEN PCFORNEC.REVENDA = 'B' THEN 'BENEFICIAMENTO' WHEN PCFORNEC.REVENDA = 'C' THEN 'COMUNICAÇÃO' WHEN PCFORNEC.REVENDA = 'O' THEN 'CONSUMO' WHEN PCFORNEC.REVENDA = 'E' THEN 'ENERGIA' WHEN PCFORNEC.REVENDA = 'X' THEN 'EXPORTADOR' WHEN PCFORNEC.REVENDA = 'N' THEN 'NÃO REVENDA' WHEN PCFORNEC.REVENDA = 'P' THEN 'PROFISSIONAL LIBERAL' WHEN PCFORNEC.REVENDA = 'T' THEN 'TRANSPORTADORA' END REVENDA FROM PCFORNEC ``` </details> <details> <summary > <a style=" font-weight: bold; color: #000">&nbsp;&nbsp;vw_psi_marcas</a> </summary> View que retorna dados de marcas | column_name | data_type | data_length | nullable | comments | | ----------- | --------- | ----------- | -------- | ---------------------------------------- | | column_name | data_type | data_length | nullable | comments | | CODMARCA_PK | NUMBER | 22 | N | Indica o código da marca. | | MARCA | VARCHAR2 | 40 | Y | Indica o descrição da marca. | | ATIVO | VARCHAR2 | 1 | Y | Indica se a marca esta ativa ou inativa. | --- DML da view ```sql create or replace view vw_psi_marcas as SELECT PCMARCA.CODMARCA as CODMARCA_PK, PCMARCA.MARCA, PCMARCA.ATIVO FROM PCMARCA ``` </details> ### Criação de novas entidades Se no projeto for preciso criar uma nova entidade que não tenha no cliente a criação da mesma não dever ser feita na base externa (`base do cliente`) contendo na sua nomenclatura que se trata de um objeto integrador.