\starttext \enabletrackers[*ffi*] \startluacode require("util-sql") local sql = utilities.sql sql.setmethod("sqlite") document.sqlpresets = { database = "aufgaben", id = "aufgaben", } local template = [[ CREATE TABLE IF NOT EXISTS `aufgaben` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `titel` BLOB NOT NULL, `sachverhalt` BLOB NOT NULL, `auftraege` BLOB NOT NULL ) ; ]] function document.createdatabase() return utilities.sql.execute { presets = document.sqlpresets, template = template, } end local template = [[ INSERT INTO `aufgaben` ( `titel`, `sachverhalt`, `auftraege` ) VALUES ( '%titel%', '%sachverhalt%', '%auftraege%' ) ; ]] function document.addtodatabase(t) return utilities.sql.execute { presets = document.sqlpresets, template = template, variables = { titel = t.titel, sachverhalt = t.sachverhalt, auftraege = t.auftraege, }, } end local template_id = [[ SELECT * FROM `aufgaben` WHERE `id` = '%id%' ; ]] document.sqlconverter = sql.makeconverter { { name = "id", type = "number" }, { name = "titel", type = "string" }, { name = "sachverhalt", type = "string" }, { name = "auftraege", type = "string" }, } function document.getfromdatabase(t) if t.id then return utilities.sql.execute { presets = document.sqlpresets, template = template_id, variables = { id = t.id }, -- converter = document.sqlconverter, } end end \stopluacode \startluacode document.createdatabase() local tufte = io.loaddata(resolvers.findfile("tufte.tex")) local ward = io.loaddata(resolvers.findfile("ward.tex")) local knuth = io.loaddata(resolvers.findfile("knuth.tex")) document.addtodatabase { titel = "aufgabe 1", sachverhalt = "one", auftraege = tufte } document.addtodatabase { titel = "aufgabe 2", sachverhalt = "two", auftraege = ward } document.addtodatabase { titel = "aufgabe 3", sachverhalt = "three", auftraege = knuth } function document.showrecord(n) local result = document.getfromdatabase { id = n } for i=1,#result do local r = result[i] if r.titel then context.title(r.titel) context.subject(r.sachverhalt) context.par() context("text: ") context.viafile(r.auftraege) context.page() end end end \stopluacode \startluacode document.showrecord(1) document.showrecord(2) document.showrecord(3) \stopluacode \stoptext