1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#include <kore/kore.h>
#include <kore/http.h>
#include <kore/pgsql.h>
#include "assets.h"
int init(int);
int page(struct http_request *);
/* Called when our module is loaded (see config) */
int
init(int state)
{
/* Register our database. */
int err = kore_pgsql_register(
"db",
"host=127.0.0.1 port=5432 user=postgres password=p0stgres dbname=clog sslmode=disable"
);
// kore_pgsql_register("db", "host=/tmp dbname=clog");
return (err);
}
int page(struct http_request *req)
{
struct kore_buf *buf;
buf = kore_buf_alloc(2048);
kore_buf_append(buf, asset_index_begin_html, asset_len_index_begin_html);
/* sql stuff */
struct kore_pgsql sql;
char *name;
int rows, i;
/* req->status = HTTP_STATUS_INTERNAL_ERROR; */
kore_pgsql_init(&sql);
/*
* Initialise our kore_pgsql data structure with the database name
* we want to connect to (note that we registered this earlier with
* kore_pgsql_register()). We also say we will perform a synchronous
* query (KORE_PGSQL_SYNC).
*/
int err = kore_pgsql_setup(&sql, "db", KORE_PGSQL_SYNC);
kore_log(1, "kore_pgsql_setup: %d", err);
kore_log(1, "sql->state: %d", sql.state);
if (!err) {
kore_log(1, "here1!");
kore_pgsql_logerror(&sql);
goto out;
}
kore_log(1, "here!");
/*
* Now we can fire off the query, once it returns we either have
* a result on which we can operate or an error occurred.
*/
if (!kore_pgsql_query(&sql, "SELECT * FROM entries")) {
kore_pgsql_logerror(&sql);
goto out;
}
/*
* Iterate over the result and dump it to somewhere.
*/
rows = kore_pgsql_ntuples(&sql);
for (i = 0; i < rows; i++) {
name = kore_pgsql_getvalue(&sql, i, 0);
kore_log(LOG_NOTICE, "name: '%s'", name);
}
out: ;
kore_buf_append(buf, asset_index_end_html, asset_len_index_end_html);
http_response_header(req, "content-type", "text/html; charset=utf-8");
http_response(req, HTTP_STATUS_OK, buf->data, buf->offset);
// http_response_stream ???
kore_buf_free(buf);
/* Don't forget to cleanup the kore_pgsql data structure. */
kore_pgsql_cleanup(&sql);
return (KORE_RESULT_OK);
}
|