Change signature of .upsert and .update on table according to: fixes #43.

This commit is contained in:
Friedrich Lindenberg 2015-05-21 23:38:14 +02:00
parent edef86126f
commit 537557285d

View File

@ -137,9 +137,9 @@ class Table(object):
filters = self._args_to_clause(dict(clause)) filters = self._args_to_clause(dict(clause))
stmt = self.table.update(filters, clean_row) stmt = self.table.update(filters, clean_row)
rp = self.database.executable.execute(stmt) rp = self.database.executable.execute(stmt)
return rp.rowcount > 0 return rp.rowcount
except KeyError: except KeyError:
return False return 0
def upsert(self, row, keys, ensure=True, types={}): def upsert(self, row, keys, ensure=True, types={}):
""" """
@ -161,10 +161,20 @@ class Table(object):
for key in keys: for key in keys:
filters[key] = row.get(key) filters[key] = row.get(key)
if self.find_one(**filters) is not None: res = self.find_one(**filters)
self.update(row, keys, ensure=ensure, types=types) if res is not None:
row_count = self.update(row, keys, ensure=ensure, types=types)
if row_count == 0:
return False
elif row_count == 1:
try:
return res['id']
except KeyError:
return True
else:
return True
else: else:
self.insert(row, ensure=ensure, types=types) return self.insert(row, ensure=ensure, types=types)
def delete(self, **_filter): def delete(self, **_filter):
""" Delete rows from the table. Keyword arguments can be used """ Delete rows from the table. Keyword arguments can be used