9 #include "database/database.h"
10 #include "database/blergref.h"
11 #include "database/tags.h"
12 #include "database/subscription.h"
13 #include "database/util.h"
15 MODULE = Blerg::Database PACKAGE = Blerg::Database
20 int exists(const char *name)
22 RETVAL = blerg_exists(name);
26 struct blerg * _open(const char *name)
28 RETVAL = blerg_open(name);
32 int _close(struct blerg *ptr)
34 RETVAL = blerg_close(ptr);
38 int _store(struct blerg *ptr, const char *data, int length(data))
41 RETVAL = blerg_store(ptr, data, XSauto_length_of_data);
45 const char * _fetch(struct blerg *ptr, int record)
51 n = blerg_fetch(ptr, record, &buf, &buflen);
55 XPUSHs(sv_2mortal(newSVpvn(buf, buflen)));
58 const char * _get_record_count(struct blerg *ptr)
64 count = blerg_get_record_count(ptr);
65 n = snprintf(buf, 21, "%llu", count);
66 XPUSHs(sv_2mortal(newSVpv(buf, n)));
68 time_t _get_timestamp(struct blerg *ptr, int record)
70 RETVAL = blerg_get_timestamp(ptr, record);
74 int _set_subscription_mark(struct blerg *ptr)
76 RETVAL = blerg_set_subscription_mark(ptr);
80 const char * _get_subscription_mark(struct blerg *ptr)
86 mark = blerg_get_subscription_mark(ptr);
87 n = snprintf(buf, 21, "%llu", mark);
88 XPUSHs(sv_2mortal(newSVpv(buf, n)));
90 void _tag_list(const char *tag, const char *str_offset, int direction)
93 struct blergref *list;
98 offset = strtoull(str_offset, NULL, 0);
99 list = tag_list(tag, offset, &count, direction);
107 hv_store(tmp, "author", 6, newSVpv(list[i].author, 0), 0);
108 n = snprintf(buf, 21, "%llu", list[i].record);
109 hv_store(tmp, "record", 6, newSVpv(buf, n), 0);
110 XPUSHs(sv_2mortal(newRV_noinc((SV*)tmp)));