static void open_cb (GObject *object, GAsyncResult *result, gpointer user_data) { GomRepository *repository; GomAdapter *adapter = (GomAdapter *)object; gboolean ret; GError *error = NULL; GList *object_types; ret = gom_adapter_open_finish(adapter, result, &error); g_assert_no_error(error); g_assert(ret); repository = gom_repository_new(adapter); /* This allows switching between automatic and manual DB upgrades */ #if 0 gom_repository_migrate_async(repository, 2, do_migrate, NULL, migrate_cb, user_data); #else object_types = g_list_prepend(NULL, GINT_TO_POINTER(BOOKMARKS_TYPE_RESOURCE)); gom_repository_automatic_migrate_async(repository, 2, object_types, migrate_cb, user_data); #endif g_object_unref(repository); }
static void grl_bookmarks_source_init (GrlBookmarksSource *source) { GError *error = NULL; gchar *path; gchar *db_path; GList *object_types; source->priv = GRL_BOOKMARKS_GET_PRIVATE (source); path = g_build_filename (g_get_user_data_dir (), "grilo-plugins", NULL); if (!g_file_test (path, G_FILE_TEST_IS_DIR)) { g_mkdir_with_parents (path, 0775); } GRL_DEBUG ("Opening database connection..."); db_path = g_build_filename (path, GRL_SQL_DB, NULL); g_free (path); source->priv->adapter = gom_adapter_new (); if (!gom_adapter_open_sync (source->priv->adapter, db_path, &error)) { GRL_WARNING ("Could not open database '%s': %s", db_path, error->message); g_error_free (error); g_free (db_path); return; } g_free (db_path); source->priv->repository = gom_repository_new (source->priv->adapter); object_types = g_list_prepend(NULL, GINT_TO_POINTER(BOOKMARKS_TYPE_RESOURCE)); gom_repository_automatic_migrate_async (source->priv->repository, 2, object_types, migrate_cb, source); }