Package-level declarations

Types

Link copied to clipboard
data class ArchiveNum(val num: IntNum)

Структура данных, описывающая директиву ARCHIVE_NUM

Link copied to clipboard
data class Bool(val value: Boolean)

Логический тип

Link copied to clipboard
data class Element(val value: Id)

Элемент - одно из полей SELECT

Link copied to clipboard
sealed interface Expression

Абстрактный интерфейс для выражений в запросе WHERE

Link copied to clipboard
data class FilterLang(val lang: LanguageFilter)

Структура данных, описывающая директиву FILTERLANG

Link copied to clipboard
data class FloatNum(val value: Double)

Условно Float, чтобы соответствовало грамматике, на самом деле под капотом Double

Link copied to clipboard
data class From(val sources: List<Source>)

Структура данных, описывающая директиву FROM

Link copied to clipboard
sealed interface FromSql<T>

Как таковой этот интерфейс не нужен, т.к. нигде не используется в полиморфизме, но пусть будет для единообразия и удобства

Link copied to clipboard
data class GroupBy(val fields: List<IntNum>)

Структура данных, описывающая директиву GROUP BY

Link copied to clipboard
data class Id(val value: String)

Тип идентификатора - любая строка в одиночных кавычках

Link copied to clipboard
data class IntNum(val value: Long)

Условно Int, чтобы соответствовало грамматике, на самом деле под капотом Long

Link copied to clipboard
sealed interface LanguageFilter

Базовый интерфейс фильтра по языку

Link copied to clipboard
data class Limit(val direction: Limit.Direction, val limit: IntNum)

Структура данных, описывающая директиву LIMIT

Link copied to clipboard
data object Null : FromSql<Null>

Для обозначения NULL в логических выражениях

Link copied to clipboard
data class Remote(val system: RemoteSystemSpec)

Структура данных, описывающая директиву REMOTE

Link copied to clipboard
sealed interface RemoteSystemSpec

Базовый интерфейс спецификации удаленного источника данных

Link copied to clipboard
data class Select(var type: Select.Type, val elements: List<Element> = listOf())

Структура данных, описывающая директиву SELECT

Link copied to clipboard
data class SortBy(val fields: List<SortBy.SortByField>)

Структура данных, описывающая директиву SORT BY/ORDER BY

Link copied to clipboard
data class Source(val value: Id)

Источник - одно из полей FROM

Link copied to clipboard
data class SqlQuery(val select: Select, val from: From, val where: Where? = null, val remote: Remote? = null, val timeRange: TimeRange? = null, val archiveNum: ArchiveNum? = null, val sortBy: SortBy? = null, val groupBy: GroupBy? = null, val limit: Limit? = null, val filterLang: FilterLang? = null)

data class, в котором хранится разобранный SqlQuery-запрос

Link copied to clipboard
Link copied to clipboard
class SqlQueryParseException(message: String, val lineNum: Int = -1, val offendingSymbolStartIndex: Int = -1, val offendingSymbolEndIndex: Int = -1) : SqlQueryException
Link copied to clipboard
Link copied to clipboard
data class Str(val value: String)

Строковый тип - любая строка в двойных кавычках

Link copied to clipboard
data class TimeRange(val start: Str, val end: Str, val mode: IntNum, val bonus: IntNum)

Структура данных, описывающая директиву TIMERANGE

Link copied to clipboard
data class Where(val expression: Expression)

Структура данных, описывающая директиву WHERE