]> git.ipfire.org Git - pakfire.git/commitdiff
db: Refactor handling return codes
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Jun 2025 16:38:34 +0000 (16:38 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Jun 2025 16:38:34 +0000 (16:38 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/db.c

index fd22bf9a48eb6e1707ac1b2267a1a347054d8057..89a84dfdb8d3be1fb2e4f8441b28f5d52a08f318 100644 (file)
@@ -325,6 +325,9 @@ static int pakfire_db_execute(pakfire_db* db, const char* stmt) {
        // Log any errors
        if (r) {
                ERROR(db->ctx, "Database query failed: %s\n", sqlite3_errmsg(db->handle));
+
+               // Return some error code that says that the operation was not successful
+               return -ECANCELED;
        }
 
        return r;
@@ -401,13 +404,13 @@ static int pakfire_db_create_schema(pakfire_db* db) {
 
        // Create settings table
        r = pakfire_db_execute(db, "CREATE TABLE IF NOT EXISTS settings(key TEXT, val TEXT)");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // settings: Add a unique index on key
        r = pakfire_db_execute(db, "CREATE UNIQUE INDEX IF NOT EXISTS settings_key ON settings(key)");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // Create packages table
        r = pakfire_db_execute(db,
@@ -437,18 +440,18 @@ static int pakfire_db_create_schema(pakfire_db* db) {
                        "source_arch     TEXT, "
                        "distribution    TEXT"
                ")");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // packages: Create index to find package by name
        r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS packages_name ON packages(name)");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // packages: Create unique index over UUID
        r = pakfire_db_execute(db, "CREATE UNIQUE INDEX IF NOT EXISTS packages_uuid ON packages(uuid)");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // Create dependencies table
        r = pakfire_db_execute(db,
@@ -458,12 +461,12 @@ static int pakfire_db_create_schema(pakfire_db* db) {
                        "dependency     TEXT, "
                        "FOREIGN KEY (pkg) REFERENCES packages(id) ON DELETE CASCADE"
                ")");
-       if (r)
+       if (r < 0)
                return r;
 
        // dependencies: Add index over packages
        r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS dependencies_pkg_index ON dependencies(pkg)");
-       if (r)
+       if (r < 0)
                return r;
 
        // Create files table
@@ -490,18 +493,18 @@ static int pakfire_db_create_schema(pakfire_db* db) {
                        "digest_sha3_256   BLOB, "
                        "FOREIGN KEY (pkg) REFERENCES packages(id) ON DELETE CASCADE"
                ")");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // files: Add index over packages
        r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS files_pkg_index ON files(pkg)");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // files: Add index over path
        r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS files_path_index ON files(path)");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // Create scriptlets table
        r = pakfire_db_execute(db,
@@ -512,19 +515,19 @@ static int pakfire_db_create_schema(pakfire_db* db) {
                        "scriptlet      TEXT, "
                        "FOREIGN KEY (pkg) REFERENCES packages(id) ON DELETE CASCADE"
                ")");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        // scriptlets: Add index over packages
        r = pakfire_db_execute(db, "CREATE INDEX IF NOT EXISTS scriptlets_pkg_index ON scriptlets(pkg)");
-       if (r)
-               return 1;
+       if (r < 0)
+               return r;
 
        const char* arch = pakfire_root_get_effective_arch(db->root);
 
        // Set architecture
        r = pakfire_db_set_string(db, "arch", arch);
-       if (r) {
+       if (r < 0) {
                ERROR(db->ctx, "Could not set architecture\n");
                return r;
        }
@@ -548,14 +551,14 @@ static int pakfire_db_migrate_schema(pakfire_db* db) {
        while (db->schema < CURRENT_SCHEMA) {
                // Begin a new transaction
                r = pakfire_db_begin_transaction(db);
-               if (r)
+               if (r < 0)
                        goto ROLLBACK;
 
                switch (db->schema) {
                        // No schema exists
                        case 0:
                                r = pakfire_db_create_schema(db);
-                               if (r)
+                               if (r < 0)
                                        goto ROLLBACK;
 
                                db->schema = CURRENT_SCHEMA;
@@ -563,7 +566,7 @@ static int pakfire_db_migrate_schema(pakfire_db* db) {
 
                        case 7:
                                r = pakfire_db_migrate_to_schema_8(db);
-                               if (r)
+                               if (r < 0)
                                        goto ROLLBACK;
 
                                db->schema++;
@@ -576,12 +579,12 @@ static int pakfire_db_migrate_schema(pakfire_db* db) {
 
                // Update the schema version
                r = pakfire_db_set_int(db, "schema", CURRENT_SCHEMA);
-               if (r)
+               if (r < 0)
                        goto ROLLBACK;
 
                // All done, commit!
                r = pakfire_db_commit(db);
-               if (r)
+               if (r < 0)
                        goto ROLLBACK;
        }
 
@@ -589,8 +592,7 @@ static int pakfire_db_migrate_schema(pakfire_db* db) {
 
 ROLLBACK:
        pakfire_db_rollback(db);
-
-       return 1;
+       return r;
 }
 
 static int pakfire_db_check_arch(pakfire_db* db) {
@@ -678,11 +680,7 @@ static int pakfire_db_setup(pakfire_db* db) {
        }
 
        // Create or migrate schema
-       r = pakfire_db_migrate_schema(db);
-       if (r < 0)
-               return r;
-
-       return 0;
+       return pakfire_db_migrate_schema(db);
 }
 
 int pakfire_db_open(pakfire_db** db, pakfire_ctx* ctx, pakfire_root* root, int flags) {
@@ -749,7 +747,6 @@ int pakfire_db_open(pakfire_db** db, pakfire_ctx* ctx, pakfire_root* root, int f
 
 ERROR:
        pakfire_db_free(self);
-
        return r;
 }
 
@@ -764,7 +761,6 @@ pakfire_db* pakfire_db_unref(pakfire_db* db) {
                return db;
 
        pakfire_db_free(db);
-
        return NULL;
 }