]> git.ipfire.org Git - location/libloc.git/blobdiff - src/python/database.c
location-query: Add command to dump the whole database
[location/libloc.git] / src / python / database.c
index 2f0a3b0fb1b3c5cba75e68018d405cb96760f4de..581ed5be1c4db469344168eaafe8a998aaffad3c 100644 (file)
@@ -207,6 +207,25 @@ static PyObject* new_database_enumerator(PyTypeObject* type, struct loc_database
        return (PyObject*)self;
 }
 
+static PyObject* Database_iterate_all(DatabaseObject* self, enum loc_database_enumerator_mode what) {
+       struct loc_database_enumerator* enumerator;
+
+       int r = loc_database_enumerator_new(&enumerator, self->db, what);
+       if (r) {
+               PyErr_SetFromErrno(PyExc_SystemError);
+               return NULL;
+       }
+
+       PyObject* obj = new_database_enumerator(&DatabaseEnumeratorType, enumerator);
+       loc_database_enumerator_unref(enumerator);
+
+       return obj;
+}
+
+static PyObject* Database_ases(DatabaseObject* self) {
+       return Database_iterate_all(self, LOC_DB_ENUMERATE_ASES);
+}
+
 static PyObject* Database_search_as(DatabaseObject* self, PyObject* args) {
        const char* string = NULL;
 
@@ -230,6 +249,10 @@ static PyObject* Database_search_as(DatabaseObject* self, PyObject* args) {
        return obj;
 }
 
+static PyObject* Database_networks(DatabaseObject* self) {
+       return Database_iterate_all(self, LOC_DB_ENUMERATE_NETWORKS);
+}
+
 static PyObject* Database_search_networks(DatabaseObject* self, PyObject* args, PyObject* kwargs) {
        char* kwlist[] = { "country_code", "asn", "flags", "family", NULL };
        const char* country_code = NULL;
@@ -334,6 +357,13 @@ static struct PyMethodDef Database_methods[] = {
 };
 
 static struct PyGetSetDef Database_getsetters[] = {
+       {
+               "ases",
+               (getter)Database_ases,
+               NULL,
+               NULL,
+               NULL,
+       },
        {
                "created_at",
                (getter)Database_get_created_at,
@@ -355,6 +385,13 @@ static struct PyGetSetDef Database_getsetters[] = {
                NULL,
                NULL,
        },
+       {
+               "networks",
+               (getter)Database_networks,
+               NULL,
+               NULL,
+               NULL,
+       },
        {
                "vendor",
                (getter)Database_get_vendor,