mg.write("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n") mg.write([[
This is Lua script example 1, served by the CivetWeb web server, version ]] .. mg.version .. [[.
The following features are available:
Today is " .. os.date("%A") .. "
\r\n") mg.write("URI is " .. mg.request_info.uri .. "
\r\n") mg.write("\r\n
\r\n")
-- Open database
local db, errcode, errmsg = sqlite3.open('requests.db')
if db then
  -- Note that the data base is located in the current working directory
  -- of the process if no other path is given here.
  -- Setup a trace callback, to show SQL statements we'll be executing.
  -- db:trace(function(data, sql) mg.write('Executing: ', sql: '\n') end, nil)
  -- Create a table if it is not created already
  db:exec([[
    CREATE TABLE IF NOT EXISTS requests (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      timestamp NOT NULL,
      method NOT NULL,
      uri NOT NULL,
      addr,
      civetwebversion,
      luaversion,
      aux
    );
  ]])
  -- Add columns to table created with older version
  db:exec("ALTER TABLE requests ADD COLUMN civetwebversion;")
  db:exec("ALTER TABLE requests ADD COLUMN luaversion;")
  db:exec("ALTER TABLE requests ADD COLUMN aux;")
  -- Add entry about this request
  local stmt = db:prepare(
    'INSERT INTO requests VALUES(NULL, datetime("now"), ?, ?, ?, ?, ?, ?);');
  stmt:bind_values(mg.request_info.request_method,
                   mg.request_info.uri,
                   mg.request_info.remote_port,
                   mg.version,
                   _VERSION,
                   ""
                   )
  stmt:step()
  stmt:finalize()
  -- Show all previous records
  mg.write('| id\n") mg.write(" | timestamp\n") mg.write(" | method\n") mg.write(" | uri\n") mg.write(" | addr\n") mg.write(" | civetweb\n") mg.write(" | lua\n") mg.write(" | aux\n") mg.write(" | 
|---|---|---|---|---|---|---|---|
| " .. v[i] .. "\n") i = i+1 end mg.write(" |