Skip to content
Redis objects mapper written in MoonScript.
Lua MoonScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
moon-redis
README.md
moon-redis-0.1-1.rockspec

README.md

moon-redis

Library written in MoonScript, http://moonscript.org. You can create your own objects mapped to Redis structures.

Installation

moon-redis module is placed in MoonRocks. Once you have added MoonRocks to your LuaRocks config.lua you can install it:

luarocks install moon-redis

Usage

Import Model from moon-redis:

import Model from require "moon-redis.model"

You can configure the Redis client to use:

redis = require('redis')
client = redis.connect('127.0.0.1', 6379)
Model.client = client

First, declare your models extending from Model:

class User extends Model
  @model: "users"

The @model value referers to the name to use for the generated keys, ex: users:id:100. You can change the primary key changing @primary_key value:

export User
class User extends Model
  @primary_key: "identifier"

Attributes

You can define some basic attributes that will be saved as a hash value for each object key.

class User extends Model
  @attrs: { 'name' }

user = User!
user.name = 'Bob'
user\save!

Counters

It's possible to define some counters for your Redis model objects using the @counters table.

class User extends Model
  @attrs: { 'name' }
  @model: "users"
  @counters: { 'tweets' }

Then you can increment or decrement the value of the objects' counters and get the value:

user\incr_tweets!
user\decr_tweets!
user\incr_tweets!
print user\tweets_count! -- 1

Collections

Sometimes you will need to add collections to your models, you can do it in this way:

class User extends Model
  @attrs: { 'name' }
  @model: "users"
  @collections: { followers: -> User }

In this example the followers collection that stores User ids. You can add a member to the collection using add_{name_of_the_collection}:

user1.add_followers(user2.id)

Get the whole collection:

followers = user1.followers

Or remove a member from the collection:

user1\remove_followers(user2.id)
You can’t perform that action at this time.