Функции для работы с фактами обеспечивают управление базой фактов, позволяя сохранять, извлекать, удалять и очищать данные.
fact.save
Сохраняет факт в базе данных фактов.
Сигнатура: fact.save(context string, factName string, factValue mixed, botId string = nil, clientId string = nil)
Аргументы:
context
— строка, определяющая контекст, в рамках которого существует факт.factName
— строка, определяющая название факта.factValue
— значение, определяющее содержимое факта.botId
— идентификатор бота. Необязательный аргумент.clientId
— идентификатор клиента. Необязательный аргумент.Возвращаемое значение: Отсутствует.
Примеры использования:
fact.save("место", "город", "Екатеринбург") // Факт, доступный всем ботам компании
fact.save("место", "город", "Екатеринбург", nil, @clientId) // Факт с привязкой к клиенту
fact.save("место", "город", "Екатеринбург", @botId) // Факт с привязкой к боту
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Факт с привязкой к боту и клиенту
fact.load
Извлекает факт из базы фактов.
Сигнатура: fact.load(context string, factName string, botId string = nil, clientId string = nil) mixed
Аргументы:
context
— строка, определяющая контекст, в рамках которого существует факт.factName
— строка, определяющая название факта.botId
— идентификатор бота. Необязательный аргумент.clientId
— идентификатор клиента. Необязательный аргумент.Возвращаемое значение: Содержимое факта.
Примеры использования:
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружает факт в переменную. $city содержит "Екатеринбург"
fact.delete
Удаляет факт из базы фактов.
Сигнатура: fact.delete(context string, factName string, botId string = nil, clientId string = nil)
Аргументы:
context
— строка, определяющая контекст, в рамках которого существует факт.factName
— строка, определяющая название факта.botId
— идентификатор бота. Необязательный аргумент.clientId
— идентификатор клиента. Необязательный аргумент.Возвращаемое значение: Отсутствует.
Примеры использования:
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружает факт в переменную. $city содержит "Екатеринбург"
fact.delete("место", "город", @botId, @clientId) // Удаляет факт
$city = fact.load("место", "город", @botId, @clientId) // Пытается загрузить удаленный факт. Теперь $city содержит nil
fact.clean
Удаляет факты из базы фактов.
Сигнатура: fact.clean(contexts string|List, factNames string|List = nil, factValues any = nil, botIds string|List = nil, clientIds string|List = nil)
Аргументы:
contexts
— строка или список строк, определяющий контексты, все факты которых будут удалены.factNames
— строка или список строк, определяющий названия фактов, которые будут удалены.factValues
— значение или список значений фактов, которые должны быть удалены.botIds
— идентификатор или список идентификаторов бота, для которых будут удалены факты.clientIds
— идентификатор или список идентификаторов клиентов, для которых будут удалены факты.Возвращаемое значение: Отсутствует.
Пример использования:
// Удалить все факты:
// - для контекста ctx;
// - факты с названиями fact1 и fact2;
// - все факты со значениями 123 и true;
// - все факты бота fa5d268c-bcc9-4734-a10f-3dfd357764ac;
// - все факты текущего клиента.
fact.clean("ctx", ["fact1", "fact2"], [123, true], "fa5d268c-bcc9-4734-a10f-3dfd357764ac", @clientId)
fact.query
Возвращает экземпляр FactQuery
для построения и выполнения запросов к базе фактов.
Сигнатура: fact.query() FactQuery
Аргументы: Аргументы отсутствуют.
Возвращаемое значение: Объект FactQuery
.
Пример использования:
// Добавляем пару фактов в базу
fact.save("место", "страна", "Россия")
fact.save("место", "город", "Екатеринбург")
// Загружаем в $places список мест, отсортированных по имени факта в порядке убывания
$places = fact.query().
select("name,value").
where("context", "=", "место").
sortBy("-name").
rows()
fact.cond
Возвращает экземпляр FactQueryCondition
для построения составных условий в запросах к базе фактов.
Сигнатура: fact.cond() FactQueryCondition
Аргументы: Аргументы отсутствуют.
Возвращаемое значение: Объект FactQueryCondition
.
Пример использования:
// Добавляем факты в базу
fact.save("города", "екатеринбург", "Екатеринбург")
fact.save("города", "москва", "Москва")
fact.save("города", "санкт-петербург", "Санкт-Петербург")
fact.save("города", "новосибирск", "Новосибирск")
// Находим один город, начинающийся на букву "м" или "т", и не равный "Екатеринбургу" и "Новосибирску"
$city = fact.query().
select("value").
where("context", "=", "города").
where(fact.cond().
where("name", "^@", "м").
orWhere("name", "^@", "т")).
where("name", "not in", ("екатеринбург", "новосибирск")).
one()