Files
saladeaula.digital/http-api/app/routes/users/orgs.py
2025-08-15 00:06:05 -03:00

52 lines
1.2 KiB
Python

from http import HTTPStatus
from aws_lambda_powertools.event_handler.api_gateway import Router
from aws_lambda_powertools.event_handler.exceptions import (
BadRequestError as PowertoolsBadRequestError,
)
from layercake.dynamodb import (
DynamoDBPersistenceLayer,
KeyPair,
MissingError,
PrefixKey,
)
from layercake.extra_types import CnpjStr
from pydantic import BaseModel
from api_gateway import JSONResponse
from boto3clients import dynamodb_client
from config import USER_TABLE
from rules.user import remove_org_member
class BadRequestError(MissingError, PowertoolsBadRequestError): ...
router = Router()
user_layer = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
@router.get(
'/<id>/orgs',
compress=True,
)
def get_orgs(id: str):
start_key = router.current_event.get_query_string_value('start_key', None)
return user_layer.collection.query(
KeyPair(id, PrefixKey('orgs')),
start_key=start_key,
)
class Unassign(BaseModel):
id: str
name: str
cnpj: CnpjStr
@router.delete('/<id>/orgs', compress=True)
def delete_org(id: str, payload: Unassign):
remove_org_member(id, org_id=payload.id, persistence_layer=user_layer)
return JSONResponse(status_code=HTTPStatus.OK, body=payload)