Implement tracking changes of individual database object values
This commit is contained in:
parent
5920b8e6c2
commit
16ac4906d0
1 changed files with 20 additions and 1 deletions
|
@ -7,7 +7,24 @@ class DatabaseOrder(enum.Enum):
|
||||||
DESC = 2
|
DESC = 2
|
||||||
|
|
||||||
class DatabaseTable():
|
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():
|
class DatabaseTableCursor():
|
||||||
__slots__ = 'cr', 'table',
|
__slots__ = 'cr', 'table',
|
||||||
|
@ -33,6 +50,8 @@ class DatabaseTableCursor():
|
||||||
except IndexError:
|
except IndexError:
|
||||||
setattr(obj, name, None)
|
setattr(obj, name, None)
|
||||||
|
|
||||||
|
obj.__reset__()
|
||||||
|
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
def fetchone(self):
|
def fetchone(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue