feat(): Criação do endpoint Schema Database para verificação de integridade de banco de dados
This commit is contained in:
parent
6c1371ccd9
commit
c1ee420741
7 changed files with 150 additions and 19 deletions
|
|
@ -13,6 +13,7 @@ import { convertMBtoGB } from '@/shared/utils/convertMBtoGB';
|
|||
// Hooks responsaveis em consumir os endpoint's
|
||||
import { useLogServerHook } from '@/packages/administrativo/hooks/Log/useLogServerHook';
|
||||
import { useLogDatabaseHook } from '@/packages/administrativo/hooks/Log/useLogDatabaseHook';
|
||||
import { useLogDatabaseSchemaHook } from '@/packages/administrativo/hooks/Log/useLogDatabaseSchemaHook';
|
||||
import { useLogGedHook } from '@/packages/administrativo/hooks/Log/useLogGedHook';
|
||||
import { useLogDiskHook } from '@/packages/administrativo/hooks/Log/useLogDiskHook';
|
||||
import { useLogBackupHook } from '@/packages/administrativo/hooks/Log/useLogBackupHook';
|
||||
|
|
@ -42,6 +43,7 @@ export default function ClientePage() {
|
|||
// Hooks de logs (server e database)
|
||||
const { logServer, fetchLogServer } = useLogServerHook();
|
||||
const { logDatabase, fetchLogDatabase } = useLogDatabaseHook();
|
||||
const { logDatabaseSchema, fetchLogDatabaseSchema } = useLogDatabaseSchemaHook();
|
||||
const { logGed, fetchLogGed } = useLogGedHook();
|
||||
const { logDisk, fetchLogDisk } = useLogDiskHook();
|
||||
const { logBackup, fetchLogBackup } = useLogBackupHook();
|
||||
|
|
@ -76,45 +78,61 @@ export default function ClientePage() {
|
|||
console.error("Erro ao buscar log do banco:", error);
|
||||
|
||||
} finally {
|
||||
|
||||
// E SOMENTE após a conclusão da busca do banco
|
||||
// (mesmo que dê erro ou traga 0 registros),
|
||||
// executa a busca no GED
|
||||
try {
|
||||
|
||||
await fetchLogGed(Number(id));
|
||||
await fetchLogDatabaseSchema();
|
||||
|
||||
console.log(logDatabaseSchema)
|
||||
|
||||
} catch (error) {
|
||||
console.error("Erro ao buscar log do GED:", error);
|
||||
console.error("Erro ao buscar Schema do Banco de Dados:", error);
|
||||
|
||||
} finally {
|
||||
// E SOMENTE após a conclusão da busca do GED
|
||||
|
||||
// E SOMENTE após a conclusão da busca do banco
|
||||
// (mesmo que dê erro ou traga 0 registros),
|
||||
// executa a busca no Disk
|
||||
// executa a busca no GED
|
||||
try {
|
||||
|
||||
await fetchLogDisk(Number(id));
|
||||
await fetchLogGed(Number(id));
|
||||
} catch (error) {
|
||||
console.error("Erro ao buscar log do Disk:", error);
|
||||
|
||||
console.error("Erro ao buscar log do GED:", error);
|
||||
|
||||
} finally {
|
||||
// E SOMENTE após a conclusão da busca do Disk
|
||||
// E SOMENTE após a conclusão da busca do GED
|
||||
// (mesmo que dê erro ou traga 0 registros),
|
||||
// executa a busca no Backup
|
||||
// executa a busca no Disk
|
||||
try {
|
||||
|
||||
await fetchLogBackup(Number(id));
|
||||
await fetchLogDisk(Number(id));
|
||||
} catch (error) {
|
||||
console.error("Erro ao buscar log do Backup:", error);
|
||||
|
||||
console.error("Erro ao buscar log do Disk:", error);
|
||||
|
||||
} finally {
|
||||
// E SOMENTE após a conclusão da busca do Backup
|
||||
// E SOMENTE após a conclusão da busca do Disk
|
||||
// (mesmo que dê erro ou traga 0 registros),
|
||||
// executa a busca no Warning
|
||||
// executa a busca no Backup
|
||||
try {
|
||||
|
||||
await fetchLogWarning(Number(id));
|
||||
await fetchLogBackup(Number(id));
|
||||
} catch (error) {
|
||||
console.error("Erro ao buscar log do Warning:", error);
|
||||
console.error("Erro ao buscar log do Backup:", error);
|
||||
|
||||
} finally {
|
||||
// E SOMENTE após a conclusão da busca do Backup
|
||||
// (mesmo que dê erro ou traga 0 registros),
|
||||
// executa a busca no Warning
|
||||
try {
|
||||
|
||||
await fetchLogWarning(Number(id));
|
||||
} catch (error) {
|
||||
console.error("Erro ao buscar log do Warning:", error);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ export default function Page() {
|
|||
|
||||
useEffect(() => {
|
||||
|
||||
//REdireciona para a tela de clientes
|
||||
//Redireciona para a tela de clientes
|
||||
router.replace('/administrativo/clientes');
|
||||
|
||||
|
||||
}, [router]);
|
||||
|
||||
return null; // Página em branco (não renderiza nada)
|
||||
|
|
|
|||
|
|
@ -5,5 +5,5 @@
|
|||
"prefix": "api/v1/",
|
||||
"content_type": "application/json"
|
||||
},
|
||||
"api_debit": "https://admin.oriustecnologia.com/router.php"
|
||||
"api_debit": "https://admin.oriustecnologia.com/router.php",
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
'use server'
|
||||
// Indica que este módulo será executado no lado do servidor (DatabaseSchema Action do Next.js)
|
||||
|
||||
import { Methods } from '@/shared/services/api/enums/ApiMethodEnum';
|
||||
// Importa o enumerador que contém os métodos HTTP padronizados (GET, POST, PUT, DELETE)
|
||||
|
||||
import API from '@/shared/services/api/Api';
|
||||
// Importa a classe responsável por realizar requisições HTTP à API backend
|
||||
|
||||
import { withClientErrorHandler } from '@/withClientErrorHandler/withClientErrorHandler';
|
||||
// Importa o wrapper que padroniza o tratamento de erros e respostas para o cliente
|
||||
|
||||
// Função principal responsável por buscar um usuário específico pelo seu ID
|
||||
async function executeLogDatabaseSchemaData() {
|
||||
|
||||
// Cria uma nova instância da classe de comunicação com a API
|
||||
const api = new API();
|
||||
|
||||
// Envia uma requisição GET ao endpoint que retorna os dados de um usuário específico
|
||||
const response = await api.send({
|
||||
'method': Methods.GET, // Define o método HTTP da requisição
|
||||
'endpoint': `administrativo/firebird-schema/` // Monta dinamicamente o endpoint com o ID do usuário
|
||||
});
|
||||
|
||||
// Retorna a resposta recebida da API (dados do usuário ou erro)
|
||||
return response;
|
||||
}
|
||||
|
||||
// Exporta a função encapsulada com o handler de erro
|
||||
// Isso garante que exceções sejam tratadas de forma padronizada na camada superior
|
||||
export const LogDatabaseSchemaData = withClientErrorHandler(executeLogDatabaseSchemaData);
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
'use client';
|
||||
|
||||
import { useState } from 'react';
|
||||
import { LogDatabaseSchemaInterface } from '../../interfaces/Log/LogDatabaseSchemaInterface';
|
||||
import { LogDatabaseSchemaService } from '../../services/Log/LogDatabaseSchemaService';
|
||||
import { useResponse } from '@/shared/components/response/ResponseContext';
|
||||
|
||||
export const useLogDatabaseSchemaHook = () => {
|
||||
const { setResponse } = useResponse();
|
||||
const [logDatabaseSchema, setLog] = useState<LogDatabaseSchemaInterface | null>(null);
|
||||
|
||||
const fetchLogDatabaseSchema = async () => {
|
||||
try {
|
||||
const response = await LogDatabaseSchemaService();
|
||||
setLog(response as LogDatabaseSchemaInterface);
|
||||
setResponse(response);
|
||||
} catch (error) {
|
||||
console.error("Erro ao buscar informação do banco de dados:", error);
|
||||
}
|
||||
};
|
||||
|
||||
return { logDatabaseSchema, fetchLogDatabaseSchema };
|
||||
};
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
/**
|
||||
* Interface principal do retorno contendo metadados do banco:
|
||||
* tabelas, views e procedures.
|
||||
*/
|
||||
export interface LogDatabaseSchemaInterface {
|
||||
tables: TableMetadata[];
|
||||
views: ViewMetadata[];
|
||||
procedures: ProcedureMetadata[];
|
||||
}
|
||||
|
||||
/**
|
||||
* Estrutura de cada item dentro de "tables".
|
||||
*/
|
||||
export interface TableMetadata {
|
||||
TABLE_NAME: string;
|
||||
FIELD_NAME: string;
|
||||
NULLABLE: string; // Vem como string ("NULL ")
|
||||
FIELD_TYPE: string;
|
||||
DEFAULT_VALUE: string | null;
|
||||
DESCRIPTION: string | null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Estrutura de cada item dentro de "views".
|
||||
*/
|
||||
export interface ViewMetadata {
|
||||
VIEW_NAME: string;
|
||||
VIEW_DEFINITION: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Estrutura de cada item dentro de "procedures".
|
||||
*/
|
||||
export interface ProcedureMetadata {
|
||||
PROCEDURE_NAME: string;
|
||||
SOURCE_CODE: string;
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
'use server'
|
||||
// Indica que este arquivo é um "DatabaseSchema Action", executado no lado do servidor pelo Next.js
|
||||
|
||||
import { withClientErrorHandler } from "@/withClientErrorHandler/withClientErrorHandler";
|
||||
// Importa o wrapper responsável por padronizar o tratamento de erros nas requisições do Loge
|
||||
|
||||
import { LogDatabaseSchemaData } from "../../data/Log/LogDatabaseSchemaData";
|
||||
// Importa a função que acessa a camada de dados e retorna as informações do usuário a partir do ID
|
||||
|
||||
// Função assíncrona principal responsável por buscar um usuário pelo seu ID
|
||||
async function executeLogDatabaseSchemaService() {
|
||||
|
||||
// Executa a função de busca de usuário, passando o ID recebido como parâmetro
|
||||
const response = await LogDatabaseSchemaData();
|
||||
|
||||
// Retorna a resposta vinda da camada de dados (usuário encontrado ou erro)
|
||||
return response;
|
||||
}
|
||||
|
||||
// Exporta o serviço com o tratamento de erros encapsulado
|
||||
// O wrapper "withClientErrorHandler" assegura respostas consistentes em caso de falhas
|
||||
export const LogDatabaseSchemaService = withClientErrorHandler(executeLogDatabaseSchemaService);
|
||||
Loading…
Add table
Reference in a new issue