#include <loc/libloc.h>
#include <loc/database.h>
+#include "locationmodule.h"
+#include "as.h"
#include "database.h"
static PyObject* Database_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
- // Create libloc context
- struct loc_ctx* ctx;
- int r = loc_new(&ctx);
- if (r)
- return NULL;
-
DatabaseObject* self = (DatabaseObject*)type->tp_alloc(type, 0);
if (self) {
- self->ctx = ctx;
+ self->ctx = loc_ref(loc_ctx);
}
return (PyObject*)self;
return 0;
}
+static PyObject* Database_get_description(DatabaseObject* self) {
+ const char* description = loc_database_get_description(self->db);
+
+ return PyUnicode_FromString(description);
+}
+
+static PyObject* Database_get_vendor(DatabaseObject* self) {
+ const char* vendor = loc_database_get_vendor(self->db);
+
+ return PyUnicode_FromString(vendor);
+}
+
+static PyObject* Database_get_created_at(DatabaseObject* self) {
+ time_t created_at = loc_database_created_at(self->db);
+
+ return PyLong_FromLong(created_at);
+}
+
+static PyObject* Database_get_as(DatabaseObject* self, PyObject* args) {
+ struct loc_as* as = NULL;
+ uint32_t number = 0;
+
+ if (!PyArg_ParseTuple(args, "i", &number))
+ return NULL;
+
+ // Try to retrieve the AS
+ int r = loc_database_get_as(self->db, &as, number);
+ if (r)
+ return NULL;
+
+ // Create an AS object
+ if (as) {
+ PyObject* obj = new_as(&ASType, as);
+ loc_as_unref(as);
+
+ return obj;
+ }
+
+ // Nothing found
+ Py_RETURN_NONE;
+}
+
static struct PyMethodDef Database_methods[] = {
+ {
+ "get_as",
+ (PyCFunction)Database_get_as,
+ METH_VARARGS,
+ NULL,
+ },
+ { NULL },
+};
+
+static struct PyGetSetDef Database_getsetters[] = {
+ {
+ "created_at",
+ (getter)Database_get_created_at,
+ NULL,
+ NULL,
+ NULL,
+ },
+ {
+ "description",
+ (getter)Database_get_description,
+ NULL,
+ NULL,
+ NULL,
+ },
+ {
+ "vendor",
+ (getter)Database_get_vendor,
+ NULL,
+ NULL,
+ NULL,
+ },
{ NULL },
};
tp_init: (initproc)Database_init,
tp_doc: "Database object",
tp_methods: Database_methods,
+ tp_getset: Database_getsetters,
};