# TableStore

A table store provides storage for multiple rows of data in block chain and methods for adding, modifying, and deleting data. This is a higher level wrapper for MultiIndex instance.

Any value stored in TableStore must be an instance inherited from Table class.

There are two options to get and search data in the storage. The first is to get data by primary key (u64 value). The second is to pass a value inherited from Table class. The method getPrimaryValue will be used to get a primary key then.

# Constructors

  constructor(
    contract: Name,
    scope: Name
  )

contract - The Name object with for the contract

Example: Name.fromString('mycontract')

scope - The Name object with for the scope of the table. Recommended same as contract name

Example: Name.fromString('mycontract')

Example:

  import { TableStore } from 'proton-tsc'
  import {MyTable} from './tables'
  const contract = Name.fromString('mycontract');
  const scope = Name.fromString('mycontract');

  const tablestore = new TableStore<MyTable>(contract, scope);

# Instance Methods

# Set

set(value: T, payer: Name): void

Creates new record or updates the existing one in the storage for the provided value and account passed as payer argument.

Example:

tablestore.set(value, contract)

# Store

  store(value: T, payer: Name): void

Creates new record in the storage for the provided value and account passed as payer argument.

Throws if:

  • If the record with provided primary value already exists

Example:

tablestore.store(value, contract)

# Update

  update(value: T, payer: Name): void

Updates the existing record in the storage for the provided value and account passed as payer argument.

Throws if:

  • If the record with provided primary value does not exist

Example:

tablestore.update(value, contract)

# Remove

  remove(value: T): void

Removes the existing record in the storage for the provided value

Throws if:

  • If the record with provided primary value does not exist

Example:

tablestore.remove(value)

# Get

  get(key: u64): T | null

Returns the value for a provided key. null is returned if there is not value found.

Example:

tablestore.get(key)

# RequireGet

  requireGet(key: u64, errorMsg: string): T 

A wrapper for get method to throw error if no value for the provided key found. Displays the errorMsg when throws.

Throws if:

  • If the record with provided primary value does not exist.

Example:

tablestore.requireGet(id, `no recored with ID ${id} found.`)

# Exists

  exists(pk: u64): bool

Checks if the record for provided primary key exist in the table or not.

# ExistsValue

  existsValue(value: T): bool

Checks if the record for provided value exist in the table or not.

# Next

  next(value: T): T | null

Returns the record that is the next after the provided value Throws if:

  • If the record for the provided value is the last in the storage

# Previous

  previous(value: T): T | null

Returns the record that is the previous to the provided value Throws if:

  • If no record for the provided value is the first in the storage

# First

  first(): T | null

Returns the first record in the storage. Or null if no records yet.

# Last

  last(): T | null

Returns the last record in the storage. Or null if no records yet.

# Empty

  isEmpty(): bool

Checks if there is any record in the storage

# LowerBound

  lowerBound(id: u64): T | null

Returns the first element with primary key greater than or equal to the provided primary key.

Example:

// there are records with ids: 3, 5, 7
const record = tablestore.lowerBound(4)
// will return record with id 5.
const record = tablestore.lowerBound(3)
// will return record with id 3.

# UpperBound

  upperBound(id: u64): T | null

Returns the first element with primary key less than or equal to the provided primary key.

Example:

// there are records with ids: 3, 5, 7
const record = tablestore.upperBound(4)
// will return record with id 3.
const record = tablestore.upperBound(5)
// will return record with id 5.

# AvailablePrimaryKey

  availablePrimaryKey: u64

Returns the available primary key that can be used to save data. Read-only field

# GetBySecondaryU64

  getBySecondaryU64(secondaryValue: u64, index: u8): T | null

Utility method. Find the first table element that matches secondary value or null if there is no such value in the table secondaryValue is the secondary value to search for. index is the index to search in.

# NextBySecondaryU64

  nextBySecondaryU64(value: T, index: u8): T | null

Utility method. Returns the record that is the next after the provided secondary value. Returns null if there is no such value or the value is the last in the table. value is the secondary value to search for. index is the index to search in.

# PreviousBySecondaryU64

  previousBySecondaryU64(value: T, index: u8): T | null

Utility method. Returns the record that is the next after the provided secondary value. Returns null if there is no such value or the value is the first in the table. value is the secondary value to search for. index is the index to search in.

# GetBySecondaryU128

  getBySecondaryU128(secondaryValue: U128, index: u8): T | null

The same as getBySecondaryU64 but with extended size of the secondary value

# GetBySecondaryU256

  getBySecondaryU256(secondaryValue: U256, index: u8): T | null

The same as getBySecondaryU64 but with extended size of the secondary value

# GetBySecondaryF64

  getBySecondaryF64(secondaryValue: f64, index: u8): T | null

The same as getBySecondaryU64 but with f64 type of the secondary value