Справочник API
В этом документе приведены технические сведения о возможностях и реализации инструмента SQL Prettify.
Конфигурация инструмента
Параметры форматирования
Инструмент поддерживает следующие параметры конфигурации:
interface FormattingOptions {
indentSize: number; // 2, 4, or 8 spaces
keywordCase: "upper" | "lower" | "preserve";
uppercaseKeywords: boolean;
uppercaseFunctions: boolean;
uppercaseDataTypes: boolean;
alignCommas: boolean;
breakBeforeBooleanOperator: boolean;
}
Конфигурация по умолчанию
const defaultOptions: FormattingOptions = {
indentSize: 2,
keywordCase: "upper",
uppercaseKeywords: true,
uppercaseFunctions: true,
uppercaseDataTypes: true,
alignCommas: false,
breakBeforeBooleanOperator: true,
};
Поддерживаемые ключевые слова SQL
Язык манипулирования данными (DML)
- SELECT: Получение данных из таблиц
- INSERT: Вставка новых записей
- UPDATE: Изменение существующих записей
- DELETE: Удаление записей
Язык определения данных (DDL)
- CREATE: Создание объектов базы данных
- ALTER: Изменение объектов базы данных
- DROP: Удаление объектов базы данных
- TRUNCATE: Удаление всех записей из таблицы
Язык управления данными (DCL)
- GRANT: Предоставление разрешений
- REVOKE: Отзыв разрешений
Управление транзакциями
- COMMIT: Сохранение изменений транзакции
- ROLLBACK: Отмена изменений транзакции
- SAVEPOINT: Создание точек сохранения
Поддерживаемые функции SQL
Агрегатные функции
- COUNT: Подсчет строк или ненулевых значений
- SUM: Вычисление суммы значений
- AVG: Вычисление среднего значения
- MIN: Поиск минимального значения
- MAX: Поиск максимального значения
Строковые функции
- UPPER: Преобразование в верхний регистр
- LOWER: Преобразование в нижний регистр
- LENGTH: Получение длины строки
- SUBSTRING: Извлечение подстроки
- CONCAT: Объединение строк
- TRIM: Удаление пробелов в начале и конце
Функции даты/времени
- NOW: Получение текущей метки времени
- DATE: Извлечение части даты
- TIME: Извлечение части времени
- YEAR: Извлечение года
- MONTH: Извлечение месяца
- DAY: Извлечение дня
Математические функции
- ROUND: Округление до указанного числа знаков после запятой
- FLOOR: Округление вниз
- CEIL: Округление вверх
- ABS: Получение абсолютного значения
- SQRT: Вычисление квадратного корня
- POWER: Возведение в степень
Поддерживаемые типы данных
Числовые типы
- INT: Целочисленные значения
- INTEGER: Целочисленные значения
- BIGINT: Большие целочисленные значения
- SMALLINT: Малые целочисленные значения
- TINYINT: Очень малые целочисленные значения
- DECIMAL: Десятичное число с фиксированной точкой
- NUMERIC: Десятичное число с фиксированной точкой
- FLOAT: Число с плавающей точкой
- DOUBLE: Число двойной точности с плавающей точкой
- REAL: Число одинарной точности с плавающей точкой
Строковые типы
- CHAR: Строка фиксированной длины
- VARCHAR: Строка переменной длины
- TEXT: Большие текстовые данные
- BLOB: Большой двоичный объект
Типы даты/времени
- DATE: Значения даты
- TIME: Значения времени
- DATETIME: Значения даты и времени
- TIMESTAMP: Значения метки времени
Другие типы
- BOOLEAN: Логические значения
- BIT: Битовые значения
- JSON: Данные JSON
Правила форматирования
Правила отступов
- Клаузы SELECT: Каждый столбец с новой строки с отступом
- Клаузы FROM: Имена таблиц с корректными отступами
- Клаузы JOIN: Условия JOIN с подходящими отступами
- Клаузы WHERE: Условия с корректными отступами
- GROUP BY: Столбцы группировки с отступами
- ORDER BY: Столбцы сортировки с отступами
Правила изменения регистра
- Ключевые слова: Преобразование в указанный регистр (upper/lower/preserve)
- Функции: Преобразование имен функций в указанный регистр
- Типы данных: Преобразование имен типов данных в указанный регистр
- Идентификаторы: Сохранение исходного регистра имен таблиц и столбцов
Правила переноса строк
- Основные клаузы: Перенос перед SELECT, FROM, WHERE, GROUP BY, ORDER BY
- Клаузы JOIN: Перенос перед каждым типом JOIN
- Логические операторы: Перенос перед AND/OR, если включено
- Выравнивание запятых: Выравнивание запятых в списках SELECT, если включено
Управление историей
Структура записи истории
interface HistoryRecord {
id: string;
input: string;
output: string;
options: FormattingOptions;
timestamp: number;
}
Операции с историей
- Добавить запись: Автоматически добавлять новые записи форматирования
- Удалить запись: Удалять отдельные элементы истории
- Очистить историю: Удалять все записи истории
- Загрузить запись: Восстанавливать SQL и параметры из истории
Ограничения хранения
- Максимум записей: 50 записей истории
- Место хранения: Локальное хранилище браузера
- Постоянство: Данные сохраняются между сессиями браузера
Обработка ошибок
Распространенные ошибки
- Недопустимый синтаксис SQL: Некорректно составленные SQL-запросы
- Неподдерживаемые конструкции: Возможности SQL, не поддерживаемые форматтером
- Крупные запросы: Запросы, превышающие ограничения обработки
- Ограничения браузера: Ограничения локального хранилища или памяти
Восстановление после ошибок
- Проверка синтаксиса: Базовая проверка синтаксиса SQL
- Плавная деградация: Частичное форматирование для сложных запросов
- Обратная связь пользователю: Понятные сообщения об ошибках и рекомендации
- Резервные варианты: Альтернативные подходы к форматированию
Производительность
Ограничения обработки
- Размер запроса: Обрабатывает запросы до 10 000 символов
- Сложность: Поддерживает вложенные запросы до 10 уровней
- Время обработки: Обычно обрабатывает запросы менее чем за 100 мс
Возможности оптимизации
- Инкрементальная обработка: Обрабатывает только измененные части
- Кэширование: Кэширует результаты форматирования для повторяющихся операций
- Ленивая загрузка: Загружает записи истории по требованию
Совместимость с браузерами
Поддерживаемые браузеры
- Chrome: Версия 80+
- Firefox: Версия 75+
- Safari: Версия 13+
- Edge: Версия 80+
Требуемые возможности
- Поддержка ES6: Стрелочные функции, template literals
- Local Storage: API локального хранилища браузера
- Clipboard API: Современный доступ к буферу обмена
- CSS Grid: Поддержка макета
Интеграция
Варианты встраивания
Инструмент можно интегрировать в другие приложения:
- Встраивание через iframe: Встроить как iframe
- Интеграция через API: Использовать функции форматирования напрямую
- Интеграция как компонента: Подключить как компонент Vue
Настройка
- Поддержка тем: Светлая и темная темы
- Поддержка языков: Несколько языковых вариантов
- Пользовательские стили: Возможности настройки CSS