Add get profile by address rpc method (#112)

This commit is contained in:
Jonathan Zernik 2020-07-21 17:42:19 -07:00 committed by GitHub
parent 8cf24ed8ff
commit bd100c3006
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 52 additions and 0 deletions

View file

@ -353,6 +353,17 @@ def run():
len(get_address_squeak_display_response.squeak_display_entries) == 2
)
# Get squeak profile by address
get_profile_by_address_response = admin_stub.GetSqueakProfileByAddress(
squeak_admin_pb2.GetSqueakProfileByAddressRequest(
address=squeak_profile_address
)
)
print("Get profile by address response: " + str(get_profile_by_address_response))
assert (
get_profile_by_address_response.squeak_profile.profile_name == "bob"
)
if __name__ == "__main__":
logging.basicConfig()

View file

@ -34,6 +34,10 @@ service SqueakAdmin {
*/
rpc GetSqueakProfile (GetSqueakProfileRequest) returns (GetSqueakProfileReply) {}
/** sqkadmin: `getsqueakprofilebyaddress`
*/
rpc GetSqueakProfileByAddress (GetSqueakProfileByAddressRequest) returns (GetSqueakProfileByAddressReply) {}
/** sqkadmin: `makesqueak`
*/
rpc MakeSqueak (MakeSqueakRequest) returns (MakeSqueakReply) {}
@ -88,6 +92,16 @@ message GetSqueakProfileReply {
SqueakProfile squeak_profile = 1;
}
message GetSqueakProfileByAddressRequest {
/// The address
string address = 4;
}
message GetSqueakProfileByAddressReply {
/// The squeak profile
SqueakProfile squeak_profile = 1;
}
message SqueakProfile {
/// The profile id
int32 profile_id = 1;

View file

@ -41,6 +41,11 @@ class SqueakAdminServerHandler(object):
squeak_profile = self.squeak_node.get_squeak_profile(profile_id)
return squeak_profile
def handle_get_squeak_profile_by_address(self, address):
logger.info("Handle get squeak profile with address: {}".format(address))
squeak_profile = self.squeak_node.get_squeak_profile_by_address(address)
return squeak_profile
def handle_make_squeak(self, profile_id, content_str, replyto_hash):
logger.info("Handle make squeak profile with id: {}".format(profile_id))
inserted_squeak_hash = self.squeak_node.make_squeak(

View file

@ -53,6 +53,14 @@ class SqueakAdminServerServicer(squeak_admin_pb2_grpc.SqueakAdminServicer):
squeak_profile=squeak_profile_msg
)
def GetSqueakProfileByAddress(self, request, context):
address = request.address
squeak_profile = self.handler.handle_get_squeak_profile_by_address(address)
squeak_profile_msg = self._squeak_profile_to_message(squeak_profile)
return squeak_admin_pb2.GetSqueakProfileReply(
squeak_profile=squeak_profile_msg
)
def MakeSqueak(self, request, context):
profile_id = request.profile_id
content_str = request.content

View file

@ -117,6 +117,9 @@ class SqueakNode:
def get_squeak_profile(self, profile_id):
return self.postgres_db.get_profile(profile_id)
def get_squeak_profile_by_address(self, address):
return self.postgres_db.get_profile_by_address(address)
def make_squeak(self, profile_id, content_str, replyto_hash):
squeak_profile = self.postgres_db.get_profile(profile_id)
squeak_maker = SqueakMaker(self.lightning_client)

View file

@ -209,6 +209,17 @@ class PostgresDb:
row = curs.fetchone()
return self._parse_squeak_profile(row)
def get_profile_by_address(self, address):
""" Get a profile by address. """
sql = """
SELECT * FROM profile
WHERE address=%s;
"""
with self.get_cursor() as curs:
curs.execute(sql, (address,))
row = curs.fetchone()
return self._parse_squeak_profile(row)
def get_unverified_block_squeaks(self):
""" Get all squeaks without block header. """
sql = """