def put_member(client: boto3.client, member): try: response = client.put_item( TableName=TABLE_NAME, Item={ k: SERIALIZER.serialize(v) for k, v in Member.Schema().dump(member).items() if v != '' or v is not None }) except ClientError as err: raise err else: return response
def get_members(client: boto3.client, guild_id): dynamodb = boto3.resource('dynamodb') try: table = dynamodb.Table(TABLE_NAME) result = table.query( KeyConditionExpression=Key('guild_id').eq(guild_id)) except ClientError as err: raise err else: members = [] if result.get('Items') is None: return None for item in result.get('Items'): member = Member.Schema().load(item, unknown=EXCLUDE, partial=True) members.append(member) return members
def get_member(client: boto3.client, guild_id, member_id): try: get_result = client.get_item(TableName=TABLE_NAME, Key={ 'guild_id': { 'N': str(guild_id) }, 'member_id': { 'N': str(member_id) } }) except ClientError as err: raise err else: if get_result.get('Item') is None: return None deserialized = { k: DESERIALIZER.deserialize(v) for k, v in get_result.get('Item').items() } return Member.Schema().load(deserialized, unknown=EXCLUDE)