diff --git a/lib/nntp/tiny/db.py b/lib/nntp/tiny/db.py index 7459772..fc96d49 100644 --- a/lib/nntp/tiny/db.py +++ b/lib/nntp/tiny/db.py @@ -7,7 +7,24 @@ class DatabaseOrder(enum.Enum): DESC = 2 class DatabaseTable(): - pass + __slots__ = '__dirty__', '__dirty_columns__', + + def __init__(self): + object.__setattr__(self, '__dirty__', False) + object.__setattr__(self, '__dirty_columns__', dict()) + + def __reset__(self): + object.__setattr__(self, '__dirty__', False) + object.__setattr__(self, '__dirty_columns__', {k: 0 for k in self.columns}) + + def __setattr__(self, k, v): + object.__setattr__(self, k, v) + + values = object.__getattribute__(self, '__dirty_columns__') + + if k in values: + object.__setattr__(self, '__dirty__', True) + values[k] += 1 class DatabaseTableCursor(): __slots__ = 'cr', 'table', @@ -33,6 +50,8 @@ class DatabaseTableCursor(): except IndexError: setattr(obj, name, None) + obj.__reset__() + return obj def fetchone(self):