def batch(self, diff, context): # Done output = "OK" diff = diff.diff """ Format of 'diff': {"added": [[identifier, [longitude, latitude]],...], "removed: [identifier, ...]"} """ query = [] # Convert string JSON 'diff' to a dictionary diff = jsonLib.loads(diff) # Building a query for each entry to be added if "added" in diff: for obj in diff["added"]: if len( dbhelper.sendQuery(config["getentry"], (obj[0], ), limit=1)) == 0: query.append( self._createDBEntry(obj[0], obj[1], send=False)) # Building a query for each entry to be removed if "removed" in diff: for obj in diff["removed"]: query.append(self.deleteEntry(obj, obj, send=False)) # Create batch query and send it #result = self._sendToDB("\n".join(query), _dbconnstr) dbhelper.sendQuery("\n".join(query), ()).get() return pb2.status(status=output)
def addEntry(self, entry, context): # Done output = "OK" #query = self.getentry()["query"] query = config["getentry"] #FIRST PART: Check for existence of the entry # create query #query = query.replace("{0}", str(self._preventHack(entry.identifier))) # ask DB for existence of the entry 'identifier' #json = self._toJSON(self._sendToDB(query, _dbconnstr), self.getentry()["columns"]) json = dbhelper.sendQuery(query, (entry.identifier, )).get() # check, if the result contains any content if len(json) == 0: self._createDBEntry(entry.identifier, [entry.longitude, entry.latitude]) return pb2.status(status=output) else: return pb2.status(status="Already exists in database")
def deleteEntry(self, identifier, context, send=True): # Done output = "OK" #query = self.deleteentry()["query"] query = config["deleteentry"] #create query if type(identifier) is str: #query = query.replace("{0}", str(self._preventHack(identifier))) query = dbhelper.modifyQuery(query, (identifier, )) else: #query = query.replace("{0}", str(self._preventHack(identifier.identifier))) query = dbhelper.modifyQuery(query, (identifier.identifier, )) #send query if send: #result = self._sendToDB(query, _dbconnstr) result = dbhelper.sendQuery(query, ()).get() return pb2.status(status=output) else: return query
def feedback(self, data): with grpc.insecure_channel("localhost:50051") as channel: stub = pb2_grpc.MDRankingServiceStub(channel) resp = stub.feedback(pb2.status(status=data)) output = resp.status return output
def feedback(self, status, context): # Done return pb2.status(status=status.status)
def increaseClick(self, click, context): # Done #self._sendToDB(self._increaseClick(click.identifier, click.event), _dbconnstr) dbhelper.sendQuery(self._increaseClick(click.identifier, click.event), ()).get() return pb2.status(status="OK")