add lookup
This commit is contained in:
49
id.saladeaula.digital/app/routes/lookup.py
Normal file
49
id.saladeaula.digital/app/routes/lookup.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from typing import Annotated
|
||||
|
||||
from aws_lambda_powertools.event_handler.api_gateway import Router
|
||||
from aws_lambda_powertools.event_handler.openapi.params import Path
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair, SortKey, TransactKey
|
||||
from layercake.extra_types import CnpjStr, CpfStr
|
||||
from layercake.funcs import pick
|
||||
from pydantic import EmailStr
|
||||
|
||||
from boto3clients import dynamodb_client
|
||||
from config import OAUTH2_TABLE
|
||||
|
||||
router = Router()
|
||||
dyn = DynamoDBPersistenceLayer(OAUTH2_TABLE, dynamodb_client)
|
||||
|
||||
|
||||
@router.get('/lookup')
|
||||
def lookup(
|
||||
email: Annotated[EmailStr, Path] = 'unknown',
|
||||
cpf: Annotated[CpfStr, Path] = 'unknown',
|
||||
cnpj: Annotated[CnpjStr, Path] = 'unknown',
|
||||
):
|
||||
r = dyn.collection.get_items(
|
||||
KeyPair(
|
||||
pk='email',
|
||||
sk=SortKey(email, path_spec='user_id'),
|
||||
rename_key='id',
|
||||
)
|
||||
+ KeyPair(
|
||||
pk='cpf',
|
||||
sk=SortKey(cpf, path_spec='user_id'),
|
||||
rename_key='id',
|
||||
)
|
||||
+ KeyPair(
|
||||
pk='cnpj',
|
||||
sk=SortKey(cnpj, path_spec='user_id'),
|
||||
rename_key='org_id',
|
||||
),
|
||||
flatten_top=False,
|
||||
)
|
||||
|
||||
if 'id' in r:
|
||||
user = dyn.collection.get_items(
|
||||
TransactKey(r['id']) + SortKey('0') + SortKey('FRESH_USER')
|
||||
)
|
||||
|
||||
return r | pick(('name', 'email'), user) if 'FRESH_USER' in user else {}
|
||||
|
||||
return r
|
||||
Reference in New Issue
Block a user