Files
OSIT-AE-API-FastAPI/app/routers/membership_person_group.py
2024-04-26 15:15:37 -04:00

123 lines
4.8 KiB
Python

import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_person_group_methods import get_membership_person_group_rec_list, load_membership_person_group_obj
from app.models.membership_person_group_models import Membership_Person_Group_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
@router.post('/membership/group/person', response_model=Resp_Body_Base)
async def post_membership_person_group_obj(
obj: Membership_Person_Group_Base,
x_account_id: str = Header(...),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_person_group'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
result = post_obj_template(
obj_type=obj_type,
data=obj_data_dict,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
@router.patch('/membership/group/person/{obj_id}', response_model=Resp_Body_Base)
async def patch_membership_person_group_obj(
obj_id: str = Path(min_length=11, max_length=22),
obj: Membership_Person_Group_Base = None,
#x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_person_group'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type)
obj_data_dict['id_random'] = obj_id
result = patch_obj_template(
obj_type=obj_type,
data=obj_data_dict,
obj_id=obj_id,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
# ### BEGIN ### API Membership Type Person ### get_membership_person_group_obj() ###
# Updated 2021-07-27
@router.get('/membership/group/person/{membership_person_group_id}', response_model=Resp_Body_Base)
async def get_membership_person_group_obj(
membership_person_group_id: str = Path(min_length=11, max_length=22),
enabled: str = 'enabled', # For now this covers any included objects or object lists
limit: int = 500, # For now this covers any included objects or object lists
inc_product: bool = False, # Per member or group member belongs to
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_person_group_id := redis_lookup_id_random(record_id_random=membership_person_group_id, table_name='membership_person_group'): pass
else: return mk_resp(data=None, status_code=404)
if membership_person_group_result := load_membership_person_group_obj(
membership_person_group_id = membership_person_group_id,
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
enabled = enabled,
inc_product = inc_product,
):
response_data = membership_person_group_result
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=response_data)
# ### END ### API Membership Type Person ### get_membership_person_group_obj() ###
@router.delete('/membership/group/person/{obj_id}', response_model=Resp_Body_Base)
async def delete_membership_person_group_obj(
obj_id: str = Path(min_length=11, max_length=22),
x_account_id: str = Header(...),
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_person_group'
result = delete_obj_template(
obj_type=obj_type,
obj_id=obj_id,
)
return result