plugins/data: don't pollute the namespace and use emu.print_error (nw)

This commit is contained in:
cracyc 2018-01-14 08:39:37 -06:00
parent cea7ff08ac
commit 380bff2202
3 changed files with 51 additions and 50 deletions

View File

@ -1,6 +1,6 @@
-- get marp high score file from http://replay.marpirc.net/txt/scores3.htm
local dat = {}
local db, sql = require("data/database")()
local db = require("data/database")
local ver, info
local function init()
@ -17,9 +17,9 @@ local function init()
end
end
local stmt = db:prepare("SELECT version FROM version WHERE datfile = ?")
local stmt = db.prepare("SELECT version FROM version WHERE datfile = ?")
stmt:bind_values(file)
if stmt:step() == sql.ROW then
if stmt:step() == db.ROW then
dbver = stmt:get_value(0)
end
stmt:finalize()
@ -31,10 +31,10 @@ local function init()
elseif not fh then
return
elseif not dbver then
db:exec("CREATE TABLE \"" .. file .. [[" (
db.exec("CREATE TABLE \"" .. file .. [[" (
romset VARCHAR NOT NULL,
data CLOB NOT NULL)]])
db:exec("CREATE INDEX \"romset_" .. file .. "\" ON \"" .. file .. "_idx\"(romset)")
db.exec("CREATE INDEX \"romset_" .. file .. "\" ON \"" .. file .. "_idx\"(romset)")
end
for line in fh:lines() do
@ -56,11 +56,11 @@ local function init()
end
if dbver then
db:exec("DELETE FROM \"" .. file .. "\"")
db:exec("DELETE FROM \"" .. file .. "_idx\"")
stmt = db:prepare("UPDATE version SET version = ? WHERE datfile = ?")
db.exec("DELETE FROM \"" .. file .. "\"")
db.exec("DELETE FROM \"" .. file .. "_idx\"")
stmt = db.prepare("UPDATE version SET version = ? WHERE datfile = ?")
else
stmt = db:prepare("INSERT INTO version VALUES (?, ?)")
stmt = db.prepare("INSERT INTO version VALUES (?, ?)")
end
stmt:bind_values(ver, file)
stmt:step()
@ -68,7 +68,7 @@ local function init()
fh:seek("set")
local buffer = fh:read("a")
db:exec("BEGIN TRANSACTION")
db.exec("BEGIN TRANSACTION")
local function gmatchpos()
local pos = 1
@ -102,25 +102,23 @@ local function init()
end
for set, data in gmatchpos() do
stmt = db:prepare("INSERT INTO \"" .. file .. "\" VALUES (?, ?)")
stmt = db.prepare("INSERT INTO \"" .. file .. "\" VALUES (?, ?)")
stmt:bind_values(set, data)
stmt:step()
stmt:finalize()
end
fh:close()
db:exec("END TRANSACTION")
db.exec("END TRANSACTION")
end
if db then
init()
end
init()
function dat.check(set, softlist)
if softlist or not ver or not db then
if softlist or not ver then
return nil
end
info = nil
local stmt = db:prepare("SELECT data FROM \"scores3.htm\" AS f WHERE romset = ?")
local stmt = db.prepare("SELECT data FROM \"scores3.htm\" AS f WHERE romset = ?")
stmt:bind_values(set)
if stmt:step() == sql.ROW then
info = "#j2\n" .. stmt:get_value(0)

View File

@ -2,9 +2,9 @@ local sql = require("lsqlite3")
local datfile = {}
local db
function check_db(msg)
if db:errcode() > sqlite3.OK then
io.stderr:write("Error: " .. msg .. " (" .. db:errcode() .. " - " .. db:errmsg() .. ")\n")
local function check_db(msg)
if db:errcode() > sql.OK then
emu.print_error("Error: " .. msg .. " (" .. db:errcode() .. " - " .. db:errmsg() .. ")\n")
end
end
@ -31,4 +31,7 @@ if db then
end
end
return function() return db, sql end
local dbtable = { prepare = function(...) return db:prepare(...) end,
exec = function(...) return db:exec(...) end, ROW = sql.ROW, check = check_db }
return db and dbtable or nil

View File

@ -1,5 +1,5 @@
local datfile = {}
local db, sql = require("data/database")()
local db = require("data/database")
function datfile.open(file, vertag, fixupcb)
if not db then
@ -7,11 +7,11 @@ function datfile.open(file, vertag, fixupcb)
end
local function read(tag1, tag2, set)
local data
local stmt = db:prepare("SELECT f.data FROM \"" .. file .. "_idx\" AS fi, \"" .. file .. [["
local stmt = db.prepare("SELECT f.data FROM \"" .. file .. "_idx\" AS fi, \"" .. file .. [["
AS f WHERE fi.type = ? AND fi.val = ? AND fi.romset = ? AND f.rowid = fi.data]])
check_db("reading " .. tag1 .. " - " .. tag2 .. " - " .. set)
db.check("reading " .. tag1 .. " - " .. tag2 .. " - " .. set)
stmt:bind_values(tag1, tag2, set)
if stmt:step() == sql.ROW then
if stmt:step() == db.ROW then
data = stmt:get_value(0)
end
stmt:finalize()
@ -32,10 +32,10 @@ function datfile.open(file, vertag, fixupcb)
-- remove unsafe chars from file for use in sql statement
file = file:gsub("[^%w%._]", "")
local stmt = db:prepare("SELECT version FROM version WHERE datfile = ?")
check_db("reading version")
local stmt = db.prepare("SELECT version FROM version WHERE datfile = ?")
db.check("reading version")
stmt:bind_values(file)
if stmt:step() == sql.ROW then
if stmt:step() == db.ROW then
dbver = stmt:get_value(0)
end
stmt:finalize()
@ -46,16 +46,16 @@ function datfile.open(file, vertag, fixupcb)
elseif not fh then
return nil
elseif not dbver then
db:exec("CREATE TABLE \"" .. file .. [[_idx" (
db.exec("CREATE TABLE \"" .. file .. [[_idx" (
type VARCHAR NOT NULL,
val VARCHAR NOT NULL,
romset VARCHAR NOT NULL,
data INTEGER NOT NULL)]])
check_db("creating index")
db:exec("CREATE TABLE \"" .. file .. "\" (data CLOB NOT NULL)")
check_db("creating table")
db:exec("CREATE INDEX \"typeval_" .. file .. "\" ON \"" .. file .. "_idx\"(type, val)")
check_db("creating typeval index")
db.check("creating index")
db.exec("CREATE TABLE \"" .. file .. "\" (data CLOB NOT NULL)")
db.check("creating table")
db.exec("CREATE INDEX \"typeval_" .. file .. "\" ON \"" .. file .. "_idx\"(type, val)")
db.check("creating typeval index")
end
if vertag then
@ -76,15 +76,15 @@ function datfile.open(file, vertag, fixupcb)
end
if dbver then
db:exec("DELETE FROM \"" .. file .. "\"")
check_db("deleting")
db:exec("DELETE FROM \"" .. file .. "_idx\"")
check_db("deleting index")
stmt = db:prepare("UPDATE version SET version = ? WHERE datfile = ?")
check_db("updating version")
db.exec("DELETE FROM \"" .. file .. "\"")
db.check("deleting")
db.exec("DELETE FROM \"" .. file .. "_idx\"")
db.check("deleting index")
stmt = db.prepare("UPDATE version SET version = ? WHERE datfile = ?")
db.check("updating version")
else
stmt = db:prepare("INSERT INTO version VALUES (?, ?)")
check_db("inserting version")
stmt = db.prepare("INSERT INTO version VALUES (?, ?)")
db.check("inserting version")
end
stmt:bind_values(ver, file)
stmt:step()
@ -94,8 +94,8 @@ function datfile.open(file, vertag, fixupcb)
local inblock = false
fh:seek("set")
local buffer = fh:read("a")
db:exec("BEGIN TRANSACTION")
check_db("beginning transaction")
db.exec("BEGIN TRANSACTION")
db.check("beginning transaction")
local function gmatchpos()
local pos = 1
local function iter()
@ -136,8 +136,8 @@ function datfile.open(file, vertag, fixupcb)
if fixupcb then
data = fixupcb(data)
end
stmt = db:prepare("INSERT INTO \"" .. file .. "\" VALUES (?)")
check_db("inserting values")
stmt = db.prepare("INSERT INTO \"" .. file .. "\" VALUES (?)")
db.check("inserting values")
stmt:bind_values(data)
stmt:step()
local row = stmt:last_insert_rowid()
@ -147,8 +147,8 @@ function datfile.open(file, vertag, fixupcb)
if fixupcb then
fixupcb(data)
end
stmt = db:prepare("INSERT INTO \"" .. file .. "_idx\" VALUES (?, ?, ?, ?)")
check_db("inserting into index")
stmt = db.prepare("INSERT INTO \"" .. file .. "_idx\" VALUES (?, ?, ?, ?)")
db.check("inserting into index")
stmt:bind_values(tag1, tag2, set, row)
stmt:step()
stmt:finalize()
@ -157,8 +157,8 @@ function datfile.open(file, vertag, fixupcb)
end
end
end
db:exec("END TRANSACTION")
check_db("ending transaction")
db.exec("END TRANSACTION")
db.check("ending transaction")
end
fh:close()