Referência da API
Este documento fornece detalhes técnicos sobre a funcionalidade e a implementação da ferramenta SQL Prettify.
Configuração da Ferramenta
Opções de Formatação
A ferramenta aceita as seguintes opções de configuração:
interface FormattingOptions {
indentSize: number; // 2, 4, or 8 spaces
keywordCase: "upper" | "lower" | "preserve";
uppercaseKeywords: boolean;
uppercaseFunctions: boolean;
uppercaseDataTypes: boolean;
alignCommas: boolean;
breakBeforeBooleanOperator: boolean;
}
Configuração Padrão
const defaultOptions: FormattingOptions = {
indentSize: 2,
keywordCase: "upper",
uppercaseKeywords: true,
uppercaseFunctions: true,
uppercaseDataTypes: true,
alignCommas: false,
breakBeforeBooleanOperator: true,
};
Palavras-chave SQL Compatíveis
Linguagem de Manipulação de Dados (DML)
- SELECT: Consultar dados de tabelas
- INSERT: Inserir novos registros
- UPDATE: Modificar registros existentes
- DELETE: Remover registros
Linguagem de Definição de Dados (DDL)
- CREATE: Criar objetos de banco de dados
- ALTER: Modificar objetos de banco de dados
- DROP: Remover objetos de banco de dados
- TRUNCATE: Remover todos os registros de uma tabela
Linguagem de Controle de Dados (DCL)
- GRANT: Conceder permissões
- REVOKE: Revogar permissões
Controle de Transações
- COMMIT: Salvar alterações da transação
- ROLLBACK: Desfazer alterações da transação
- SAVEPOINT: Criar pontos de salvamento
Funções SQL Compatíveis
Funções de Agregação
- COUNT: Contar linhas ou valores não nulos
- SUM: Calcular a soma dos valores
- AVG: Calcular a média dos valores
- MIN: Encontrar o valor mínimo
- MAX: Encontrar o valor máximo
Funções de String
- UPPER: Converter para maiúsculas
- LOWER: Converter para minúsculas
- LENGTH: Obter o comprimento da string
- SUBSTRING: Extrair uma substring
- CONCAT: Concatenar strings
- TRIM: Remover espaços iniciais e finais
Funções de Data/Hora
- NOW: Obter o timestamp atual
- DATE: Extrair a parte da data
- TIME: Extrair a parte da hora
- YEAR: Extrair o ano
- MONTH: Extrair o mês
- DAY: Extrair o dia
Funções Matemáticas
- ROUND: Arredondar para o número especificado de casas decimais
- FLOOR: Arredondar para baixo
- CEIL: Arredondar para cima
- ABS: Obter o valor absoluto
- SQRT: Calcular a raiz quadrada
- POWER: Elevar a uma potência
Tipos de Dados Compatíveis
Tipos Numéricos
- INT: Valores inteiros
- INTEGER: Valores inteiros
- BIGINT: Valores inteiros grandes
- SMALLINT: Valores inteiros pequenos
- TINYINT: Valores inteiros muito pequenos
- DECIMAL: Decimal de ponto fixo
- NUMERIC: Decimal de ponto fixo
- FLOAT: Número de ponto flutuante
- DOUBLE: Número de ponto flutuante de dupla precisão
- REAL: Número de ponto flutuante de precisão simples
Tipos de String
- CHAR: String de comprimento fixo
- VARCHAR: String de comprimento variável
- TEXT: Dados de texto grandes
- BLOB: Objeto binário grande
Tipos de Data/Hora
- DATE: Valores de data
- TIME: Valores de hora
- DATETIME: Valores de data e hora
- TIMESTAMP: Valores de timestamp
Outros Tipos
- BOOLEAN: Valores booleanos
- BIT: Valores de bits
- JSON: Dados JSON
Regras de Formatação
Regras de Recuo
- Cláusulas SELECT: Cada coluna em uma nova linha com recuo
- Cláusulas FROM: Nomes de tabelas com recuo adequado
- Cláusulas JOIN: Condições JOIN com recuo apropriado
- Cláusulas WHERE: Condições com recuo adequado
- GROUP BY: Colunas de agrupamento com recuo
- ORDER BY: Colunas de ordenação com recuo
Regras de Conversão de Caixa
- Palavras-chave: Converter para a caixa especificada (upper/lower/preserve)
- Funções: Converter nomes de funções para a caixa especificada
- Tipos de dados: Converter nomes de tipos de dados para a caixa especificada
- Identificadores: Preservar a caixa original para nomes de tabelas/colunas
Regras de Quebra de Linha
- Cláusulas principais: Quebrar antes de SELECT, FROM, WHERE, GROUP BY, ORDER BY
- Cláusulas JOIN: Quebrar antes de cada tipo de JOIN
- Operadores booleanos: Quebrar antes de AND/OR se ativado
- Alinhamento de vírgulas: Alinhar vírgulas em listas SELECT se ativado
Gerenciamento de Histórico
Estrutura do Registro de Histórico
interface HistoryRecord {
id: string;
input: string;
output: string;
options: FormattingOptions;
timestamp: number;
}
Operações de Histórico
- Adicionar Registro: Adicionar automaticamente novos registros de formatação
- Excluir Registro: Remover entradas específicas do histórico
- Limpar Histórico: Remover todos os registros do histórico
- Carregar Registro: Restaurar SQL e opções a partir do histórico
Limites de Armazenamento
- Máximo de Registros: 50 registros de histórico
- Local de Armazenamento: Armazenamento local do navegador
- Persistência: Os dados permanecem entre sessões do navegador
Tratamento de Erros
Erros Comuns
- Sintaxe SQL inválida: Consultas SQL malformadas
- Construções não suportadas: Recursos SQL não suportados pelo formatador
- Consultas grandes: Consultas que excedem os limites de processamento
- Limitações do navegador: Restrições de armazenamento local ou memória
Recuperação de Erros
- Validação de Sintaxe: Verificação básica da sintaxe SQL
- Degradação Gradual: Formatação parcial para consultas complexas
- Feedback ao Usuário: Mensagens de erro claras e sugestões
- Opções Alternativas: Abordagens alternativas de formatação
Considerações de Desempenho
Limites de Processamento
- Tamanho da Consulta: Lida com consultas de até 10.000 caracteres
- Complexidade: Suporta consultas aninhadas com até 10 níveis
- Tempo de Processamento: Normalmente processa consultas em menos de 100 ms
Recursos de Otimização
- Processamento Incremental: Processa apenas as partes alteradas
- Cache: Armazena em cache resultados de formatação para operações repetidas
- Carregamento Sob Demanda: Carrega registros de histórico quando necessário
Compatibilidade com Navegadores
Navegadores Compatíveis
- Chrome: Versão 80+
- Firefox: Versão 75+
- Safari: Versão 13+
- Edge: Versão 80+
Recursos Necessários
- Suporte a ES6: Arrow functions, template literals
- Local Storage: API de armazenamento local do navegador
- Clipboard API: Acesso moderno à área de transferência
- CSS Grid: Suporte de layout
Integração
Opções de Incorporação
A ferramenta pode ser integrada a outras aplicações:
- Incorporação com Iframe: Incorporar como iframe
- Integração via API: Usar diretamente as funções de formatação
- Integração como Componente: Incluir como componente Vue
Personalização
- Suporte a Temas: Temas claro e escuro
- Suporte a Idiomas: Múltiplas opções de idioma
- Estilo Personalizado: Opções de personalização com CSS