}
-void
+static void
db_create_filelists_tables(sqlite3 *db, GError **err)
{
int rc;
}
-void
+static void
db_create_other_tables (sqlite3 *db, GError **err)
{
int rc;
}
-void
+static void
db_index_primary_tables (sqlite3 *db, GError **err)
{
int rc;
}
-void
+static void
db_index_filelists_tables (sqlite3 *db, GError **err)
{
int rc;
}
-void
+static void
db_index_other_tables (sqlite3 *db, GError **err)
{
int rc;
case CR_DB_OTHER:
db_create_other_tables(db, &tmp_err); break;
}
- if (tmp_err) {
+
+ if (tmp_err)
g_propagate_error(err, tmp_err);
- return db;
- }
}
return db;
db_index_other_tables(db, &tmp_err); break;
}
- if (tmp_err) {
+ if (tmp_err)
g_propagate_error(err, tmp_err);
- }
sqlite3_exec (db, "COMMIT", NULL, NULL, NULL);
*/
-sqlite3_stmt *
+static sqlite3_stmt *
db_package_prepare (sqlite3 *db, GError **err)
{
int rc;
}
-void
-db_package_write (sqlite3 *db, sqlite3_stmt *handle, cr_Package *p)
+static void
+db_package_write (sqlite3 *db,
+ sqlite3_stmt *handle,
+ cr_Package *p,
+ GError **err)
{
int rc;
rc = sqlite3_step (handle);
sqlite3_reset (handle);
- if (rc != SQLITE_DONE) {
- g_critical ("Error adding package to SQL: %s",
- sqlite3_errmsg (db));
- } else
+ if (rc == SQLITE_DONE) {
p->pkgKey = sqlite3_last_insert_rowid (db);
+ } else {
+ g_critical ("Error adding package to db: %s",
+ sqlite3_errmsg(db));
+ g_set_error(err, CR_DB_ERROR, CR_DB_ERROR,
+ "Error adding package to db: %s",
+ sqlite3_errmsg(db));
+ }
}
-sqlite3_stmt *
+static sqlite3_stmt *
db_dependency_prepare (sqlite3 *db, const char *table, GError **err)
{
int rc;
if (rc != SQLITE_OK) {
g_set_error (err, CR_DB_ERROR, CR_DB_ERROR,
- "Can not prepare dependency insertion: %s",
+ "Cannot prepare dependency insertion: %s",
sqlite3_errmsg (db));
sqlite3_finalize (handle);
handle = NULL;
return handle;
}
-void
+static void
db_dependency_write (sqlite3 *db,
sqlite3_stmt *handle,
gint64 pkgKey,
cr_Dependency *dep,
- gboolean isRequirement)
+ gboolean isRequirement,
+ GError **err)
{
int rc;
rc = sqlite3_step (handle);
sqlite3_reset (handle);
- if (rc != SQLITE_DONE)
- g_critical ("Error adding dependency to SQL: %s",
+ if (rc != SQLITE_DONE) {
+ g_critical ("Error adding package dependency to db: %s",
sqlite3_errmsg (db));
+ g_set_error(err, CR_DB_ERROR, CR_DB_ERROR,
+ "Error adding package dependency to db: %s",
+ sqlite3_errmsg(db));
+ }
}
-sqlite3_stmt *
+static sqlite3_stmt *
db_file_prepare (sqlite3 *db, GError **err)
{
int rc;
}
-void
+static void
db_file_write (sqlite3 *db,
sqlite3_stmt *handle,
gint64 pkgKey,
- cr_PackageFile *file)
+ cr_PackageFile *file,
+ GError **err)
{
int rc;
rc = sqlite3_step (handle);
sqlite3_reset (handle);
- if (rc != SQLITE_DONE)
- g_critical ("Error adding package file to SQL: %s",
+ if (rc != SQLITE_DONE) {
+ g_critical ("Error adding package file to db: %s",
sqlite3_errmsg (db));
+ g_set_error(err, CR_DB_ERROR, CR_DB_ERROR,
+ "Error adding package file to db: %s",
+ sqlite3_errmsg(db));
+ }
}
*/
-sqlite3_stmt *
+static sqlite3_stmt *
db_filelists_prepare (sqlite3 *db, GError **err)
{
int rc;
key_len = 1;
}
- sqlite3_bind_int (info->handle, 1, info->pkgKey);
- sqlite3_bind_text (info->handle, 2, (const char *) key, (int) key_len, SQLITE_STATIC);
- sqlite3_bind_text (info->handle, 3, file->files->str, -1, SQLITE_STATIC);
- sqlite3_bind_text (info->handle, 4, file->types->str, -1, SQLITE_STATIC);
+ sqlite3_bind_int (info->handle, 1, info->pkgKey);
+ sqlite3_bind_text(info->handle, 2, (const char *) key, (int) key_len, SQLITE_STATIC);
+ sqlite3_bind_text(info->handle, 3, file->files->str, -1, SQLITE_STATIC);
+ sqlite3_bind_text(info->handle, 4, file->types->str, -1, SQLITE_STATIC);
rc = sqlite3_step (info->handle);
sqlite3_reset (info->handle);
}
-void
-db_filelists_write (sqlite3 *db, sqlite3_stmt *handle, cr_Package *p)
+static void
+db_filelists_write(sqlite3 *db,
+ sqlite3_stmt *handle,
+ cr_Package *p,
+ GError **err)
{
GHashTable *hash;
FileWriteInfo info;
+ // TODO: Add support for err
+
info.db = db;
info.handle = handle;
info.pkgKey = p->pkgKey;
hash = package_files_to_hash (p->files);
- g_hash_table_foreach (hash, cr_db_write_file, &info);
- g_hash_table_destroy (hash);
+ g_hash_table_foreach(hash, cr_db_write_file, &info);
+ g_hash_table_destroy(hash);
}
*/
-sqlite3_stmt *
+static sqlite3_stmt *
db_changelog_prepare (sqlite3 *db, GError **err)
{
int rc;
// Stuff common for both filelists.sqlite and other.sqlite
-sqlite3_stmt *
+static sqlite3_stmt *
db_package_ids_prepare(sqlite3 *db, GError **err)
{
int rc;
}
-void
-db_package_ids_write (sqlite3 *db, sqlite3_stmt *handle, cr_Package *pkg)
+static void
+db_package_ids_write(sqlite3 *db,
+ sqlite3_stmt *handle,
+ cr_Package *pkg,
+ GError **err)
{
int rc;
rc = sqlite3_step (handle);
sqlite3_reset (handle);
- if (rc != SQLITE_DONE) {
- g_critical ("Error adding package to SQL: %s",
- sqlite3_errmsg (db));
- } else
+ if (rc == SQLITE_DONE) {
pkg->pkgKey = sqlite3_last_insert_rowid (db);
+ } else {
+ g_critical("Error adding package to db: %s",
+ sqlite3_errmsg(db));
+ g_set_error(err, CR_DB_ERROR, CR_DB_ERROR,
+ "Error adding package to db: %s",
+ sqlite3_errmsg(db));
+ }
}
-
/*
* Module interface
*/
void
-cr_db_add_primary_pkg(cr_DbPrimaryStatements stmts, cr_Package *pkg)
+cr_db_add_primary_pkg(cr_DbPrimaryStatements stmts,
+ cr_Package *pkg,
+ GError **err)
{
+ GError *tmp_err = NULL;
GSList *iter;
- db_package_write(stmts->db, stmts->pkg_handle, pkg);
-
- for (iter = pkg->provides; iter; iter = iter->next)
- db_dependency_write (stmts->db,
- stmts->provides_handle,
- pkg->pkgKey,
- (cr_Dependency *) iter->data,
- FALSE);
-
- for (iter = pkg->conflicts; iter; iter = iter->next)
- db_dependency_write (stmts->db,
- stmts->conflicts_handle,
- pkg->pkgKey,
- (cr_Dependency *) iter->data,
- FALSE);
-
- for (iter = pkg->obsoletes; iter; iter = iter->next)
- db_dependency_write (stmts->db,
- stmts->obsoletes_handle,
- pkg->pkgKey,
- (cr_Dependency *) iter->data,
- FALSE);
-
- for (iter = pkg->requires; iter; iter = iter->next)
- db_dependency_write (stmts->db,
- stmts->requires_handle,
- pkg->pkgKey,
- (cr_Dependency *) iter->data,
- TRUE);
-
- for (iter = pkg->files; iter; iter = iter->next)
- db_file_write (stmts->db, stmts->files_handle, pkg->pkgKey,
- (cr_PackageFile *) iter->data);
+ db_package_write(stmts->db, stmts->pkg_handle, pkg, &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
+
+ for (iter = pkg->provides; iter; iter = iter->next) {
+ db_dependency_write(stmts->db,
+ stmts->provides_handle,
+ pkg->pkgKey,
+ (cr_Dependency *) iter->data,
+ FALSE,
+ &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
+ }
+
+ for (iter = pkg->conflicts; iter; iter = iter->next) {
+ db_dependency_write(stmts->db,
+ stmts->conflicts_handle,
+ pkg->pkgKey,
+ (cr_Dependency *) iter->data,
+ FALSE,
+ &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
+ }
+
+ for (iter = pkg->obsoletes; iter; iter = iter->next) {
+ db_dependency_write(stmts->db,
+ stmts->obsoletes_handle,
+ pkg->pkgKey,
+ (cr_Dependency *) iter->data,
+ FALSE,
+ &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
+ }
+
+ for (iter = pkg->requires; iter; iter = iter->next) {
+ db_dependency_write(stmts->db,
+ stmts->requires_handle,
+ pkg->pkgKey,
+ (cr_Dependency *) iter->data,
+ TRUE,
+ &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
+ }
+ for (iter = pkg->files; iter; iter = iter->next) {
+ db_file_write(stmts->db, stmts->files_handle, pkg->pkgKey,
+ (cr_PackageFile *) iter->data, &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
+ }
}
void
-cr_db_add_filelists_pkg(cr_DbFilelistsStatements stmts, cr_Package *pkg)
+cr_db_add_filelists_pkg(cr_DbFilelistsStatements stmts,
+ cr_Package *pkg,
+ GError **err)
{
// Add package record into the filelists.sqlite
- db_package_ids_write(stmts->db, stmts->package_id_handle, pkg);
- db_filelists_write(stmts->db, stmts->filelists_handle, pkg);
+ GError *tmp_err = NULL;
+
+ db_package_ids_write(stmts->db, stmts->package_id_handle, pkg, &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
+
+ db_filelists_write(stmts->db, stmts->filelists_handle, pkg, &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
}
void
-cr_db_add_other_pkg(cr_DbOtherStatements stmts, cr_Package *pkg)
+cr_db_add_other_pkg(cr_DbOtherStatements stmts, cr_Package *pkg, GError **err)
{
GSList *iter;
cr_ChangelogEntry *entry;
int rc;
+ GError *tmp_err;
sqlite3_stmt *handle = stmts->changelog_handle;
// Add package record into the other.sqlite
- db_package_ids_write(stmts->db, stmts->package_id_handle, pkg);
+ db_package_ids_write(stmts->db, stmts->package_id_handle, pkg, &tmp_err);
+ if (tmp_err) {
+ g_propagate_error(err, tmp_err);
+ return;
+ }
for (iter = pkg->changelogs; iter; iter = iter->next) {
entry = (cr_ChangelogEntry *) iter->data;
sqlite3_reset (handle);
if (rc != SQLITE_DONE) {
- g_critical ("Error adding changelog to SQL: %s",
+ g_critical ("Error adding changelog to db: %s",
sqlite3_errmsg (stmts->db));
+ g_set_error(err, CR_DB_ERROR, CR_DB_ERROR,
+ "Error adding changelog to db : %s",
+ sqlite3_errmsg(stmts->db));
+ return;
}
}
}