Module ulid
Module for creating Universally Unique Lexicographically Sortable Identifiers.
Modeled after the ulid implementation by alizain. Please checkout the documentation there for the design and characteristics of ulid.
IMPORTANT: the standard Lua versions, based on the standard C library are unfortunately very weak regarding time functions and randomizers. So make sure to set it up properly!
Info:
- Copyright: Copyright 2016-2017 Thijs Schreijer
- License: mit
- Author: Thijs Schreijer
Functions
| set_time_func (f) | Sets the time function to get default times from. |
| set_random_func (f) | Sets the random function to get random input from. |
| encode_time (time, len) | generates the time-based part of a ulid. |
| encode_random (len) | generates the random part of a ulid. |
| ulid (time) | generates a ulid. |
Functions
- set_time_func (f)
-
Sets the time function to get default times from.
This function should return time in seconds since unix epoch, with millisecond
precision. The default set will be
ngx.now()or alternativelysocket.gettime(), if niether is available, it will insert an error throwing placeholder function.Parameters:
- f the function to set
Returns:
true - set_random_func (f)
-
Sets the random function to get random input from.
This function should return a number between 0 and 1 when called without
arguments. The default is math.random, this is ok for LuaJIT, but the
standard PuC-Rio Lua versions have a weak randomizer that is better replaced.
Parameters:
- f the function to set
Returns:
true - encode_time (time, len)
-
generates the time-based part of a ulid.
Parameters:
- time (optional) time to generate the string from, in seconds since unix epoch, with millisecond precision (defaults to now)
- len (optional) the length of the time-based string to return (defaults to 10)
Returns:
-
time-based part of ulid string
- encode_random (len)
-
generates the random part of a ulid.
Parameters:
- len (optional) the length of the random string to return (defaults to 16)
Returns:
-
random part of ulid string
- ulid (time)
-
generates a ulid.
Parameters:
- time (optional) time to generate the ulid from, in seconds since unix epoch, with millisecond precision (defaults to now)
Returns:
-
ulid string
Usage:
local ulid_mod = require("ulid") -- load LuaSocket so we can reuse its gettime function local socket = require("socket") -- set the time function explicitly, but by default it -- will be picked up as well ulid_mod.set_time_func(socket.gettime) -- seed the random generator, needed for the example, but ONLY DO THIS ONCE in your -- application, unless you know what you are doing! And try to use a better seed than -- the time based seed used here. math.randomseed(socket.gettime()*10000) -- get a ulid from current time local id = ulid_mod.ulid()