def get_objects(self): # Get top-level shop metafields yield from super().get_objects() # Get parent objects, bookmarking at `metafield_<object_name>` for selected_parent in get_selected_parents(): # The name member controls many things, but most importantly # the bookmark key. This switches us over to the # `metafield_<parent_type>` bookmark. We track that separately # to make resetting individual streams easier. selected_parent.name = "metafield_{}".format(selected_parent.name) for parent_object in selected_parent.get_objects(): since_id = 1 while True: metafields = get_metafields(parent_object, since_id) for metafield in metafields: if metafield.id < since_id: raise OutOfOrderIdsError("metafield.id < since_id: {} < {}".format( metafield.id, since_id)) yield metafield if len(metafields) < RESULTS_PER_PAGE: break if metafields[-1].id != max([o.id for o in metafields]): raise OutOfOrderIdsError("{} is not the max id in metafields ({})".format( metafields[-1].id, max([o.id for o in metafields]))) since_id += metafields[-1].id
def get_objects(self): since_id = 1 bookmark = self.get_bookmark() max_bookmark = utils.strftime(utils.now()) while True: query_params = { "since_id": since_id, "limit": RESULTS_PER_PAGE, } objects = self.call_api(query_params) for obj in objects: # Syncing Collects is a full sync every time but emitting records that have # an updated_date greater than the bookmark if utils.strptime_with_tz(obj.updated_at) > bookmark: if obj.id < since_id: raise OutOfOrderIdsError("obj.id < since_id: {} < {}".format( obj.id, since_id)) yield obj if len(objects) < RESULTS_PER_PAGE: # Update the bookmark at the end of the last page self.update_bookmark(max_bookmark) break if objects[-1].id != max([o.id for o in objects]): raise OutOfOrderIdsError("{} is not the max id in objects ({})".format( objects[-1].id, max([o.id for o in objects]))) since_id = objects[-1].id
def get_objects(self): selected_parent = Context.stream_objects['products']() selected_parent.name = "inventory_items" # Page through all `products` and product variants, bookmarking at `inventory_items` for parent_object in selected_parent.get_objects(): for variant in parent_object.variants: since_id = 1 while True: inventory_items = self.get_inventory_items( variant, since_id) for inventory_item in inventory_items: if inventory_item.id < since_id: raise OutOfOrderIdsError( "inventory_item.id < since_id: {} < {}".format( inventory_item.id, since_id)) yield inventory_item if len(inventory_items) < RESULTS_PER_PAGE: break if inventory_items[-1].id != max( [o.id for o in inventory_items]): raise OutOfOrderIdsError( "{} is not the max id in inventory_items ({})". format(inventory_items[-1].id, max([o.id for o in inventory_items]))) since_id = inventory_items[-1].id
def get_objects(self): selected_parent = Context.stream_objects[self.get_parent_name()]() selected_parent.name = self.name # Page through all `orders`, bookmarking at `child_orders` for parent_object in selected_parent.get_objects(): since_id = 1 while True: children = self.get_children(parent_object, since_id) for child in children: if child.id < since_id: raise OutOfOrderIdsError("child.id < since_id: {} < {}".format( child.id, since_id)) yield child if len(children) < RESULTS_PER_PAGE: break if children[-1].id != max([o.id for o in children]): raise OutOfOrderIdsError("{} is not the max id in children ({})".format( children[-1].id, max([o.id for o in children]))) since_id = children[-1].id
def get_objects(self): selected_parent = Context.stream_objects['orders']() selected_parent.name = "refund_orders" # Page through all `orders`, bookmarking at `refund_orders` for parent_object in selected_parent.get_objects(): since_id = 1 while True: refunds = self.get_refunds(parent_object, since_id) for refund in refunds: if refund.id < since_id: raise OutOfOrderIdsError("refund.id < since_id: {} < {}".format( refund.id, since_id)) yield refund if len(refunds) < RESULTS_PER_PAGE: break if refunds[-1].id != max([o.id for o in refunds]): raise OutOfOrderIdsError("{} is not the max id in refunds ({})".format( refunds[-1].id, max([o.id for o in refunds]))) since_id = refunds[-1].id