XBSDB - Кросс-браузерная библиотека баз данных в JavaScript
Чем является XBSDB и чем не является
XBSDB - это инструмент для работы с массивами данных в вашем JavaScript коде как с SQL-данными.
XBSDB хранит, упорядочивает и выбирает данные в ваших скриптах. Вы можете вставлять, удалять, обновлять и выбирать записи, вы можете использовать индексы чтобы сделать выборку быстрее. Основанные на JSON методы позволяют подготовить данные на одной стороне (браузер или веб-сервер) и загрузить их на другой (веб-сервер или браузер).
Использование XBSDB позволяет переместить некоторые операции БД с веб-сервера на клиентскую машину и сократить число запросов к веб-серверу.
Главная особенность XBSDB - это скроость операции 'select' на сложных WHERE-условиях. XBSDB разбирает WHERE-выражение в дерево простых условий всего 1 раз, затем это дерево используется для сокращения числа записей для обработки по каждому условию. Индексы также помогают сократить число обрабатываемых записей.
XBSDB состоит из 2-х частей - для браузера и для веб-сервера. Браузерная часть - это ядро библиотеки, веб-серверная лишь готовит данные для обмена. Браузерная часть написана на JavaScript, веб-серверная представленв в 2-х эквивалентных вариантах на Perl и PHP.
XBSDB - не SQL-сервер, так что она вообще не тратит время на разбор SQL-запросов. Создание парсера SQL-запросов не было целью разработки.
JavaScript - версия 1.5 и выше.
PHP - версия 5.x.x и выше, функции 'json_decode', 'json_encode'.
Perl - версия 5.x.x и выше, модуль 'JSON'.
Три базовых шага..
Подготовить данные на стороне веб-сервера, упаковать в JSON-строку. Это делается объектом класса XBSDB (ессно :-) на стороне веб-сервера. Оба класса в Perl и PHP функционально эквивалентны, имена методов одинаковы.
Запомните: XBSDB не предоставляет никаких средств для приёма\передачи данных, она лишь готовит их. Вы можете использовать ваши любимые методы для приёма\передачи строк (или даже хэшей).
Загрузить принятые данные в БД на стороне браузера, как-то их обработать, создать результат и подготовить к отправке на сервер. Функциональность ядра доступна через единственный публичный JavaScript класс XBSDB (опять :-) Каждый объект этого класса содержит одну БД. Он может создавать\удалять таблицы, вставлять\удалять\изменять\выбирать записи, создавать\удалать индексы, загружать и выгружать таблицы и свю БД. Он не может изменять структуру таблиц. Таблицы не связаны, и множественные операции выборки недоступны (пока).
Загрузить полученные клиентские данные в БД на стороне веб-сервера, экспортировать их. Это делается объектами того же класса. Напомню, Perl и PHP классы функционально эквивалентны.
Запомните: Класс Perl оперирует со ссылками, класс PHP - с переменными.
Для более детальной информации см. раздел API, для рабочего кода - демонстрационные примеры.
Верное WHERE-выражение может содержать скобки, ключевые слова 'and' и 'or', арифметические и логические операции, имена полей и числовые и строковые константы. Функции не допускаются. Лишние скобки тоже.
Парсер превращает WHERE-выражение в дерево объектов условий в несколько шагов:
Верное выражение полей может содержать скобки, арифметические операции, имена полей одной таблицы и числовые и строковые константы. Функции не допускаются.
При обработке WHERE-выражения XBSDB создаёт начальное множество, содержащее все записи.
Затем XBSDB уменьшает это множество по каждому OR- и AND-выражению в дереве:
Есть оптимизация - проверка на пустое множество и тд. Наконец, XBSDB возвращает уменьшенное начальное множество записей как результат.
Совет: чтобы повысить скорость обработки сложных WHERE-выражений ставьте более сильные условия первыми, это уменьшит число записей для обработке в самом её начале.
JavaScript
Индексы могут быть построены по любому верному выражению полей. Индексы могут повысить скорость выборки, а могут и нет - зависит от клиентского движка JavaScript. В некоторых случаях они делают операцию выборки быстрее до 7 раз. Конечно, каждый индекс делает операции вставки и замены медленнее.
Ещё раз - используйте индексы только и только если вы уверены что они полезны в вашем конкретном случае.
Perl, PHP
Сейчас не существует методов создания верного JavaScript индекса. Но вы можете создавать их: данные индекса - это просто массив номеров записей, сортированный по выражению индекса..
JavaScript
Верные типы полей на сегодня - это 'number' и 'string'.
Perl, PHP
Классы веб-серверной части не делают никакой проверки типов, так что будьте уверены, что типы значений соответствуют типам полей, описанным в структуре.
JavaScript
Локаль по умолчению - английская ('en'). Локали должны быть определены как свойства переменной класса XBSDB.prototype.Text типа объект. Для более детальной информации см. файлы локалей. Могут быть разные БД с разными установками локали. Локаль проявляется лшь в языке сервисных сообщений. Также присутствует русская локаль ('ru'). Другие файлы локалей приветствуются.
Perl, PHP
Не существует методов локалей на стороне веб-сервера, т.к. локаль БД - особенность только ядра XBSDB.
JavaScript
Почти все методы возвращают false по ошибке. Публичное поле sResultCode хранит строку кода результата: 'OK' значит OK, всё остальное - ошибка. Вы можете использовать метод ResultText для получения описания результата в текущей локали БД.
Perl
Все методы возвращают 0 по ошибке. Публичное поле sResultCode хранит строку кода результата: 'OK' значит OK, всё остальное - ошибка.
PHP
Все методы возвращают false по ошибке. Публичное поле sResultCode хранит строку кода результата: 'OK' значит OK, всё остальное - ошибка.
API is OOP based. There are objects only. No functions and globals at all - just class methods and object fields.
Class name is XBSDB in all platforms - JavaScript, Perl and PHP.
Объект XBSDB - Публичные поля
sResultCode - строка кода результата последней операции, по умолчанию 'OK'.
Описание:
sResultCode может содержать не только одно значение, но и строку с несколькими кодами ошибок, например, при разборе выражений.
См. файлы локалей (например, xbsdb_ru.js) для действительных кодов ошибок.
Класс XBSDB - Публичные методы
Синтаксис:
XBSDB([sLocale])
Параметры:
[string sLocale] - строка локали или null (то есть 'en')
Возвращаемые значения:
object - объект XBSDB
Описание:
Создаёт объект XBSDB. Затем проверяет параметр локали.
sLocale должен быть равен одному из свойств объекта XBSDB.prototype.Text. Иначе конструктор устанавливает локаль в 'en' и делает sResultCode = 'DB_LOCALE_NOT_DEFINED'.
Вы можете сделать любую строку свойством объекта XBSDB.prototype.Text, поэтому вы можете определить любую локаль - XBSDB это поймёт.
Если sLocale не строка, то конструктор устанавливает локаль в 'en' и делает sResultCode = 'DB_LOCALE_NOT_STRING'.
LoadDB - загружает БД целиком из дампа импорта БД
Синтаксис:
LoadDB(vDatabase)
Параметры:
object или string vDatabase - объект дампа импорта БД или его JSON-строка
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Очищает множество таблиц в БД, разбирает дамп, если он верен, то создаёт таблицы, заполняет данными, если есть, определяет индексы, если есть, и заполняет их данными.
Дамп может быть объектом или JSON-строкой объекта.
LoadDB никак не проверяет данные, этот метод предназначен для быстрой загрузки.
Используйте CreateTable, CreateIndex, InsertMany и InsertOne для той же операции с проверкой данных.
DumpDB - выдаёт всю БД (все таблицы) в дамп БД
Синтаксис:
DumpDB([sType])
Параметры:
[string sType] - тип дампа, 'object' или 'string' или null (то есть 'object')
Возвращаемые значения:
object или string при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Выдаёт все таблицы со структурой, данными и без индексов в объект (по умолчанию) или в JSON-строку.
LoadTable - загружает структуру, данные и индексы таблицы из дампа таблицы
Синтаксис:
LoadTable(sTableName, vTable)
Параметры:
string sTableName - имя таблицы
object or string vTable - table dump object or its JSON-string
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Разбирает дамп, если дамп верен, то очищат структуру, данные и индексы таблицы, устанавливает новую сртуктуру таблицы, заполняет её данными, если есть, определяет индексы, если есть и заполняет их данными.
Дамп может быть объектом или JSON-строкой объекта.
LoadTable никак не проверяет данные, этот метод предназначен для быстрой загрузки.
Используйте CreateTable, CreateIndex, InsertMany и InsertOne для той же операции с проверкой данных.
LoadTableData - загружает данные и индексы таблицы из дампа данных таблицы
Синтаксис:
LoadTableData(sTableName, vTable)
Параметры:
string sTableName - имя таблицы
object or string vTable - table dump object or its JSON-string
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Разбирает дамп, если дамп верен, то очищат данные и индексы таблицы, заполняет её данными, если есть, определяет индексы, если есть и заполняет их данными.
Дамп может быть объектом или JSON-строкой объекта.
LoadTableData никак не проверяет данные, этот метод предназначен для быстрой загрузки.
Используйте CreateIndex, InsertMany и InsertOne для той же операции с проверкой данных.
DumpTable - выдаёт таблицу без индексов в дамп таблицы
Синтаксис:
DumpTable(sTableName, [sType])
Параметры:
string sTableName - имя таблицы
[string sType] - тип дампа, 'object' или 'string' или null (то есть 'object')
Возвращаемые значения:
object или string при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Выдаёт таблицу со структурой, данными и без индексов в объект (по умолчанию) или в JSON-строку.
CreateTable - создаёт новую таблицу в БД
Синтаксис:
CreateTable(sTableName, aTableStructure)
Параметры:
string sTableName - имя таблицы
array aTableStructure - структура таблицы
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Создаёт новую таблиуц, если не существует, и устанавливает её структуру.
IsTable - проверяет есть таблица или нет
Синтаксис:
IsTable(sTableName)
Параметры:
string sTableName - имя таблицы
Возвращаемые значения:
true если таблица есть
false если таблицы нет
false по ошибке (sResultCode != 'OK')
Описание:
Возвращает true если параметр - не пустая строка и таблица с этим именем есть.
Возвращает false если параметр - не пустая строка и таблицы с этим именем нет.
Иначе возвращает false и устанавливает sResultCode в код ошибки.
ShowTables - выдаёт список всех таблиц БД
Синтаксис:
ShowTables()
Параметры:
нет
Возвращаемые значения:
array при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Возвращает несортированный массив строк - имён всех существующих таблиц в БД.
DropTable - удаляет таблицу из БД
Синтаксис:
DropTable(sTableName)
Параметры:
string sTableName - имя таблицы
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Проверяет, есть ли таблица, если есть - удаляет её и возвращает true.
ShowFields - выдаёт структуру таблицы
Синтаксис:
ShowFields(sTableName)
Параметры:
string sTableName - имя таблицы
Возвращаемые значения:
array при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Проверяет, есль ли таблица, если есть - возвращает её структуру - имена и типы полей как массив 2-х элементных массивов [имя, тип].
InsertOne - вставляет одну запись в таблицу
Синтаксис:
InsertOne(sTableName, aFieldValues, [aFieldNames])
Параметры:
string sTableName - имя таблицы
array aFieldValues - массив значений полей
[array aFieldNames] - массив имён полей или null
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Вставляет одну запись, потом перестраивает все индексы. Самый медленный способ вставить данные.
Если aFieldNames опущено, то поля используются в порядке структуры.
InsertMany - вставляет несколько записей в таблицу за 1 раз
Синтаксис:
InsertMany(sTableName, aRows, [aFieldNames])
Параметры:
string sTableName - имя таблицы
array aRows - массив массивов значений полей
[array aFieldNames] - массив имён полей или null
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Вставляет несколько записей, потом перестраивает все индексы.
Если aFieldNames опущено, то поля используются в порядке структуры.
Update - обновляет данные в таблице
Синтаксис:
Update(sTableName, aFieldValues, [aFieldNames], [sWhereExpr])
Параметры:
string sTableName - имя таблицы
array aFieldValues - массив значений полей
[array aFieldNames] - массив имён полей или null
[string sWhereExpr] - WHERE-выражение или null
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Устанавливает новые значения полей, потом перестраивает все индексы, связанные с каджым используемым полем. При большом количестве индексов операция медленная.
Если aFieldNames опущено, то поля используются в порядке структуры.
Если sWhereExpr опущено, то обновятся все записи.
Delete - удаляет данные из таблицы
Синтаксис:
Delete(sTableName, [sWhereExpr])
Параметры:
string sTableName - имя таблицы
[string sWhereExpr] - WHERE-выражение или null
Возвращаемые значения:
number - число удалённых записей при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Удаляет записи, если sWhereExpr опущено, то удалятся все записи.
Select - выбирает данные из таблицы
Синтаксис:
Select(sTableName, [aFieldNames], [sWhereExpr], [sOrderByExpr], [bDescFlag], [sGroupByExpr])
Параметры:
string sTableName - имя таблицы
[array aFieldNames] - массив имён полей результата или null
[string sWhereExpr] - WHERE-выражение или null
[string sOrderByExpr] - ORDER BY выражение для сортироваки вывода или null
[boolean bDescFlag] - DESC флаг обратной сортировки или null, действует только когда sOrderByExpr не пусто
[string sGroupByExpr] - GROUP BY выражение для группировки вывода или null
Возвращаемые значения:
array - массив массивов значений полей записей при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Выбирает записи и возвращает значения выбранных.
Если aFieldNames опущено, то поля используются в порядке структуры.
Если sWhereExpr опущено, то выберутся все записи.
SelectToRecordSet - выдаёт массив идентификаторов записей из таблицы
Синтаксис:
SelectToRecordSet(sTableName, [sWhereExpr], [sOrderByExpr], [bDescFlag], [sGroupByExpr])
Параметры:
string sTableName - имя таблицы
[string sWhereExpr] - WHERE-выражение или null
[string sOrderByExpr] - ORDER BY выражение для сортироваки вывода или null
[boolean bDescFlag] - DESC флаг обратной сортировки или null, действует только когда sOrderByExpr не пусто
[string sGroupByExpr] - GROUP BY выражение для группировки вывода или null
Возвращаемые значения:
array - массив идентификаторов записей при успехе
false по ошибке (sResultCode != 'OK')
Описание:
SelectToRecordSet выбирает записи и возвращает массиы подходящих идентфикаторов, который может использоваться в SelectFromRecordSet, возвращающем значения полей.
Этот метод предназначен для постраничного вывода - SelectToRecordSet обрабатывает sWhereExpr один раз, SelectFromRecordSet выбирает нужный диапазон.
SelectFromRecordSet - выбирает данные из массива индентификаторов
Синтаксис:
SelectFromRecordSet(sTableName, aRecords, [aFieldNames], [nOffset], [nLimit])
Параметры:
string sTableName - имя таблицы
array aRecords - массив идентификаторов записей
[array aFieldNames] - массив имён полей результата или null
[number nOffset] - смещение записей результата или null
[number nLimit] - лимит записей результата или null
Возвращаемые значения:
array - массив массивов значений полей записей при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Возвращает значения полей не более nLimit записей из массива индентификаторов, начиная с nOffset.
aRecords должен быть результатом SelectToRecordSet.
Этот метод предназначен для постраничного вывода - SelectToRecordSet обрабатывает sWhereExpr один раз, SelectFromRecordSet выбирает нужный диапазон.
Rows2String - получает строку из массива массивов значений полей записей, используя toString
Синтаксис:
Rows2String(aRows, sRowBefore, sRowAfter, sValueBefore, sValueAfter, sValueEmpty)
Параметры:
array aRows - массив массивов значений полей записей
string sRowBefore - строка для размещения перед каждой записью
string sRowAfter - строка для размещения после каждой записи
string sValueBefore - строка для размещения перед каждым полем
string sValueAfter - строка для размещения после каждого поля
string sEmptyString - строка для отображения пустого значения поля
Возвращаемые значения:
string при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Метод для лёгкого вывода массива, возвращённого методами Select и SelectFromRecordSet.
Rows2LocaleString - получает строку из массива массивов значений полей записей, используя toLocaleString
Синтаксис:
Rows2LocaleString(aRows, sRowBefore, sRowAfter, sValueBefore, sValueAfter, sValueEmpty)
Параметры:
array aRows - массив массивов значений полей записей
string sRowBefore - строка для размещения перед каждой записью
string sRowAfter - строка для размещения после каждой записи
string sValueBefore - строка для размещения перед каждым полем
string sValueAfter - строка для размещения после каждого поля
string sEmptyString - строка для отображения пустого значения поля
Возвращаемые значения:
string при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Тоже метод для лёгкого вывода массива, полученного от методов Select и SelectFromRecordSet. Использует toLocaleString, так что помните о форматах.
CreateIndex - создаёт новый ключ в таблице
Синтаксис:
CreateIndex(sTableName, sKeyExpr)
Параметры:
string sTableName - имя таблицы
string sKeyExpr - ключевое выражение
Возвращаемые значения:
string - идентификатор ключа (нормализованное ключевое выражение) при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Нормализует sKeyExpr, создаёт новый ключ, если нет, и потом строит его.
IsIndex - проверяет есть ключ или нет
Синтаксис:
IsIndex(sTableName, sKeyID)
Параметры:
string sTableName - имя таблицы
string sKeyID - идентификатор ключа
Возвращаемые значения:
true если ключ есть
false если ключа нет
false по ошибке (sResultCode != 'OK')
Описание:
Нормализует sKeyExp, проверяет наличие ключа с таким же идентификатором.
ShowIndexes - получает список всех ключей таблицы
Синтаксис:
ShowIndexes(sTableName)
Параметры:
string sTableName - имя таблицы
Возвращаемые значения:
array при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Возвращает несортированный массив идентификаторов ключей - нормализованных ключевых выражений.
DropIndex - удаляет ключ из таблицы
Синтаксис:
DropIndex(sTableName, sKeyID)
Параметры:
string sTableName - имя таблицы
string sKeyID - идентификатор ключа
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Нормализует sKeyExp, удаляет ключ с таким идентификатором, если есть.
ResultText - возвращает текст последнего результата в текущей локали БД
Синтаксис:
ResultText()
Параметры:
нет
Возвращаемые значения:
string
Описание:
Использует поле sResultCode field. Берёт значение sResultCode, замещает всё коды ошибок на сообщения, исходя из текущкей локали, и возвращает его.
SetLocale - устанавливает локаль БД
Синтаксис:
SetLocale(sLocale)
Параметры:
string sLocale - строка локали
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Устанавливает новую локаль, если параметр - строка, и определён в XBSDB.prototype.Text включаемым файлом.
GetLocale - получает локаль БД
Синтаксис:
GetLocale()
Параметры:
нет
Возвращаемые значения:
string при успехе
Описание:
Возвращает текущую локали БД.
Объект XBSDB - Публичные поля
sResultCode - строка кода результата последней операции, по умолчанию 'OK'
Описание:
Коды ошибок:
'JSON_ERROR' - ошибка в in JSON-преобразовании
'PARAM_EMPTY' - параметр пуст
'PARAM_TYPE_MISMATCH' - тип параметра не соответствует
'TABLE_NO_DATA' - таблица без данных
'TABLE_NO_STRUCTURE' - таблица без структуры
'TABLE_NOT_EXIST' - таблица не существует
Класс XBSDB - Публичные методы
Синтаксис:
new()
Параметры:
нет
Возвращаемые значения:
ссылка, привязанная к классу XBSDB
Описание:
Создаёт объект класса XBSDB.
setTableStructure - задаёт структуру таблицы с заданным именем
Синтаксис:
setTableStructure($name, \@structure)
Параметры:
string $name - имя таблицы
ref \@structure - структура таблицы как ссылка на массив пар [имя,тип]
Возвращаемые значения:
1 при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Очищает структуру, данные и индексы таблицы, если она существует, если нет - создаёт новую таблиицу с заданным именем.
Устанавливает структуру таблицы на заданную. Метод никак не проверяет структуру.
getTableStructure - выдаёт структуру таблицы с заданным именем
Синтаксис:
getTableStructure($name)
Параметры:
string $name - имя таблицы
Возвращаемые значения:
ref \@ при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Возвращает структуру таблицы как ссылку на массив пар [имя,тип]
setTableData - задаёт данные таблицы с заданным именем
Синтаксис:
setTableData($name, \@data)
Параметры:
string $name - имя таблицы
ref \@data - данные таблицы как ссылка на массив массивов значений полей
Возвращаемые значения:
1 при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Очищает данные и индексы таблицы, если она существует. Устанавливает данные таблицы на заданные. Метод никак не проверяет данные.
getTableData - выдаёт данные таблицы с заданным именем
Синтаксис:
getTableData($name)
Параметры:
string $name - имя таблицы
Возвращаемые значения:
ref \@ при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Возвращает данные таблицы как ссылку на массив массивов значений полей.
setTableKey - задаёт индекс таблицы с заданным именем
Синтаксис:
setTableKey($name, $expression, [\@data])
Параметры:
string $name - имя таблицы
string $expression - правильное индексное JavaScript выражение
[ref \@data] - данные индекса как ссылка на сортированный массив номеров записей или null (то есть нет данных, будут созданы ядром XBSDB на стороне браузера)
Возвращаемые значения:
1 при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Добавляет индекс если таблица существует. Существующий индекс с таким же выражением будет перезаписан.
Метод никак не проверяет индекс и не нормализует $expression, оно будет нормализовано автоматически на стороне браузера.
unsetTable - удаляет таблицу с заданным именем из БД
Синтаксис:
unsetTable($name)
Параметры:
string $name - имя таблицы
Возвращаемые значения:
1 при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Удаляет таблицу, если есть.
toHash - возвращает верный хэш БД или таблицы
Синтаксис:
toHash([$name])
Параметры:
[string $name] - имя таблицы или null (то есть вся БД)
Возвращаемые значения:
ref \% при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Возвращает верный хэш, содержащий структуру, данные и индексы одной таблицы или всю БД. Такой хэш может быть передан ядру XBSDB.
toJSON - возвращает верную JSON-строку хэша БД или таблицы
Синтаксис:
toJSON([$name])
Параметры:
[string $name] - имя таблицы or null (то есть вся БД)
Возвращаемые значения:
string при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Возвращает верную JSON-строку хэша, содержащего структуру, данные и индексы одной таблицы или всю БД. Такая строка может быть передана ядру XBSDB.
fromHash - загружает БД или таблицу из хэша
Синтаксис:
fromHash(\%hash, [$name])
Параметры:
ref \%hash - хэш, представляющий БД или таблицу
[string $name] - имя таблицы или null (то есть вся БД)
Возвращаемые значения:
1 при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Устанавливает всю БД или одну таблицу равной заданному хэшу.
Метод никак не проверяет хэш.
fromJSON - загружает БД или таблицу из верной JSON-строки
Синтаксис:
fromJSON($json_str, [$name])
Параметры:
string $json_str - JSON-строка хэша, представляющего БД или таблицу
[string $name] - имя таблицы или null (то есть вся БД)
Возвращаемые значения:
1 при успехе
0 по ошибке (sResultCode ne 'OK')
Описание:
Превращает JSON-строку в хэш, при успехе устанавливает всю БД или одну таблицу равной этому хэшу.
Метод никак не проверяет хэш.
Объект XBSDB - Публичные поля
sResultCode - строка кода результата последней операции, по умолчанию 'OK'
Описание:
Коды ошибок:
'JSON_ERROR' - ошибка в in JSON-преобразовании
'JSON_ERROR_CTRL_CHAR' - json_last_error() возвращает JSON_ERROR_CTRL_CHAR
'JSON_ERROR_DEPTH' - json_last_error() возвращает JSON_ERROR_DEPTH
'JSON_ERROR_SYNTAX' - json_last_error() возвращает JSON_ERROR_SYNTAX
'PARAM_EMPTY' - параметр пуст
'PARAM_TYPE_MISMATCH' - тип параметра не соответствует
'TABLE_NO_DATA' - таблица без данных
'TABLE_NO_STRUCTURE' - таблица без структуры
'TABLE_NOT_EXIST' - таблица не существует
Класс XBSDB - Публичные методы
setTableStructure - задаёт структуру таблицы с заданным именем
Синтаксис:
setTableStructure($name, $structure)
Параметры:
string $name - имя таблицы
array $structure - структура таблицы как массив пар [имя,тип]
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Очищает структуру, данные и индексы таблицы, если она существует, если нет - создаёт новую таблиицу с заданным именем. Устанавливает структуру таблицы на заданную. Метод никак не проверяет структуру.
getTableStructure - выдаёт структуру таблицы с заданным именем
Синтаксис:
getTableStructure($name)
Параметры:
string $name - имя таблицы
Возвращаемые значения:
array при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Возвращает структуру таблицы как массив пар [имя,тип]
setTableData - задаёт данные таблицы с заданным именем
Синтаксис:
setTableData($name, $data)
Параметры:
string $name - имя таблицы
array $data - данные таблицы как массив массивов значений полей
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Очищает данные и индексы таблицы, если она существует. Устанавливает данные таблицы на заданные. Метод никак не проверяет данные.
getTableData - выдаёт данные таблицы с заданным именем
Синтаксис:
getTableData($name)
Параметры:
string $name - имя таблицы
Возвращаемые значения:
array при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Возвращает данные таблицы как массив массивов значений полей.
setTableKey - задаёт индекс таблицы с заданным именем
Синтаксис:
setTableKey($name, $expression, [$data])
Параметры:
string $name - имя таблицы
string $expression - правильное индексное JavaScript выражение
[array $data] - данные индекса как сортированный массив номеров записей или null (то есть нет данных, будут созданы ядром XBSDB на стороне браузера)
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Добавляет индекс если таблица существует. Существующий индекс с таким же выражением будет перезаписан.
Метод никак не проверяет индекс и не нормализует $expression, оно будет нормализовано автоматически на стороне браузера.
unsetTable - удаляет таблицу с заданным именем из БД
Синтаксис:
unsetTable($name)
Параметры:
string $name - имя таблицы
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Удаляет таблицу, если есть.
toHash - возвращает верный объект БД или таблицы
Синтаксис:
toHash([$name])
Параметры:
[string $name] - имя таблицы или null (то есть вся БД)
Возвращаемые значения:
object при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Возвращает верный объект, содержащий структуру, данные и индексы одной таблицы или всю БД. Такой объект может быть передан ядру XBSDB.
toJSON - возвращает верную JSON-строку хэша БД или таблицы
Синтаксис:
toJSON([$name])
Параметры:
[string $name] - имя таблицы или null (то есть вся БД)
Возвращаемые значения:
string при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Возвращает верную JSON-строку объекта, содержащего структуру, данные и индексы одной таблицы или всю БД. Такая строка может быть передана ядру XBSDB.
fromHash - загружает БД или таблицу из объекта
Синтаксис:
fromHash($hash, [$name])
Параметры:
object $hash - объект, представляющий БД или таблицу
[string $name] - имя таблицы или null (то есть вся БД)
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Устанавливает всю БД или одну таблицу равной заданному объекту. Метод никак не проверяет объект.
fromJSON - загружает БД или таблицу из верной JSON-строки
Синтаксис:
fromJSON($json_str, [$name])
Параметры:
string $json_str - JSON-строка объекта, представляющего БД или таблицу
[string $name] - имя таблицы или null (то есть вся БД)
Возвращаемые значения:
true при успехе
false по ошибке (sResultCode != 'OK')
Описание:
Превращает JSON-строку в объект, при успехе устанавливает всю БД или одну таблицу равной этому объекту. Метод никак не проверяет объект.
Алексей Знаев, 2010, znaeff@mail.ru