ClassORMLite - HydraFramework/Hydra GitHub Wiki

local orm = require "framework.orm"

New Context

local context = orm.new(<db>, { ["tablename"] = <table definition map>, ... })

local db = sqlite3.open(sandbox:resolveFile("data:///testorm2.sqlite"))
local blob_model = {
    -- ["id"] = "integer primary key", -- id is not required to define.
    ["path"] = "text",
    ["temppath"] = "text",
    ["name"] = "text",
    ["typeid"] = "integer",
    ["contenttype"] = "text",
    ["md5"] = "text",
    ["size"] = "integer",
    ["status"] = "integer default 0"
}

local block_model = {
    ["blobid"] = "integer",
    ["bg"] = "integer default 0",
    ["ed"] = "integer default 0",
    ["hash"] = "text",
    ["status"] = "integer"
}

local context = orm.new(db, {
    ["blob"] = blob_model,
    ["block"] = block_model
})

insert row

local row = context.<tablename>("new|insert", {modelmap})

local row = context.blob("new", {
    path = "test",
    size = 123
})

update row

row.path = nil
row.typeid = "2"
row:update()

get all or by condition

local results = context.<tablename>("list|select", format, ...)

local results = context.blob("list", "id>? and typeid=?", 40, 2)
for k,v in ipairs(results) do
    print(v.id)
end

delete

context.<tablename>("delete|remove", format, ...) or row:delete() or row:remove()

context.blob("delete", "id=? and typeid=?", 40, 2)

SQL

context.<select|update|delete|insert>(sql, ...)

local results = context.select("select * from aa,bb where aa.id=bb.id and aa.cc=?", 22)
context.update("update aa where cc=?", 22)