aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/service
diff options
context:
space:
mode:
Diffstat (limited to 'libdino/src/service')
-rw-r--r--libdino/src/service/database.vala21
-rw-r--r--libdino/src/service/roster_manager.vala20
2 files changed, 7 insertions, 34 deletions
diff --git a/libdino/src/service/database.vala b/libdino/src/service/database.vala
index 2836751f..19ca0b06 100644
--- a/libdino/src/service/database.vala
+++ b/libdino/src/service/database.vala
@@ -6,7 +6,7 @@ using Dino.Entities;
namespace Dino {
public class Database : Qlite.Database {
- private const int VERSION = 1;
+ private const int VERSION = 2;
public class AccountTable : Table {
public Column<int> id = new Column.Integer("id") { primary_key = true, auto_increment = true };
@@ -15,10 +15,11 @@ public class Database : Qlite.Database {
public Column<string> password = new Column.Text("password");
public Column<string> alias = new Column.Text("alias");
public Column<bool> enabled = new Column.BoolInt("enabled");
+ public Column<string> roster_version = new Column.Text("roster_version") { min_version=2 };
internal AccountTable(Database db) {
base(db, "account");
- init({id, bare_jid, resourcepart, password, alias, enabled});
+ init({id, bare_jid, resourcepart, password, alias, enabled, roster_version});
}
}
@@ -128,18 +129,6 @@ public class Database : Qlite.Database {
}
}
- public class AccountKeyValueTable : Table {
- public Column<int> account_id = new Column.Integer("account_id");
- public Column<string> key = new Column.Text("key");
- public Column<string> value = new Column.Text("value");
-
- internal AccountKeyValueTable(Database db) {
- base(db, "account_key_value");
- init({account_id, key, value});
- unique({account_id, key}, "IGNORE");
- }
- }
-
public AccountTable account { get; private set; }
public JidTable jid { get; private set; }
public MessageTable message { get; private set; }
@@ -148,7 +137,6 @@ public class Database : Qlite.Database {
public AvatarTable avatar { get; private set; }
public EntityFeatureTable entity_feature { get; private set; }
public RosterTable roster { get; private set; }
- public AccountKeyValueTable account_key_value { get; private set; }
public Map<int, string> jid_table_cache = new HashMap<int, string>();
public Map<string, int> jid_table_reverse = new HashMap<string, int>();
@@ -164,8 +152,7 @@ public class Database : Qlite.Database {
avatar = new AvatarTable(this);
entity_feature = new EntityFeatureTable(this);
roster = new RosterTable(this);
- account_key_value = new AccountKeyValueTable(this);
- init({ account, jid, message, real_jid, conversation, avatar, entity_feature, roster, account_key_value });
+ init({ account, jid, message, real_jid, conversation, avatar, entity_feature, roster });
exec("PRAGMA synchronous=0");
}
diff --git a/libdino/src/service/roster_manager.vala b/libdino/src/service/roster_manager.vala
index 91da7579..e17c24e3 100644
--- a/libdino/src/service/roster_manager.vala
+++ b/libdino/src/service/roster_manager.vala
@@ -72,14 +72,12 @@ public class RosterStoreImpl : Roster.Storage, Object {
private Account account;
private Database db;
- private string version = "";
private HashMap<string, Roster.Item> items = new HashMap<string, Roster.Item>();
public class RosterStoreImpl(Account account, Database db) {
this.account = account;
this.db = db;
- version = db_get_roster_version() ?? "";
foreach (Qlite.Row row in db.roster.select().with(db.roster.account_id, "=", account.id)) {
Roster.Item item = new Roster.Item();
item.jid = row[db.roster.jid];
@@ -90,7 +88,7 @@ public class RosterStoreImpl : Roster.Storage, Object {
}
public string? get_roster_version() {
- return version;
+ return account.roster_version;
}
public Collection<Roster.Item> get_roster() {
@@ -102,11 +100,7 @@ public class RosterStoreImpl : Roster.Storage, Object {
}
public void set_roster_version(string version) {
- db.account_key_value.insert().or("REPLACE")
- .value(db.account_key_value.account_id, account.id)
- .value(db.account_key_value.key, "roster_version")
- .value(db.account_key_value.value, version)
- .perform();
+ account.roster_version = version;
}
public void set_roster(Collection<Roster.Item> items) {
@@ -130,15 +124,7 @@ public class RosterStoreImpl : Roster.Storage, Object {
items.unset(item.jid);
db.roster.delete()
.with(db.roster.account_id, "=", account.id)
- .with(db.roster.jid, "=", item.jid);
- }
-
- private string? db_get_roster_version() {
- Qlite.Row? row = db.account_key_value.select()
- .with(db.account_key_value.account_id, "=", account.id)
- .with(db.account_key_value.key, "=", "roster_version").iterator().get_next();
- if (row != null) return row[db.account_key_value.value];
- return null;
+ .with(db.roster.jid, "=", item.jid).perform();
}
}