from datetime import datetime, time, timedelta from fastapi import APIRouter, Depends, Header, HTTPException, status from pydantic import BaseModel, EmailStr, Field from typing import Dict, List, Optional, Set, Union from ..lib_general import * from app.config import settings from app.db import * from .user_models import * #import logging router = APIRouter() @router.post( "/", response_model=UserOut, summary='Create a new user account', status_code=status.HTTP_201_CREATED ) async def create_user(user: UserIn, x_account_id: str = Header(...)): """ Create a new user account """ user = {} user['account_id_random'] = x_account_id user['username'] = 'Scott.Idem' user['name'] = 'Scott Idem' user['email'] = 'Scott.Idem@oneskyit.com' return user #@router.patch('/{id_random}', response_model=UserOut, dependencies=[Depends(get_account_header)]) #async def update_user(id_random: str, user: UserIn, x_account_id: str = Header(...)): #async def update_user(id_random: str, user: UserIn): @router.patch( '/{id_random}', response_model=UserOut, summary='Update a user account' ) async def update_user(id_random: str, user: UserIn, x_account_id: str = Depends(get_account_header)): """ Update a user account """ user = {} user['id_random'] = id_random user['account_id_random'] = x_account_id user['username'] = 'Scott.Idem' user['name'] = 'Scott Idem' user['email'] = 'Scott.Idem@oneskyit.com' user['created_on'] = datetime.now() user['super'] = True return user @router.delete('/{id_random}', response_model=bool) async def delete_user(id_random: str, x_account_id: str = Depends(get_account_header)): """ Delete a user account """ return True return False @router.get('{object}/', response_model=List[UserOut]) @router.get('{object}/list_all', response_model=List[UserOut]) async def list_users(): """ Get a list of users """ print(settings.APP_NAME) users = [{'username': 'test.user.1'}, {'username': 'test.user.2'}, {'username': 'Scott.Idem'}] print('Getting all users...') sql = """ SELECT * FROM `user` WHERE id=1 """ records = sql_select(sql=sql, as_list=True) #records = sql_select(table_name='user') if records: print('Got the user list') return records else: print('No user records found') raise HTTPException(status_code=404) @router.get('/{username}') async def get_user_username(username: str, x_account_id: str = Header(...)): return {'username': username} #@router.get('/me') #async def get_user_current(): #user_out: UserOut #return {'username': 'test.user'}