diff options
Diffstat (limited to 'muck/change.py')
-rw-r--r-- | muck/change.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/muck/change.py b/muck/change.py new file mode 100644 index 0000000..d5a3fd2 --- /dev/null +++ b/muck/change.py @@ -0,0 +1,59 @@ +# Copyright (C) 2018 Lars Wirzenius +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +class Change: + + def __init__(self, op, meta, res): + self._dict = { + 'op': op, + 'meta': meta, + 'res': res, + } + + def as_dict(self): + return self._dict + + def get_op(self): + return self._dict['op'] + + def get_id(self): + return self.get_meta()['id'] + + def get_rev(self): + return self.get_meta()['rev'] + + def get_meta(self): + return self._dict['meta'] + + def get_res(self): + return self._dict['res'] + + +class CreateChange(Change): + + def __init__(self, meta=None, res=None): + super().__init__(op='create', meta=meta, res=res) + + +class UpdateChange(Change): + + def __init__(self, meta=None, res=None): + super().__init__(op='update', meta=meta, res=res) + + +class DeleteChange(Change): + + def __init__(self, meta=None, res=None): + super().__init__(op='delete', meta=meta, res={}) |