# 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 . 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={}) def create_change_from_log_entry(entry): return Change(op=entry['op'], meta=entry['meta'], res=entry['res'])