UNPKG

brobbot

Version:

A simple helpful robot for your Company

304 lines (156 loc) 5.22 kB
# Brains Brobbot's brain is pretty cool. It implements a pretty generic key->value store interface, modeled after the redis api. When a script is loaded, it's given a brain-segment which helps each script operate in a separete key-space. It also provides hooks for serializing and deserializing data. Most methods should return a promise. ## Available brains - [dumb](../src/brains/dumb.coffee) (the default) - [Redis](https://npmjs.org/package/brobbot-redis-brain) - More coming soon! ## API ### ready A promise to be resolved when the brain is ready for use ### dump() Take a dump Returns promise for object. ### llen(key) Get the length of the list stored at `key` Returns promise for int ### lset(key, index, value) Set the list value at the specified index Returns promise ### linsert(key, placement, pivot, value) Insert a list value before/after pivot value Returns promise ### lpush(key, value) Push a value onto the left-side of the list Returns promise ### rpush(key, value) Push a value onto the right-side of the list Returns promise ### lpop(key) Pop a value off of the left-side of the list Returns promise for the list value ### rpop(key) Pop a value off of the right-side of the list Returns promise for the list value ### lindex(key, index) Get the value at the specified index in the list Returns promise for the list value ### lrange(key, start, end) Get the values between the `start` and `end` indeces. Returns promise for array of list values ### lgetall(key) Get all the values in a list Returns promise for array of list values ### lrem(key, value) Remove all instances of `value` in the list Returns promise. ### sadd(key, value) Add a member to the set specified by `key` Returns promise ### sismember(key, value) Test whether the member is in the set Returns promise for boolean ### srem(key, value) Remove a member from the set Returns promise ### scard(key) Get the size of the set Returns promise for int ### spop(key) Get and remove a random member from the set Returns promise for a set member ### srandmember(key) Get a random member from the set Returns promise for a set member ### smembers(key) Get all the members of the set Returns promise for array ### keys(searchKey = '') Get all the keys, optionally restricted to keys prefixed with `searchKey` Returns promise for array ### key(key) Transform the given key for internal use Returns string. ### unkey(key) Transform the given key from internal use key to user-facing key Returns string. ### set(key, value) Store key-value pair Returns promise ### get(key) Get value by key Returns promise ### exists(key) Check whether the key has been set Returns promise for boolean ### incrby(key, num) increment the value by `num` atomically Returns promise ### hkeys(table) Get all the keys for the given hash table name Returns promise for array. ### hvals(table) Get all the values for the given hash table name Returns promise for array. ### hlen(table) Get the size of the hash table. Returns promise for int. ### hset(table, key, value) Set a value in the specified hash table Returns promise for the value. ### hget(table, key) Get a value from the specified hash table. Returns promise for the value. ### hdel(table, key) Remove a value from the specified hash table. Returns promise. ### hgetall(table) Get the whole hash table as an object. Returns promise for object. ### hincrby(table, key, num) increment the hash value by num atomically Returns promise ### remove(key) Alias: `del` Remove value by key Returns promise ### close Override this in your brain module to perform any necessary cleanup (e.g. closing connections) Returns promise ### mergeData(data) Merge keys against the in memory representation. Returns promise Caveats: Deeply nested structures don't merge well. ### serialize(value) Perform any necessary pre-set serialization on a value Returns serialized value ### deserialize(value) Perform any necessary post-get deserialization on a value Returns deserialized value ### users Get an Array of User objects stored in the brain. Returns promise for an Array of User objects. ### addUser(user) Add a user to the data-store Returns promise for user ### userForId(id, userData) Get or create a User object given a unique identifier. Returns promise for a User instance of the specified user. ### userForName(name) Get a User object given a name. Returns promise for a User instance for the user with the specified name. ### usersForRawFuzzyName(fuzzyName) Get all users whose names match fuzzyName. Currently, match means 'starts with', but this could be extended to match initials, nicknames, etc. Returns promise an Array of User instances matching the fuzzy name. ### usersForFuzzyName(fuzzyName) If fuzzyName is an exact match for a user, returns an array with just that user. Otherwise, returns an array of all users for which fuzzyName is a raw fuzzy match (see usersForRawFuzzyName). Returns promise an Array of User instances matching the fuzzy name. ### segment(segmentName) Return a brain segment using `segmentName` as a key prefix Returns BrainSegment