def request_events(): yield [ RequestCreateEvent("a/1", {"a": 1}), RequestDeleteEvent("b/2"), RequestUpdateEvent("a/1", {"a": None, "b": [1, True]}), RequestRestoreEvent("b/2"), ]
def create_event(self, event: Dict[str, Any]) -> BaseRequestEvent: type = event["type"] fqid = event["fqid"] request_event: BaseRequestEvent if type == "create": request_event = RequestCreateEvent(fqid, event["fields"]) elif type == "update": request_event = RequestUpdateEvent(fqid, event["fields"]) elif type == "delete": request_event = RequestDeleteEvent(fqid) elif type == "restore": request_event = RequestRestoreEvent(fqid) else: raise BadCodingError() return request_event
def test_writer_distribution(writer, database, occ_locker, event_translator): events = [RequestCreateEvent("a/1", {"a": 1}), RequestDeleteEvent("b/2")] locked_fields = { "c/1": 3, "c/2/f": 4, "c/f": 5, } write_request = WriteRequest(events, {}, 1, locked_fields) event_translator.translate = MagicMock(return_value=[2, 3, 4]) writer.propagate_updates = pu = MagicMock() writer.write(write_request) event_translator.translate.assert_called_with(events) database.get_context.assert_called() occ_locker.assert_fqid_positions.assert_called_with({"c/1": 3}) occ_locker.assert_fqfield_positions.assert_called_with({"c/2/f": 4}) occ_locker.assert_collectionfield_positions.assert_called_with({"c/f": 5}) database.insert_events.assert_called_with([2, 3, 4], {}, 1) pu.assert_called_once()
events_count = connection.query_single_value( "SELECT COUNT(*) FROM events LIMIT 1", [] ) if events_count: if len(sys.argv) > 1 and sys.argv[1] == "-f": print("Warning: database is not empty! Executing anyway...") else: print("Error: Some events are already present, aborting.") sys.exit(1) path = env_service.get("DATASTORE_INITIAL_DATA_FILE") if path.startswith("http://") or path.startswith("https://"): file = request.urlopen(path) else: file = open(path) data = json.loads(file.read()) events: List[BaseRequestEvent] = [] for collection, models in data.items(): for model in models: fqid = build_fqid(collection, model["id"]) event = RequestCreateEvent(fqid, model) events.append(event) write_request = WriteRequest(events, None, 0, {}) writer.write(write_request) print(f"Wrote {len(events)} events to the datastore.")
def test_create_prune_none(): field_data = {"none": None} event = RequestCreateEvent("a/1", field_data) assert event.fields == {}
def get_dummy_request_events(): return [RequestCreateEvent("c/1", {"a": 1})]