- commit
- fcf5ca215858e1cb82c529c5169f686f5640d77d
- parent
- 579ccb67a83905ef6b4f24f1ed567623ad259dbd
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-04-05 07:34
refactor: merge list_items() into search_items()
Diffstat
| M | xikeyring/dbus.py | 4 | ++-- |
| M | xikeyring/keyring.py | 22 | +++++++++------------- |
2 files changed, 11 insertions, 15 deletions
diff --git a/xikeyring/dbus.py b/xikeyring/dbus.py
@@ -136,7 +136,7 @@ class DBusService(BaseDBusService): 136 136 self.register_object(conn, f'{OFSP}/aliases/default', f'{OFSI}.Collection') 137 137 self.register_object(conn, f'{OFSP}/collection/it', f'{OFSI}.Collection') 138 138139 -1 items = self.keyring.list_items()-1 139 items = self.keyring.search_items() 140 140 self.update_items(conn, keep=items, add=items) 141 141 142 142 def service_open_session(self, conn, sender, path, algorithm, input): @@ -201,7 +201,7 @@ class DBusService(BaseDBusService): 201 201 return GLib.Variant('(oo)', (f'{OFSP}/collection/it/{id}', '/')) 202 202 203 203 def collection_get_items(self, conn, sender, path):204 -1 items = self.keyring.list_items()-1 204 items = self.keyring.search_items() 205 205 self.update_items(conn, keep=items, add=items) 206 206 return GLib.Variant('ao', self.ids_to_paths(items)) 207 207
diff --git a/xikeyring/keyring.py b/xikeyring/keyring.py
@@ -142,20 +142,16 @@ class Keyring: 142 142 raise ValueError 143 143 self._crypt = None 144 144145 -1 def list_items(self) -> list[int]:146 -1 res = self.db.execute('SELECT id FROM items')147 -1 return [row[0] for row in res.fetchall()]148 -1149 -1 def search_items(self, query: dict[str, str]) -> list[int]:150 -1 if not query:151 -1 return self.list_items()-1 145 def search_items(self, query: dict[str, str] = {}) -> list[int]: 152 146 params = []153 -1 for key, value in query.items():154 -1 params.append(f'$.{key}')155 -1 params.append(value)156 -1 sql = 'SELECT id FROM items WHERE ' + ' AND '.join(157 -1 ['json_extract(attributes, ?) = ?' for _ in query]158 -1 )-1 147 sql = 'SELECT id FROM items' -1 148 if query: -1 149 for key, value in query.items(): -1 150 params.append(f'$.{key}') -1 151 params.append(value) -1 152 sql += ' WHERE ' + ' AND '.join( -1 153 ['json_extract(attributes, ?) = ?' for _ in query] -1 154 ) 159 155 res = self.db.execute(sql, params) 160 156 return [row[0] for row in res.fetchall()] 161 157