Scope

The database is broken down into four scopes. Each scope is responsible for storing different type of data.

The usage will look like:

self.db.<scope>.<method>(param1, param2, ...)

So for example, calling a get method on the user scope:

# returns "Nikola Tesla"
self.db.user.get('name')

Scope

Description

Use-case

Collection?

bot

Global data about your bot.

Store the online status of your business.

No

user

Information about the current user.

Store the user's date of birth.

  • *Yes**, via users

flow

Information stored within the current flow.

Store the sub-total for the current transaction.

  • *Yes**, via flows

table

Generic datastore for storing custom table data.

Create and store transaction data in an "orders" table.

  • *Yes**, table only behaves as a collection.

Collections

The user, flow and table scopes have list behaviour. This means that you can query multiple rows of data via the users, flows and table objects respectively.

👍

Remember to access user and flow collections as users and flows.

# retrieve a specific user
user = self.db.users.get("Uxxxxxxx")

# retrieve users with the name "Nikola"
users = self.db.users.filter(name="Nikola")

# retrieve flows which the order key contains "pizza"
users = self.db.flows.filter(order__contains="pizza")

# add an order for a burrito
order = {
  'item': 'Fish burrito',
  'price': 8.99,
  'created_at': time.time(),
  'user_id': self.db.user.id
}
self.db.table('orders').add(order)

# retrieve the user's most recent orders
orders = self.db.table('orders').filter(user_id=self.db.user.id)