Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 38 additions & 5 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,36 +10,54 @@
User(id=uuid4(),
first_name="Mila",
last_name="Py",
gender=Gender.female,
roles=[Role.user]
gender=Gender.FEMALE,
roles=[Role.USER]
),
User(id=uuid4(),
first_name="James",
last_name="Jones",
gender=Gender.male,
roles=[Role.admin]
gender=Gender.MALE,
roles=[Role.ADMIN]
)
]


@app.get('/')
async def root():
"""
set the root page message for the api
"""
return {'example': 'this is an example', 'data': 100}


@app.get('/api/v1/users')
async def fetch_users():
"""
function to return all users in db
:return:
"""
return db


@app.post('/api/v1/users')
async def register_users(user: User):
"""
function to add users using the api
:param user:
:return:
"""
db.append(user)
return {"id": user.id}


@app.put('/api/v1/users/{user_id}')
async def update_users(user_update: ChangeUser,user_id: UUID):
"""
function to update user information using the api
:param user_update:
:param user_id:
:return:
"""
for user in db:
if user_id == user.id:
if user_update.first_name is not None:
Expand All @@ -57,7 +75,13 @@ async def update_users(user_update: ChangeUser,user_id: UUID):

@app.delete('/api/v1/users/{user_id}')
async def delete_user(user_id: UUID):
for user in db:
"""
function to delete users using the api
:param user_id:
:return:
"""
users = db.copy()
for user in users:
if user.id == user_id:
db.remove(user)
return f"{user_id} has been removed"
Expand All @@ -69,11 +93,20 @@ async def delete_user(user_id: UUID):

@app.get('/api/v1/random')
async def get_random():
"""
function to obtain random numbers using api
:return:
"""
random_n:int = random.randint(0,100)
return {'number':random_n, 'limit': 100}


@app.get('/api/v1/random/{limit}')
async def get_random_limit(limit:int):
"""
function to get random number and set limit using api
:param limit:
:return:
"""
random_n:int = random.randint(0,limit)
return {'number':random_n, 'limit': limit}
22 changes: 17 additions & 5 deletions models.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@
from typing import Optional, List
from uuid import UUID, uuid4
from pydantic import BaseModel
from enum import Enum
from pydantic import BaseModel


class Gender(str, Enum):
male = "male"
female = "female"
"""
class for gender api model
"""
MALE = "male"
FEMALE = "female"


class Role(str, Enum):
admin = "admin"
user = "user"
"""
class for roles in api model
"""
ADMIN = "admin"
USER = "user"


class User(BaseModel):
"""
class for user fields in api
"""
id: Optional[UUID] = uuid4()
first_name: str
last_name: str
Expand All @@ -23,6 +32,9 @@ class User(BaseModel):


class ChangeUser(BaseModel):
"""
class to update user fields in api
"""
first_name: Optional[str]
last_name: Optional[str]
roles: Optional[List[Role]]