Функции языка написания контрактов выполняют операции с данными полученными в секции data контракта: чтение значений из базы данных и запись значений в базу данных, преобразование типов значений и установление связи между контрактами.
Функции не возвращают ошибок, так как все проверки на ошибки происходят автоматически. При генерации ошибки в любой из функции, контракт прекращает свою работу и выводит описание ошибки в специальном окне.
Функция возвращает значение колонки amount с типом money c поиском записи по значению указанной колонки таблицы. (Для получения данных типа money нельзя использовать функции DBInt() и DBIntExt(), возвращающие значения типа int).
- tblname - имя таблицы в базе данных;
- column - имя колонки, по которой будет идти поиск записи;
- id - значение для поиска записи, выборка column=id.
mymoney = DBAmount("dlt_wallets"), "wallet_id", $wallet)
Функция возвращает значение указанного параметра из настроек государства (таблица state_parameters).
- name - имя получаемого параметра.
Println( StateValue("gov_account"))
Функция возвращает числовое значение из таблицы базы данных по указанному id записи.
- tblname - имя таблицы в базе данных.
- name - имя колонки, значение которой будет возвращено.
- id - идентификатор поля id записи, из которой будет взято значение.
var val int
val = DBInt(Table("mytable"), "counter", 1)
Функция возвращает числовое значение из таблицы базы данных с поиском записи по указанному полю и значению.
- tblname - имя таблицы в базе данных.
- name - имя колонки, значение которой будет возвращено.
- val - значение, по которому будет искаться запись.
- column - имя колонки, по которой будет искаться запись; таблица должна иметь индекс по данной колонке.
var val int
val = DBIntExt(Table("mytable"), "balance", $wallet, "wallet_id")
Функция возвращает числовое значение из колонки таблицы базы данных с поиском записи по условиям указанным в where.
- tblname - имя таблицы в базе данных.
- name - имя колонки, значение которой будет возвращено.
- where - условия запроса для выборки записей; имена полей располагаются слева от знаков сравнения; для подстановки параметров используются символы ? или $.
- params - параметры, подставляемые в условия запроса в заданной последовательности.
var val int
val = DBIntWhere(Table("mytable"), "counter", "idgroup = ? and statue=?", mygroup, 1 )
Функция возвращает строковое значение из колонки таблицы базы данных по id записи.
- tblname - имя таблицы в базе данных.
- name - имя колонки, значение которой будет возвращено.
- id - идентификатор поля id записи, из которой будет взято значение.
var val string
val = DBString(Table("mytable"), "name", $citizen)
Функция возвращает строковое значение из таблицы базы данных с поиском записи по указанному полю и значению.
- tblname - имя таблицы в базе данных;
- name - имя колонки, значение которой будет возвращено;
- val - значение, по которому будет искаться запись;
- column - имя колонки, по которой будет искаться запись. Таблица должна иметь индекс по данной колонке.
var val string
val = DBStringExt(Table("mytable"), "address", $Company, "company" )
Функция возвращает строковое значение из колонки таблицы базы данных с поиском записи по условиям указанным в where.
- tblname - имя таблицы в базе данных.
- name - имя колонки, значение которой будет возвращено.
- where - условия запроса для выборки записей; имена полей располагаются слева от знаков сравнения; для подстановки параметров используются символы ? или $.
- params - параметры, подставляемые в условия запроса в заданной последовательности.
var val string
val = DBStringWhere(Table("mytable"), "address", "idgroup = ? and company=?",
mygroup, "My company" )
DBGetList(tblname string, name string, offset int, limit int, order string, where string, params ...) array
Функция возвращает массив со списком строковых значений одной колонки у записей таблицы, полученных по условиям указанным в where.
- tblname - имя таблицы в базе данных;
- column - имя колонки, из которого будут браться значения;
- offset - смещение для начала выборки записей;
- limit - количество получаемых записей, если ограничение не нужно значение параметра -1;
- order - сортировка по колонкам; может быть пустой строкой;
- where - условия запроса для выборки записей; имена полей располагаются слева от знаков сравнения; для подстановки параметров используются символы ? или $;
- params - параметры, подставляемые в условия запроса в заданной последовательности.
var ret array
ret = DBGetList(Table("mytable"), "name", 0, -1, "", "idval > ? and idval <= ? and company=?",
10, 200, "My company")
DBGetTable(tblname string, columns string, offset int, limit int, order string, where string, params ...) array
Функция возвращает ассоциативных массивов типа map, содержащий список значений перечисленных колонок записей таблицы, полученных по условиям указанным в where. Все значения в ассоциативном массиве имеют тип string, поэтому впоследствии их следует приводить к нужному типу.
- tblname - имя таблицы в базе данных;
- columns - имена получаемых колонок разделенные запятой;
- offset - смещение для начала выборки записей;
- limit - количество получаемых записей, если ограничение не нужно значение параметра -1;
- order - сортировка по колонкам; может быть пустой строкой;
- where - условия запроса для выборки записей; имена полей располагаются слева от знаков сравнения; для подстановки параметров используются символы ? или $;
- params - параметры, подставляемые в условия запроса в заданной последовательности.
var ret array
ret = DBGetTable(Table("mytable"), "name,idval,company", 0, -1, "", "idval > ? and idval <= ? and company=?",
10, 200, "My company")
var i int
while i<Len(ret) {
var row map
row = ret[i]
myfunc(Sprintf("%s %s", row["name"], row["company"]), Int(row["idval"]) )
i++
}
Функция добавляет запись в указанную таблицу и возвращает id вставленной записи.
- tblname - имя таблицы в базе данных.
- params - список через запятую имен колонок, в которые будут записаны перечисленные в val значения.
- val - список через запятую значений для перечисленных в params столбцов; значения могут иметь строковый или числовой тип.
DBInsert(Table("mytable"), "name,amount", "John Dow", 100)
Функция изменяет значения столбцов в таблице в записи с указанным id.
- tblname - имя таблицы в базе данных.
- id - идентификатор id изменяемой записи.
- params - список имен изменяемых колонок; перечисляются через запятую.
- val - список значений для указанных столбцов перечисленных в params; могут иметь строковый или числовой тип.
DBUpdate(Table("mytable"), myid, "name,amount", "John Dow", 100)
Функция обновляет столбцы в записи, у которой колонка имеет заданное значение. Таблица должна иметь индекс по указанной колонке.
- tblname - имя таблицы в базе данных.
- column - имя колонки, по которой будет идти поиск записи.
- value - значение для поиска записи в колонке.
- params - список имен колонок, в которые будут записаны значения указанные в val; перечисляются через запятую.
- val - список значений для записи в колонки перечисленные в params; могут иметь строковый или числовой тип.
DBUpdateWhere(Table("mytable"), "address", addr, "name,amount", "John Dow", 100)
Функция вызывает контракт по его имени. В передаваемом массиве должны быть перечислены все параметры, указанные в section data контракта.
- name - имя вызываемого контракта.
- params - ассоциативный массив с входными данными для контракта.
var par map
par["Name"] = "My Name"
CallContract("MyContract", par)
Функция проверяет, совпадает ли имя выполняемого контракта с одним из имен, перечисленных в параметрах. Как правило используется для контроля доступа контрактов к таблицам. Функция прописывается в полях Permissions при редактировании колонок таблицы или в полях Insert и New Column в разделе Table permission.
- name - имя контракта.
ContractAccess("MyContract")
ContractAccess("MyContract","SimpleContract")
Функция вызывает секцию conditions из контрактов с указанными именами. У таких контрактов блок data должен быть пустой. Если секция conditions выполнилась без ошибок, то возвращается истина. Если в процессе выполнения сгенерировалась ошибка, то родительский контракт также завершится с данной ошибкой. Эта функция, как правило, используется для контроля доступа контрактов к таблицам и может вызываться в полях Permissions при редактировании системных таблиц.
- name - имя контракта.
ContractConditions("MainCondition")
Функция преобразует целое число int или string в число с плавающей точкой.
- val - целое число или строка.
val = Float("567.989") + Float(232)
Функция преобразует строку с шестнадцатеричной кодировкой в значение типа bytes (последовательность байт).
- hexdata - строка, содержащая шестнадцатеричную запись.
var val bytes
val = HexToBytes("34fe4501a4d80094")
Функция преобразует строковое значение в целое число.
- val - строка содержащая число.
mystr = "-37763499007332"
val = Int(mystr)
Функция возвращает количество элементов в указанном массиве.
- val - массив типа array.
if Len(mylist) == 0 {
...
}
Функция возвращает адрес кошелька по публичному ключу в шестнадцатеричной кодировке.
- hexkey - публичный ключ в шестнадцатеричном виде.
var wallet int
wallet = PubToID("fa5e78.....34abd6")
Функция возвращает хэш SHA256 от указанной строки.
- val - входящая строка, для которой нужно вычислить хэш Sha256.
var sha string
sha = Sha256("Test message")
Функция формирует строку на основе указанного шаблона и параметров, можно использовать %d (число), %s (строка), %f (float), %v (для любых типов).
- pattern - шаблон для формирования строки.
out = Sprintf("%s=%d", mypar, 6448)
Функция преобразует числовое значение типа int или float в строку.
- val - целое или число с плавающей точкой.
myfloat = 5.678
val = Str(myfloat)
Функция возвращает полное имя таблицы с числовым префиксом номера государства, в котором вызывается контракт и со знаком подчеркивания между префиксом и именем. Позволяет делать контракты независимыми от государства.
- tblname - часть имени таблицы в базе данных после знака подчеркивания.
Println( Table("citizens")) // may be 1_citizens or 2_citizens etc.
Функция обновляет указанный контракт (не допускается изменение контракта через функции DBUpdate).
- name - имя контракта;
- value - текст контракта;
- conditions - права доступа на изменение контракта.
UpdateContract("MyContract", source, "СonditionsContract($citizen)")
Функция обновляет указанное меню (не допускается изменение меню через функции DBUpdate).
- name - имя обновляемого меню.
- value - текст меню.
- conditions - права доступа на изменение меню.
UpdateMenu("main_menu", mymenu, "СonditionsContract($citizen)")
Функция обновляет указанную страницу (не допускается изменение страницы через функции DBUpdate).
- name - имя обновляемой страницы;
- value - текст страницы;
- menu - имя привязанного к странице меню;
- conditions - права доступа на изменение страницы.
UpdatePage("default_dashboard",mypage, "main_menu", "СonditionsContract($citizen)")
Функция обновляет параметр государства в таблице state_parameters (не допускается изменение параметров через функции DBUpdate).
- name - имя параметра;
- value - значение параметра;
- conditions - права доступа на изменение параметра.
UpdateParam("myparam", "new value", "СonditionsContract($citizen)")