summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/libs-imp-sqlite.lmt
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2020-11-23 19:48:34 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2020-11-23 19:48:34 +0100
commit18499e46a49b8ccf4346686d1cf626ada33935b8 (patch)
treebd0ae7b601b323e20954c10c07598637d9403e00 /tex/context/base/mkiv/libs-imp-sqlite.lmt
parent4b089e589d39346a66a27d04f9857fe16e4b7b41 (diff)
downloadcontext-18499e46a49b8ccf4346686d1cf626ada33935b8.tar.gz
2020-11-23 18:39:00
Diffstat (limited to 'tex/context/base/mkiv/libs-imp-sqlite.lmt')
-rw-r--r--tex/context/base/mkiv/libs-imp-sqlite.lmt187
1 files changed, 0 insertions, 187 deletions
diff --git a/tex/context/base/mkiv/libs-imp-sqlite.lmt b/tex/context/base/mkiv/libs-imp-sqlite.lmt
deleted file mode 100644
index 5d38986f3..000000000
--- a/tex/context/base/mkiv/libs-imp-sqlite.lmt
+++ /dev/null
@@ -1,187 +0,0 @@
-if not modules then modules = { } end modules ['libs-imp-sqlite'] = {
- version = 1.001,
- comment = "companion to util-sql.lua",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- c:/data/develop/tex-context/tex/texmf-win64/bin/lib/luametatex/lua/copies/sqlite/sqlite3.dll
-
-local libname = "sqlite"
-local libfile = "sqlite3"
-
-local sqlitelib = resolvers.libraries.validoptional(libname)
-
-if not sqlitelib then return end
-
-local function okay()
- if resolvers.libraries.optionalloaded(libname,libfile) then
- okay = function() return true end
- else
- okay = function() return false end
- end
- return okay()
-end
-
-local next, tonumber = next, tonumber
-local setmetatable = setmetatable
-local formatters = string.formatters
-
-local sql = utilities.sql or require("util-sql")
-local report = logs.reporter(libname)
-
-local trace_sql = false trackers.register("sql.trace", function(v) trace_sql = v end)
-local trace_queries = false trackers.register("sql.queries",function(v) trace_queries = v end)
-
-local sqlite_open = sqlitelib.open
-local sqlite_close = sqlitelib.close
-local sqlite_execute = sqlitelib.execute
-local sqlite_getmessage = sqlitelib.getmessage
-
-local helpers = sql.helpers
-local methods = sql.methods
-local validspecification = helpers.validspecification
-local preparetemplate = helpers.preparetemplate
-local cache = { }
-
--- synchronous journal_mode locking_mode 1000 logger inserts
---
--- normal normal normal 6.8
--- off off normal 0.1
--- normal off normal 2.1
--- normal persist normal 5.8
--- normal truncate normal 4.2
--- normal truncate exclusive 4.1
-
-local f_preamble = formatters[ [[
-ATTACH `%s` AS `%s` ;
-PRAGMA `%s`.synchronous = normal ;
-]] ]
-
-local function execute(specification)
- if okay() then
- if trace_sql then
- report("executing sqlite")
- end
- if not validspecification(specification) then
- report("error in specification")
- end
- local query = preparetemplate(specification)
- if not query then
- report("error in preparation")
- return
- end
- local base = specification.database -- or specification.presets and specification.presets.database
- if not base then
- report("no database specified")
- return
- end
- local filename = file.addsuffix(base,"db")
- local result = { }
- local keys = { }
- local id = specification.id
- local db = nil
- local preamble = nil
- if id then
- local session = cache[id]
- if session then
- db = session.db
- else
- db = sqlite_open(filename)
- preamble = f_preamble(filename,base,base)
- if not db then
- report("no session database specified")
- else
- cache[id] = {
- name = filename,
- db = db,
- }
- end
- end
- else
- db = open_db(filename)
- preamble = f_preamble(filename,base,base)
- end
- if not db then
- report("no database opened")
- else
- local converter = specification.converter
- local nofrows = 0
- local callback = nil
- if preamble then
- query = preamble .. query -- only needed in open
- end
- if converter then
- local convert = converter.sqlite
- callback = function(nofcolumns,values,fields)
- nofrows = nofrows + 1
- result[nofrows] = convert(values)
- end
- else
- callback = function(nofcolumns,values,fields)
- local column = { }
- for i=1,nofcolumns do
- local field
- if fields then
- field = fields[i]
- keys[i] = field
- else
- field = keys[i]
- end
- if field then
- column[field] = values[i]
- end
- end
- nofrows = nofrows + 1
- result[nofrows] = column
- end
- end
- local okay = sqlite_execute(db,query,callback)
- if not okay then
- report("error: %s",sqlite_getmessage(db))
- -- elseif converter then
- -- result = converter.sqlite(result)
- end
- end
- if db and not id then
- sqlite_close(db)
- end
- return result, keys
- else
- report("error: ","no library loaded")
- end
-end
-
-local wraptemplate = [[
-local converters = utilities.sql.converters
-local deserialize = utilities.sql.deserialize
-
-local tostring = tostring
-local tonumber = tonumber
-local booleanstring = string.booleanstring
-
-%s
-
-return function(cells)
- -- %s (not needed)
- -- %s (not needed)
- return {
- %s
- }
-end
-]]
-
-local celltemplate = "cells[%s]"
-
-methods.sqlite = {
- execute = execute,
- usesfiles = false,
- wraptemplate = wraptemplate,
- celltemplate = celltemplate,
-}
-
-package.loaded["util-sql-imp-sqlite"] = methods.sqlite
-package.loaded[libname] = methods.sqlite
-
-return methods.sqlite