Функции для работы с фактами обеспечивают управление базой фактов, позволяя сохранять, извлекать, удалять и очищать данные.
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 = nil, factNames: string | List = nil, factValues: any = nil, botIds: string | List = nil, clientIds: string | List = nil)
Аргументы:
contexts
— строка или список строк, задающий контексты.factNames
— строка или список строк, задающий названия фактов.factValues
— значение или список значений, задающий значения фактов.botIds
— строка или список строк, задающий идентификаторы ботов.clientIds
— строка или список строк, задающий идентификаторы клиентов.Все аргументы являются опциональными. Если передан хотя бы один аргумент, удаляются все факты, соответствующие указанным значениям.
Удаление происходит по каждому аргументу отдельно. Например, если передать одновременно factNames
и botIds
, то будут удалены все факты:
factNames
.Возвращаемое значение: Отсутствует.
Пример использования:
// Удаляет все факты с контекстом "Контекст", а так же все факты с названиями fact1, fact2, вне зависимости от контекста или значений
// Удаление происходит для всех ботов и клиентов
fact.clean("Контекст", ["fact1", "fact2"], [123, 456])
// Удаляет все факты указанного бота
fact.clean(nil, nil, nil, "fa5d268c-bcc9-4734-a10f-3dfd357764ac")
// Удаляет все факты текущего клиента
fact.clean(nil, nil, nil, nil, @clientId)
// Удаляет все факты с названиями factA и factB, вне зависимости от контекста или значений
fact.clean(nil, ["factA", "factB"])
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()