[gnome-games] database: Add DatabaseUid
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games] database: Add DatabaseUid
- Date: Sun, 26 Aug 2018 19:27:09 +0000 (UTC)
commit dfbba9cb737b30a55ec4e3c095e6f0886149b1f2
Author: theawless <theawless gmail com>
Date: Sun Aug 26 07:03:54 2018 +0530
database: Add DatabaseUid
This class will be responsible for saving Uid in the database.
src/database/database-uid.vala | 66 ++++++++++++++++++++++++++++++++++++++++++
src/meson.build | 1 +
2 files changed, 67 insertions(+)
---
diff --git a/src/database/database-uid.vala b/src/database/database-uid.vala
new file mode 100644
index 00000000..b5700e18
--- /dev/null
+++ b/src/database/database-uid.vala
@@ -0,0 +1,66 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+private class Games.DatabaseUid : Object, Uid {
+ private const string HAS_UID_QUERY = """
+ SELECT EXISTS (SELECT 1 FROM game_metadata WHERE uid=$UID LIMIT 1);
+ """;
+
+ private const string ADD_UID_QUERY = """
+ INSERT INTO game_metadata (uid) VALUES ($UID);
+ """;
+
+ private Uid uid;
+ private Sqlite.Statement has_statement;
+ private Sqlite.Statement add_statement;
+ private bool has;
+
+ internal DatabaseUid (Sqlite.Database database, Uid uid) {
+ this.uid = uid;
+
+ try {
+ has_statement = Database.prepare (database, HAS_UID_QUERY);
+ add_statement = Database.prepare (database, ADD_UID_QUERY);
+ }
+ catch (Error e) {
+ warning (e.message);
+ }
+ }
+
+ public string get_uid () throws Error {
+ try {
+ if (!has)
+ has_uid ();
+ if (!has)
+ add_uid ();
+ }
+ catch (Error e) {
+ warning (e.message);
+ }
+
+ return uid.get_uid ();
+ }
+
+ private void has_uid () throws Error {
+ if (has_statement == null)
+ return;
+
+ Database.bind_text (has_statement, "$UID", uid.get_uid ());
+
+ if (has_statement.step () == Sqlite.ROW)
+ has = has_statement.column_text (0) == "1";
+ else
+ warning ("Execution failed.");
+ }
+
+ private void add_uid () throws Error {
+ if (add_statement == null)
+ return;
+
+ has = true;
+
+ Database.bind_text (add_statement, "$UID", uid.get_uid ());
+
+ if (add_statement.step () != Sqlite.DONE)
+ warning ("Execution failed.");
+ }
+}
diff --git a/src/meson.build b/src/meson.build
index 3633d1ca..5bb851a8 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -47,6 +47,7 @@ vala_sources = [
'database/database.vala',
'database/database-error.vala',
+ 'database/database-uid.vala',
'database/database-uri-iterator.vala',
'database/database-uri-source.vala',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]