On Friday, 9 June 2017 at 15:07:03 UTC, Adam D. Ruppe wrote:
// compile with the cgi.d, database.d, postgres.d, and dom.d
library modules
// and make sure your C libpq library is available. so on my
computer, the
// compile command is:
// dmd webtest.d ~/arsd/{cgi,database,postgres,dom}
-L-L/usr/local/pgsql/lib -m64 -version=embedded_httpd
import arsd.cgi;
import arsd.postgres;
import arsd.dom;
void handle(Cgi cgi) {
// database setup: psql me
// create table test (id integer, data text);
auto database = new PostgreSql("dbname = me");
scope(exit) .destroy(database);
// insert some data from the request into the
database...
database.query("INSERT INTO test (data) VALUES (?)",
cgi.request("data"));
// of course, you could also load the html skeleton
from a file
auto document = new Document("<!DOCTYPE
html><html><head><title>Demo</title></head><body></body></html>", true, true);
foreach(row; database.query("SELECT id, data FROM
test")) {
document.mainBody.addChild("b", row["id"]);
document.mainBody.addChild("p", row["data"]);
}
cgi.write(document.toString(), true);
}
mixin GenericMain!handle;
So if I'm understanding this code correctly, your libs don't have
any sort of routing setup either, and I would have to write the
code to inspect the URL and do the right thing?
I don't use any of the templating engines... in the demo above,
I used my dom.d though which is a potential base lib to make
one. It is a html parser with many functions for modification.
You can write your "templates" as just .html files and load
them with this, then search for various ID elements or whatever
(dom.d has `querySelector` and `querySelectorAll`) and append
elements with dom or setting things like `innerText` and
`innerHTML`.
I think I'd prefer to use more of a template system as it feels
more productive having it all inline. I have concerns about the
complexity of getting "helper" type functionality in Temple, but
I'll tackle that when I get to it.
I really really dislike the syntax for DIET, I was never a big
HAML fan.