mame/plugins/data/database.lua
Vas Crabb 9e36b6a6d9 More Lua interface cleanup - it's simpler with cleaner underlyng APIs.
Made the sound manager mute controls readable, and got rid of system
enable since it just controls system mute anyway.  This was causing
confusion: phantom2 was trying to use both independentlyt casuing the
mute bit to be ignored.

THe Lua interface changes are mostly changing methods to properties,
some renames to make things clearer, and some additional properties for
better control over snapshots.
2020-12-27 01:32:37 +11:00

41 lines
1.1 KiB
Lua

local sql = require("lsqlite3")
local datfile = {}
local db
local function check_db(msg)
if db:errcode() > sql.OK then
emu.print_error(string.format("Error: %s (%s - %s)\n", msg, db:errcode(), db:errmsg()))
end
end
do
local dbpath = emu.subst_env(mame_manager.ui.options.entries.historypath:value():match("([^;]+)"))
db = sql.open(dbpath .. "/history.db")
if not db then
lfs.mkdir(dbpath)
db = sql.open(dbpath .. "/history.db")
if not db then
emu.print_error("Unable to create history.db\n")
return false
end
check_db("opening database")
end
end
if db then
local found = false
db:exec("select * from sqlite_master where name = 'version'", function() found = true return 0 end)
check_db("checking for 'version' table")
if not found then
db:exec([[
CREATE TABLE version (
version VARCHAR NOT NULL,
datfile VARCHAR UNIQUE NOT NULL)]])
check_db("creating 'version' table")
end
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 false