w

Справочник 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

Правила форматирования

Правила отступов

  1. Клаузы SELECT: Каждый столбец с новой строки с отступом
  2. Клаузы FROM: Имена таблиц с корректными отступами
  3. Клаузы JOIN: Условия JOIN с подходящими отступами
  4. Клаузы WHERE: Условия с корректными отступами
  5. GROUP BY: Столбцы группировки с отступами
  6. ORDER BY: Столбцы сортировки с отступами

Правила изменения регистра

  1. Ключевые слова: Преобразование в указанный регистр (upper/lower/preserve)
  2. Функции: Преобразование имен функций в указанный регистр
  3. Типы данных: Преобразование имен типов данных в указанный регистр
  4. Идентификаторы: Сохранение исходного регистра имен таблиц и столбцов

Правила переноса строк

  1. Основные клаузы: Перенос перед SELECT, FROM, WHERE, GROUP BY, ORDER BY
  2. Клаузы JOIN: Перенос перед каждым типом JOIN
  3. Логические операторы: Перенос перед AND/OR, если включено
  4. Выравнивание запятых: Выравнивание запятых в списках SELECT, если включено

Управление историей

Структура записи истории

interface HistoryRecord {
  id: string;
  input: string;
  output: string;
  options: FormattingOptions;
  timestamp: number;
}

Операции с историей

  • Добавить запись: Автоматически добавлять новые записи форматирования
  • Удалить запись: Удалять отдельные элементы истории
  • Очистить историю: Удалять все записи истории
  • Загрузить запись: Восстанавливать SQL и параметры из истории

Ограничения хранения

  • Максимум записей: 50 записей истории
  • Место хранения: Локальное хранилище браузера
  • Постоянство: Данные сохраняются между сессиями браузера

Обработка ошибок

Распространенные ошибки

  1. Недопустимый синтаксис SQL: Некорректно составленные SQL-запросы
  2. Неподдерживаемые конструкции: Возможности SQL, не поддерживаемые форматтером
  3. Крупные запросы: Запросы, превышающие ограничения обработки
  4. Ограничения браузера: Ограничения локального хранилища или памяти

Восстановление после ошибок

  1. Проверка синтаксиса: Базовая проверка синтаксиса SQL
  2. Плавная деградация: Частичное форматирование для сложных запросов
  3. Обратная связь пользователю: Понятные сообщения об ошибках и рекомендации
  4. Резервные варианты: Альтернативные подходы к форматированию

Производительность

Ограничения обработки

  • Размер запроса: Обрабатывает запросы до 10 000 символов
  • Сложность: Поддерживает вложенные запросы до 10 уровней
  • Время обработки: Обычно обрабатывает запросы менее чем за 100 мс

Возможности оптимизации

  • Инкрементальная обработка: Обрабатывает только измененные части
  • Кэширование: Кэширует результаты форматирования для повторяющихся операций
  • Ленивая загрузка: Загружает записи истории по требованию

Совместимость с браузерами

Поддерживаемые браузеры

  • Chrome: Версия 80+
  • Firefox: Версия 75+
  • Safari: Версия 13+
  • Edge: Версия 80+

Требуемые возможности

  • Поддержка ES6: Стрелочные функции, template literals
  • Local Storage: API локального хранилища браузера
  • Clipboard API: Современный доступ к буферу обмена
  • CSS Grid: Поддержка макета

Интеграция

Варианты встраивания

Инструмент можно интегрировать в другие приложения:

  1. Встраивание через iframe: Встроить как iframe
  2. Интеграция через API: Использовать функции форматирования напрямую
  3. Интеграция как компонента: Подключить как компонент Vue

Настройка

  • Поддержка тем: Светлая и темная темы
  • Поддержка языков: Несколько языковых вариантов
  • Пользовательские стили: Возможности настройки CSS
Была ли эта страница полезной?