Reference
Global Functions
persistent( modname, [ { primary_key = val, table_name = val } ] )
Create a Coat Persistent class as a standard Lua module.
The default primary_key
is id
.
The default table_name
is modname
with lower case and
.
replaced by _
.
Functions in the built Class
create( args )
Instanciates and saves and returns an object or an array of object.
connection()
Returns the current LuaSQL connection object.
obj:delete()
Deletes the object.
establish_connection( driver, options, ... )
Create and returns an connection using the LuaSQL driver
.
options
are forwarded to the LuaSQL method env:conn()
.
find()
Returns an iterator over all records.
find( id )
Returns an iterator over record with the primary key is the number id
.
find( condition )
Returns an iterator over record selected by the SQL condition
.
find_by_name( val )
Returns an iterator over record with the attribute name
is
val
.
find_by_sql( sql )
Returns an iterator over record found by a raw SQL select
request.
has_p.name = { options }
Adds a persistent attribute name
, all options are forwarded to
Coat.has
.
And adds a method find_by_name
.
has_one.name = { class_name = val, foreign_key = val }
has_many.name = { class_name = val }
obj:save()
Saves the object and returns the value of its primary key.
Examples
require 'Coat.Persistent' persistent 'Person' has_p.name = { is = 'rw', isa = 'string' } has_p.age = { is = 'rw', isa = 'number' } sql_create = [[ CREATE TABLE person ( id INTEGER, name CHAR(64), age INTEGER ) ]]
local conn = Person.establish_connection('sqlite3', 'test.db') conn:execute(Person.sql_create)
Person.create { name = 'John', age = 23 } Person.create { { name = 'Brenda', age = 31 }, { name = 'Nate', age = 34 }, { name = 'Dave', age = 29 }, } for p in Person.find() do print(p.id, p.name, p.age) end p = Person.find_by_name('Brenda')() p.age = p.age + 1 p:save() p = Person.find(1)() p:delete() for p in Person.find 'age > 30' do print(p.id, p.name, p.age) end