return 0;
}
+// Returns the number of packages installed
+PAKFIRE_EXPORT ssize_t pakfire_db_packages(struct pakfire_db* db) {
+ sqlite3_stmt* stmt = NULL;
+ ssize_t packages = -1;
+
+ int r = sqlite3_prepare_v2(db->handle, "SELECT COUNT(*) FROM packages", -1, &stmt, NULL);
+ if (r) {
+ ERROR(db->pakfire, "Could not prepare SQL statement: %s\n",
+ sqlite3_errmsg(db->handle));
+ return -1;
+ }
+
+ // Execute query
+ do {
+ r = sqlite3_step(stmt);
+ } while (r == SQLITE_BUSY);
+
+ if (r == SQLITE_ROW) {
+ packages = sqlite3_column_int64(stmt, 0);
+ }
+
+ sqlite3_finalize(stmt);
+
+ return packages;
+}
+
static int pakfire_db_add_dependencies(struct pakfire_db* db, unsigned long id, PakfirePackage pkg) {
sqlite3_stmt* stmt = NULL;
int r = 1;
#ifndef PAKFIRE_DB_H
#define PAKFIRE_DB_H
+#include <sys/types.h>
+
#include <pakfire/types.h>
struct pakfire_db;
int pakfire_db_check(struct pakfire_db* db);
+ssize_t pakfire_db_packages(struct pakfire_db* db);
+
int pakfire_db_add_package(struct pakfire_db* db, PakfirePackage pkg, PakfireArchive archive);
int pakfire_db_remove_package(struct pakfire_db* db, PakfirePackage pkg);
int r = pakfire_db_open(&db, t->pakfire, PAKFIRE_DB_READWRITE);
ASSERT(!r);
+ // There must be no packages installed
+ ssize_t packages = pakfire_db_packages(db);
+ ASSERT(packages == 0);
+
char* path = pakfire_path_join(TEST_SRC_PATH, "data/beep-1.3-2.ip3.x86_64.pfm");
// Open archive
r = pakfire_db_add_package(db, pkg, archive);
ASSERT(r == 0);
+ // One package should be installed
+ packages = pakfire_db_packages(db);
+ ASSERT(packages == 1);
+
// Cleanup
pakfire_archive_unref(archive);
pakfire_db_unref(db);