tarantoolscript
Version:
TypeScript definitions for Tarantool Lua API.
149 lines (131 loc) • 7.35 kB
TypeScript
import { IteratorType } from '../idx';
import { UpdateOperator } from '../space';
export interface TupleObject {
[key: number | string]: any;
/** Mapping function for Lua `#` operator. */
length: LuaLengthMethod<number>;
/** The same as `pairs(...)` */
ipairs(key?: unknown, options?: { iterator?: IteratorType, after?: number | AnyTable }): LuaIterable<LuaMultiReturn<[number, unknown]>>;
/**
* If `t` is a tuple instance, `t:totable()` will return all fields, `t:totable(1)` will return all fields starting with field number 1,
* `t:totable(1,5)` will return all fields between field number 1 and field number 5.
*
* It is preferable to use `t:totable()` rather than `t:unpack()`.
* @returns Table
*/
totable(start_field_number?: number, end_field_number?: number): AnyTable;
/**
* The `tuple_object:totable()` function only returns a table containing the values.
* But the `tuple_object:tomap()` function returns a table containing not only the values, but also the key:value pairs.
*
* This only works if the tuple comes from a space that has been formatted with a format clause.
* @param options Table. The only possible option is `names_only`.
* - If `names_only` is `false` or omitted (default), then all the fields will appear twice, first with numeric headings and second with name headings.
* - If `names_only` is `true`, then all the fields will appear only once, with name headings.
* @returns Table
*/
tomap(options?: { names_only?: boolean }): AnyTable;
/**
* If `t` is a tuple instance, `t:bsize()` will return the number of bytes in the tuple.
* With both the memtx storage engine and the vinyl storage engine the default maximum is one megabyte
* (`memtx_max_tuple_size` or `vinyl_max_tuple_size`). Every field has one or more “length” bytes preceding the actual contents,
* so `bsize()` returns a value which is slightly greater than the sum of the lengths of the contents.
*
* The value does not include the size of “struct tuple” (for the current size of this structure look in the tuple.h file in Tarantool’s source code).
*
* @returns Number of bytes.
*/
bsize(): number;
find: {
/**
* @param searchValue Value to search.
* @returns The number of the first field in `t` that matches the search value.
*/
(searchValue: unknown): number;
/**
* @param fieldNumber Indicates start searching at field number.
* @param searchValue Value to search.
* @returns The number of the first field in `t` that matches the search value.
*/
(fieldNumber: number, searchValue: unknown): number;
};
findall: {
/**
* @param searchValue Value to search.
* @returns The array numbers of the fields in `t` that matches the search value.
*/
(searchValue: unknown): number[];
/**
* @param fieldNumber Indicates start searching at field number.
* @param searchValue Value to search.
* @returns The array numbers of the fields in `t` that matches the search value.
*/
(fieldNumber: number, searchValue: unknown): number[];
};
/**
* An analogue of the Lua `next()` function, but for a tuple object.
* When called without arguments, `tuple:next()` returns the first field from a tuple.
* Otherwise, it returns the field next to the indicated position.
*
* However `tuple:next()` is not really efficient, and it is better to use `tuple:pairs()/ipairs()`.
* @param pos The number of the field for which you want to find the following value.
* @returns Field number and field value.
*/
next(pos?: number): LuaMultiReturn<[number, number]>;
/**
* In Lua, lua-table-value:pairs() is a method which returns: `function`, `lua-table-value`, `nil`.
* Tarantool has extended this so that `tuple-value:pairs()` returns: `function`, `tuple-value`, `nil`.
* It is useful for Lua iterators, because Lua iterators traverse a value’s components until an end marker is reached.
*/
pairs(): LuaIterable<LuaMultiReturn<[number, unknown]>>;
/**
* If `t` is a tuple instance,` t:transform(start-field-number,fields-to-remove)` will return a tuple where,
* starting from field `start-field-number`, a number of fields (`fields-to-remove`) are removed.
* Optionally one can add more arguments after `fields-to-remove` to indicate new values that will replace what was removed.
*
* If the original tuple comes from a space that has been formatted with a format clause, the formatting will not be preserved for the result tuple.
* @param startFieldNumber Field index. Base 1, may be negative.
* @param fieldsToRemove Number of fields for remove.
* @param fieldValues New values that will replace what was removed.
*/
transform(startFieldNumber: number, fieldsToRemove: number, ...fieldValues: unknown[]): TupleObject;
/**
* If `t` is a tuple instance, `t:unpack()` will return all fields, `t:unpack(1)` will return all fields starting with field number 1,
* `t:unpack(1,5)` will return all fields between field number 1 and field number 5.
* @param startFieldNumber Field to start.
*/
unpack(startFieldNumber?: number): LuaMultiReturn<unknown[]>;
/**
* If `t` is a tuple instance, `t:unpack()` will return all fields, `t:unpack(1)` will return all fields starting with field number 1,
* `t:unpack(1,5)` will return all fields between field number 1 and field number 5.
* @param startFieldNumber Field to start.
* @param endFieldNumber Field to end.
*/
unpack(startFieldNumber: number, endFieldNumber?: number): LuaMultiReturn<unknown[]>;
/**
* Update a tuple.
* If the original tuple comes from a space that has been formatted with a format clause, the formatting will be preserved for the result tuple.
* @param params Array.
*
* Parameters array should contain next values by their indexes:
* - [1] - operator (`string`) – operation type represented in string (e.g. ‘=’ for ‘assign new value’).
* - [2] - field_no (`number`) – what field the operation will apply to. The field number can be negative, meaning the position from the end of tuple.
* (`#tuple + negative field number + 1`).
* - [3] - value (`lua_value`) – what value will be applied.
*/
update(params: [UpdateOperator, number, unknown][]): TupleObject;
/**
* The same as `tuple_object:update()`, but ignores errors. In case of an error the tuple is left intact, but an error message is printed.
* Only client errors are ignored, such as a bad field type, or wrong field index/name.
* System errors, such as OOM, are not ignored and raised just like with a normal `update()`.
* Note that only bad operations are ignored. All correct operations are applied.
* @param params Array.
*
* Parameters array should contain next values by their indexes:
* - [1] - operator (`string`) – operation type represented in string (e.g. ‘=’ for ‘assign new value’).
* - [2] - field_no (`number`) – what field the operation will apply to. The field number can be negative, meaning the position from the end of tuple.
* (`#tuple + negative field number + 1`).
* - [3] - value (`lua_value`) – what value will be applied.
*/
upsert(params: [UpdateOperator, number, unknown][]): TupleObject;
}