From f24b47c44db03a8d9ba611f827e71aeb1f63d0bd Mon Sep 17 00:00:00 2001 From: fiaxh Date: Sun, 12 Mar 2017 14:44:09 +0100 Subject: PGP module: store data in own db, use pgp key as specified in account settings --- plugins/openpgp/src/database.vala | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 plugins/openpgp/src/database.vala (limited to 'plugins/openpgp/src/database.vala') diff --git a/plugins/openpgp/src/database.vala b/plugins/openpgp/src/database.vala new file mode 100644 index 00000000..ac80f79a --- /dev/null +++ b/plugins/openpgp/src/database.vala @@ -0,0 +1,67 @@ +using Qlite; + +using Dino.Entities; + +namespace Dino.Plugins.OpenPgp { + +public class Database : Qlite.Database { + private const int VERSION = 0; + + public class AccountSetting : Table { + public Column account_id = new Column.Integer("account_id") { primary_key = true }; + public Column key = new Column.Text("key") { not_null = true }; + + protected AccountSetting(Database db) { + base(db, "account_setting"); + init({account_id, key}); + } + } + + public class ContactKey : Table { + public Column jid = new Column.Text("jid") { primary_key = true }; + public Column key = new Column.Text("key") { not_null = true }; + + protected ContactKey(Database db) { + base(db, "contact_key"); + init({jid, key}); + } + } + + public AccountSetting account_setting_table { get; private set; } + public ContactKey contact_key_table { get; private set; } + + public Database(string filename) { + base(filename, VERSION); + this.account_setting_table = new AccountSetting(this); + this.contact_key_table = new ContactKey(this); + init({account_setting_table, contact_key_table}); + } + + public void set_contact_key(Jid jid, string key) { + contact_key_table.insert().or("REPLACE") + .value(contact_key_table.jid, jid.to_string()) + .value(contact_key_table.key, key) + .perform(); + } + + public string? get_contact_key(Jid jid) { + return contact_key_table.select({contact_key_table.key}) + .with(contact_key_table.jid, "=", jid.bare_jid.to_string())[contact_key_table.key]; + } + + public void set_account_key(Account account, string key) { + account_setting_table.insert().or("REPLACE") + .value(account_setting_table.account_id, account.id) + .value(account_setting_table.key, key) + .perform(); + } + + public string? get_account_key(Account account) { + return account_setting_table.select({account_setting_table.key}) + .with(account_setting_table.account_id, "=", account.id)[account_setting_table.key]; + } + + public override void migrate(long oldVersion) { } +} + +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf