Skip to content

Commit

Permalink
* Adding user management endpoints
Browse files Browse the repository at this point in the history
* Adding user parameters for future usage
  • Loading branch information
walterjgsp committed Oct 23, 2020
1 parent 841ee79 commit cda8d08
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 4 deletions.
2 changes: 1 addition & 1 deletion app/src/application/mp_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
mpApi = FastAPI(
title='F05 Backend API',
description='API backend for the project F05',
version="1.4.1",
version="1.5.0",
openapi_prefix=config.settings.api_prefix,
docs_url=None,
redoc_url=None,
Expand Down
2 changes: 1 addition & 1 deletion app/src/application/publicwork/database/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def get_public_work(db: Session) -> list:


def count_public_work(db: Session) -> int:
return db.query(PublicWorkDB).all().count()
return db.query(PublicWorkDB).count()


def add_public_work(db: Session, public_work: PublicWork) -> PublicWork:
Expand Down
7 changes: 6 additions & 1 deletion app/src/application/publicwork/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ async def delete_public_work(public_work_id: str, db: Session = Depends(get_db))
public_work_db.collect = []
return public_work_db
else:
raise HTTPException(status_code=403, detail="Not able to find public work to delete")
raise HTTPException(status_code=402, detail="Not able to find public work to delete")

@staticmethod
@public_work_router.get("/version")
Expand All @@ -81,3 +81,8 @@ async def get_table_version(db: Session = Depends(get_db)) -> Dict[str, int]:
@public_work_router.get("/changes")
async def get_changes_from_version(version: int, db: Session = Depends(get_db)) -> List[PublicWorkDiff]:
return public_work_repository.get_public_work_changes_from(db, version)

@staticmethod
@public_work_router.get("/count")
async def get_public_work_count(db: Session = Depends(get_db)) -> int:
return public_work_repository.count_public_work(db)
16 changes: 16 additions & 0 deletions app/src/application/security/database/repository.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from typing import List

from sqlalchemy.orm import Session

from application.security.models.user import User
Expand All @@ -8,9 +10,23 @@ def get_user_by_email(db: Session, email: str) -> User:
return db.query(UserDB).filter(UserDB.email == email).first()


def delete_user_by_email(db: Session, email: str) -> User:
db_user = db.query(UserDB).filter(UserDB.email == email).first()
if db_user:
db.delete(db_user)
db.commit()
return db_user


def add_user(db: Session, user: User) -> User:
db_user = UserDB.from_model(user)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user


def get_registered_users(db: Session) -> List[str]:
db_users = db.query(UserDB).all()
emails = list(map(lambda x: x.email, db_users))
return emails
6 changes: 5 additions & 1 deletion app/src/application/security/database/userDB.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, String
from sqlalchemy import Column, Integer, String, BigInteger

from application.core.database import Base
from application.security.models.user import User
Expand All @@ -10,6 +10,10 @@ class UserDB(Base):
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
email = Column(String)
full_name = Column(String)
cpf = Column(String)
profile_pic = Column(String)
birthday = Column(BigInteger)
phone = Column(String)
hashed_password = Column(String)

@classmethod
Expand Down
14 changes: 14 additions & 0 deletions app/src/application/security/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,17 @@ async def create_user(user: User, db: Session = Depends(get_db)) -> Response:
return Response(success=True)
else:
raise HTTPException(status_code=403, detail="Not able to create user account")

@staticmethod
@security_router.get("/users")
async def get_all_users(db: Session = Depends(get_db)) -> List[str]:
return security_repository.get_registered_users(db)

@staticmethod
@security_router.post("/users/delete")
async def delete_user(email: str, db: Session = Depends(get_db)) -> Response:
user = security_repository.delete_user_by_email(db, email)
if user:
return Response(success=True)
else:
return Response(success=False, error=Error(status_code=401, message="User not found"))

0 comments on commit cda8d08

Please sign in to comment.