Creating templates different types of objects or resources.
This commit is contained in:
@@ -5,57 +5,19 @@ from typing import Dict, List, Optional, Set, Union
|
||||
|
||||
from ..lib_general import *
|
||||
from app.config import settings
|
||||
|
||||
from app.db import *
|
||||
|
||||
from app.redis import *
|
||||
from .user_models import *
|
||||
|
||||
#import logging
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
class UserBase(BaseModel):
|
||||
id_random: str = None # This should not be None. It is required.
|
||||
account_id_random: str = None # This should not be None. It is required.
|
||||
username: str = Field(None, example='New.User', min_length=3, max_length=100)
|
||||
name: Optional[str] = None
|
||||
email: EmailStr
|
||||
email_verified: Optional[bool] = None
|
||||
enable: Optional[bool] = None
|
||||
enable_from: Optional[datetime] = None
|
||||
enable_to: Optional[datetime] = None
|
||||
super: Optional[bool] = None
|
||||
manager: Optional[bool] = None
|
||||
administrator: Optional[bool] = None
|
||||
verified: Optional[bool] = None
|
||||
|
||||
|
||||
class UserIn(UserBase):
|
||||
password: str = Field(None, example='My Difficult Password!', min_length=10)
|
||||
|
||||
|
||||
class UserOut(UserBase):
|
||||
password_set_on: Optional[datetime] = None
|
||||
password_reset_token: Optional[str] = None
|
||||
password_reset_expire_on: Optional[datetime] = None
|
||||
logged_in_on: Optional[datetime] = None
|
||||
last_activity_on: Optional[datetime] = None
|
||||
created_on: datetime
|
||||
update_on: Optional[datetime] = None
|
||||
|
||||
|
||||
class UserInDB(UserBase):
|
||||
hashed_password: str
|
||||
password_set_on: Optional[datetime] = None
|
||||
password_reset_token: Optional[str] = None
|
||||
password_reset_expire_on: Optional[datetime] = None
|
||||
logged_in_on: Optional[datetime] = None
|
||||
last_activity_on: Optional[datetime] = None
|
||||
|
||||
|
||||
@router.post(
|
||||
"/",
|
||||
response_model=UserOut,
|
||||
response_model_exclude_unset=True,
|
||||
summary='Create a new user account',
|
||||
status_code=status.HTTP_201_CREATED
|
||||
)
|
||||
@@ -63,14 +25,32 @@ async def create_user(user: UserIn, x_account_id: str = Header(...)):
|
||||
"""
|
||||
Create a new user account
|
||||
"""
|
||||
user = dict(user)
|
||||
table_name = 'user'
|
||||
|
||||
user = {}
|
||||
user['account_id_random'] = x_account_id
|
||||
user['username'] = 'Scott.Idem'
|
||||
user['name'] = 'Scott Idem'
|
||||
user['email'] = 'Scott.Idem@oneskyit.com'
|
||||
# Look up the user['account_id_random'] and match to a record ID from Redis
|
||||
if account_id := redis_lookup_id_random(table_name='account', record_id_random=x_account_id):
|
||||
user['account_id'] = account_id
|
||||
user.pop('account_id_random')
|
||||
else:
|
||||
print('Something went wrong with the id_random lookup.')
|
||||
raise HTTPException(status_code=500)
|
||||
|
||||
return user
|
||||
if result := sql_insert(table_name=table_name, record=user, id_random_length=16):
|
||||
print(type(result))
|
||||
if type(result) == int: # isinstance(result, int):
|
||||
# Select the new record to return as a response.
|
||||
if new_user := dict(sql_select(table_name=table_name, record_id=result)):
|
||||
return new_user
|
||||
else:
|
||||
print('New user record was not found.')
|
||||
raise HTTPException(status_code=400)
|
||||
else:
|
||||
print('There is likely a duplicate record. A new record was not created.')
|
||||
raise HTTPException(status_code=400)
|
||||
else:
|
||||
print('No user record was not created')
|
||||
raise HTTPException(status_code=400)
|
||||
|
||||
|
||||
#@router.patch('/{id_random}', response_model=UserOut, dependencies=[Depends(get_account_header)])
|
||||
@@ -125,7 +105,7 @@ async def list_users():
|
||||
sql = """
|
||||
SELECT *
|
||||
FROM `user`
|
||||
WHERE id=1
|
||||
/*WHERE id=1*/
|
||||
"""
|
||||
|
||||
records = sql_select(sql=sql, as_list=True)
|
||||
|
||||
Reference in New Issue
Block a user