Class: LeaderboardBase

LeaderboardBase

base class for Leaderboard.


new LeaderboardBase()

You have to extends and override onGetLuaScripts function .

Members


redis

getter for _redis.


lbname

getter for _lbname.


scripts

getter for _scripts. Generally only private functions would care of this.

Methods


<static> create(redis, lbname)

Create leaderboard. This is a static factory method.

Parameters:
Name Type Description
redis Object

the instance of redis client

lbname string

leaderborad name. Would be used as a redis key.

Returns:
  • leaderboard instance.
Type
Promise.<Object>

<protected> onGetLuaScripts()

You have to override this function. The default implementation will throw an exception. The return value should be like this.

{
    "lb_score_rank": {
        script: lua script in UTF8 string.
    },
    "lb_rank": {
        script: lua script in UTF8 string.
    },
    "lb_pos": {
        script: lua script in UTF8 string.
    },
    "lb_range": {
        script: lua script in UTF8 string.
    }
}

See static fields, too.

LeaderboardBase.lua = {
    getScoreRank: "lb_score_rank",
    getRank: "lb_rank",
    getPosition: "lb_pos",
    getRange: "lb_range"
};
Returns:

script object.

Type
Object

clear()

clear.

Returns:
Type
Promise

count()

count.

Returns:
Type
Promise

remove(name)

remove.

Parameters:
Name Type Description
name string

player name

Returns:
Type
Promise

setScore(name, score)

setScore.

Parameters:
Name Type Description
name string

player name

score number

score

Returns:
Type
Promise

modifyScore(name, delta)

modifyScore.

Parameters:
Name Type Description
name string

player name

delta number

delta to modify the score

Returns:
Type
Promise

getScoreAndRank(score)

  • getScoreAndRank will provide you name's score and rank.
  • The result would be an object contains
     {
         name: string,
         score: number,
         rank number
     }
Parameters:
Name Type Description
score number

player name

Returns:
  • return Promise({Object. see above description});
Type
Promise.<Object>

getNeighbors(name, count)

  • getNeighbors will pick up players (name's rank - count <= players <= name's rank + count).
  • The result would be an object contains
     {
         list: [
             {name: string, score: number, rank: number},
             {name: string, score: number, rank: number},
             {name: string, score: number, rank: number},
             ...,
         ]
     }
Parameters:
Name Type Description
name string

player name

count number

player counts to be picked.

Returns:
  • return Promise({Object. see above description});
Type
Promise.<Object>

getList(number, size)

  • You can get the list by using this function.
  • The result would be an object contains
     {
         page: page number starting from 1.
         maxPage: max page number.
         total: total player numbers in the board.
         list: [
             {name: string, score: number, rank: number},
             {name: string, score: number, rank: number},
             {name: string, score: number, rank: number},
             ...,
         ]
     }
Parameters:
Name Type Description
number number

page index starting from 1.

size number

page size. The numbers of players in a page.

Returns:
  • return Promise({Object. see above description});
Type
Promise.<Object>