Referencia de API
Este documento proporciona detalles técnicos sobre la funcionalidad y la implementación de la herramienta SQL Prettify.
Configuración de la herramienta
Opciones de formato
La herramienta acepta las siguientes opciones de configuración:
interface FormattingOptions {
indentSize: number; // 2, 4, or 8 spaces
keywordCase: "upper" | "lower" | "preserve";
uppercaseKeywords: boolean;
uppercaseFunctions: boolean;
uppercaseDataTypes: boolean;
alignCommas: boolean;
breakBeforeBooleanOperator: boolean;
}
Configuración predeterminada
const defaultOptions: FormattingOptions = {
indentSize: 2,
keywordCase: "upper",
uppercaseKeywords: true,
uppercaseFunctions: true,
uppercaseDataTypes: true,
alignCommas: false,
breakBeforeBooleanOperator: true,
};
Palabras clave SQL compatibles
Lenguaje de manipulación de datos (DML)
- SELECT: Consultar datos de tablas
- INSERT: Insertar nuevos registros
- UPDATE: Modificar registros existentes
- DELETE: Eliminar registros
Lenguaje de definición de datos (DDL)
- CREATE: Crear objetos de base de datos
- ALTER: Modificar objetos de base de datos
- DROP: Eliminar objetos de base de datos
- TRUNCATE: Eliminar todos los registros de una tabla
Lenguaje de control de datos (DCL)
- GRANT: Conceder permisos
- REVOKE: Revocar permisos
Control de transacciones
- COMMIT: Guardar cambios de la transacción
- ROLLBACK: Deshacer cambios de la transacción
- SAVEPOINT: Crear puntos de guardado
Funciones SQL compatibles
Funciones agregadas
- COUNT: Contar filas o valores no nulos
- SUM: Calcular la suma de valores
- AVG: Calcular el promedio de valores
- MIN: Encontrar el valor mínimo
- MAX: Encontrar el valor máximo
Funciones de cadena
- UPPER: Convertir a mayúsculas
- LOWER: Convertir a minúsculas
- LENGTH: Obtener la longitud de la cadena
- SUBSTRING: Extraer una subcadena
- CONCAT: Concatenar cadenas
- TRIM: Eliminar espacios al inicio y al final
Funciones de fecha/hora
- NOW: Obtener la marca de tiempo actual
- DATE: Extraer la parte de fecha
- TIME: Extraer la parte de hora
- YEAR: Extraer el año
- MONTH: Extraer el mes
- DAY: Extraer el día
Funciones matemáticas
- ROUND: Redondear al número especificado de decimales
- FLOOR: Redondear hacia abajo
- CEIL: Redondear hacia arriba
- ABS: Obtener el valor absoluto
- SQRT: Calcular la raíz cuadrada
- POWER: Elevar a una potencia
Tipos de datos compatibles
Tipos numéricos
- INT: Valores enteros
- INTEGER: Valores enteros
- BIGINT: Valores enteros grandes
- SMALLINT: Valores enteros pequeños
- TINYINT: Valores enteros muy pequeños
- DECIMAL: Decimal de punto fijo
- NUMERIC: Decimal de punto fijo
- FLOAT: Número de punto flotante
- DOUBLE: Número de punto flotante de doble precisión
- REAL: Número de punto flotante de precisión simple
Tipos de cadena
- CHAR: Cadena de longitud fija
- VARCHAR: Cadena de longitud variable
- TEXT: Datos de texto grandes
- BLOB: Objeto binario grande
Tipos de fecha/hora
- DATE: Valores de fecha
- TIME: Valores de hora
- DATETIME: Valores de fecha y hora
- TIMESTAMP: Valores de marca de tiempo
Otros tipos
- BOOLEAN: Valores booleanos
- BIT: Valores de bits
- JSON: Datos JSON
Reglas de formato
Reglas de sangría
- Cláusulas SELECT: Cada columna en una nueva línea con sangría
- Cláusulas FROM: Nombres de tabla con la sangría adecuada
- Cláusulas JOIN: Condiciones JOIN con la sangría adecuada
- Cláusulas WHERE: Condiciones con la sangría adecuada
- GROUP BY: Columnas de agrupación con sangría
- ORDER BY: Columnas de ordenación con sangría
Reglas de conversión de mayúsculas/minúsculas
- Palabras clave: Convertir al caso especificado (upper/lower/preserve)
- Funciones: Convertir los nombres de función al caso especificado
- Tipos de datos: Convertir los nombres de tipos de datos al caso especificado
- Identificadores: Conservar el caso original de nombres de tablas y columnas
Reglas de salto de línea
- Cláusulas principales: Saltar línea antes de SELECT, FROM, WHERE, GROUP BY, ORDER BY
- Cláusulas JOIN: Saltar línea antes de cada tipo de JOIN
- Operadores booleanos: Saltar línea antes de AND/OR si está habilitado
- Alineación de comas: Alinear comas en listas SELECT si está habilitado
Gestión del historial
Estructura del registro de historial
interface HistoryRecord {
id: string;
input: string;
output: string;
options: FormattingOptions;
timestamp: number;
}
Operaciones del historial
- Agregar registro: Añadir automáticamente nuevos registros de formato
- Eliminar registro: Quitar entradas específicas del historial
- Borrar historial: Eliminar todos los registros del historial
- Cargar registro: Restaurar SQL y opciones desde el historial
Límites de almacenamiento
- Máximo de registros: 50 registros de historial
- Ubicación de almacenamiento: Almacenamiento local del navegador
- Persistencia: Los datos persisten entre sesiones del navegador
Manejo de errores
Errores comunes
- Sintaxis SQL no válida: Consultas SQL mal formadas
- Construcciones no compatibles: Funciones SQL no compatibles con el formateador
- Consultas grandes: Consultas que exceden los límites de procesamiento
- Limitaciones del navegador: Restricciones de almacenamiento local o memoria
Recuperación de errores
- Validación de sintaxis: Verificación básica de la sintaxis SQL
- Degradación elegante: Formato parcial para consultas complejas
- Comentarios al usuario: Mensajes de error claros y sugerencias
- Opciones alternativas: Métodos alternativos de formato
Consideraciones de rendimiento
Límites de procesamiento
- Tamaño de consulta: Maneja consultas de hasta 10.000 caracteres
- Complejidad: Admite consultas anidadas de hasta 10 niveles
- Tiempo de procesamiento: Normalmente procesa consultas en menos de 100 ms
Funciones de optimización
- Procesamiento incremental: Solo procesa las partes modificadas
- Caché: Guarda en caché resultados de formato para operaciones repetidas
- Carga diferida: Carga el historial bajo demanda
Compatibilidad del navegador
Navegadores compatibles
- Chrome: Versión 80+
- Firefox: Versión 75+
- Safari: Versión 13+
- Edge: Versión 80+
Funciones requeridas
- Compatibilidad con ES6: Funciones flecha, template literals
- Local Storage: API de almacenamiento local del navegador
- Clipboard API: Acceso moderno al portapapeles
- CSS Grid: Soporte de diseño
Integración
Opciones de integración
La herramienta puede integrarse en otras aplicaciones:
- Integración con iframe: Incrustar como iframe
- Integración por API: Usar directamente las funciones de formato
- Integración como componente: Incluir como componente de Vue
Personalización
- Compatibilidad con temas: Temas claro y oscuro
- Compatibilidad con idiomas: Múltiples opciones de idioma
- Estilo personalizado: Opciones de personalización con CSS