-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7743d99
commit 1786dc4
Showing
15 changed files
with
180 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
/venv | ||
__pycache__ | ||
__pycache__ | ||
.env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,45 @@ | ||
from typing import List | ||
|
||
import fastapi | ||
from fastapi import Depends, HTTPException | ||
from sqlalchemy.orm import Session | ||
|
||
from db.dbsetup import get_db | ||
from pydantic_schemas.course import Course, CourseCreate | ||
from api.utils.courses import get_course, get_courses, create_course | ||
|
||
router = fastapi.APIRouter() | ||
|
||
|
||
@router.get("/courses") | ||
async def read_courses(): | ||
return {"courses": []} | ||
@router.get("/courses", response_model=List[Course]) | ||
async def read_courses(db: Session = Depends(get_db)): | ||
courses = get_courses(db=db) | ||
return courses | ||
|
||
|
||
@router.post("/courses") | ||
async def create_course_api(): | ||
return {"courses": []} | ||
@router.post("/courses", response_model=Course) | ||
async def create_new_course(course: CourseCreate, db: Session = Depends(get_db)): | ||
return create_course(db=db, course=course) | ||
|
||
|
||
@router.get("/courses/{id}") | ||
async def read_course(): | ||
return {"courses": []} | ||
@router.get("/courses/{course_id}") | ||
async def read_course(course_id: int, db: Session = Depends(get_db)): | ||
db_course = get_course(db=db, course_id=course_id) | ||
if db_course is None: | ||
raise HTTPException(status_code=404, detail="Course not found") | ||
return db_course | ||
|
||
|
||
@router.patch("/courses/{id}") | ||
@router.patch("/courses/{course_id}") | ||
async def update_course(): | ||
return {"courses": []} | ||
|
||
|
||
@router.delete("/courses/{id}") | ||
@router.delete("/courses/{course_id}") | ||
async def delete_course(): | ||
return {"courses": []} | ||
|
||
|
||
@router.get("/courses/{id}/sections") | ||
@router.get("/courses/{course_id}/sections") | ||
async def read_course_sections(): | ||
return {"courses": []} | ||
return {"courses": []} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,42 @@ | ||
from fastapi import FastAPI, Path, APIRouter | ||
from typing import List, Optional | ||
from .models import User | ||
from os import stat | ||
from typing import Optional, List | ||
|
||
router = APIRouter() | ||
import fastapi | ||
from fastapi import Depends, HTTPException | ||
from sqlalchemy.orm import Session | ||
|
||
from db.dbsetup import get_db | ||
from pydantic_schemas.user import UserCreate, User | ||
from pydantic_schemas.course import Course | ||
from api.utils.users import get_user, get_user_by_email, get_users, create_user | ||
from api.utils.courses import get_user_courses | ||
|
||
router = fastapi.APIRouter() | ||
|
||
users = [] | ||
|
||
@router.get("/users", response_model=List[User]) | ||
async def get_users(): | ||
async def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): | ||
users = get_users(db, skip=skip, limit=limit) | ||
return users | ||
|
||
|
||
@router.post("/users") | ||
async def post_users(user : User): | ||
users.append(user) | ||
return {"message": "added"} | ||
@router.post("/users", response_model=User, status_code=201) | ||
async def create_new_user(user: UserCreate, db: Session = Depends(get_db)): | ||
db_user = get_user_by_email(db=db, email=user.email) | ||
if db_user: | ||
raise HTTPException(status_code=400, detail="Email is already registered") | ||
return create_user(db=db, user=user) | ||
|
||
|
||
@router.get("/users/{user_id}", response_model=User) | ||
async def read_user(user_id: int, db: Session = Depends(get_db)): | ||
db_user = get_user(db=db, user_id=user_id) | ||
if db_user is None: | ||
raise HTTPException(status_code=404, detail="User not found") | ||
return db_user | ||
|
||
|
||
@router.get("/users/{id}") | ||
def get_user_by_id(id : int = Path(..., description="The id of the User you want to query.", gt=-1)): | ||
return users[id] | ||
@router.get("/users/{user_id}/courses", response_model=List[Course]) | ||
async def read_user_courses(user_id: int, db: Session = Depends(get_db)): | ||
courses = get_user_courses(user_id=user_id, db=db) | ||
return courses |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
from sqlalchemy.orm import Session | ||
|
||
from db.models.courses import Course | ||
from pydantic_schemas.course import CourseCreate | ||
|
||
|
||
def get_course(db: Session, course_id: int): | ||
return db.query(Course).filter(Course.id == course_id).first() | ||
|
||
|
||
def get_courses(db: Session): | ||
return db.query(Course).all() | ||
|
||
|
||
def get_user_courses(db: Session, user_id: int): | ||
courses = db.query(Course).filter(Course.user_id == user_id).all() | ||
return courses | ||
|
||
|
||
def create_course(db: Session, course: CourseCreate): | ||
db_course = Course( | ||
title=course.title, | ||
description=course.description, | ||
user_id=course.user_id | ||
) | ||
db.add(db_course) | ||
db.commit() | ||
db.refresh(db_course) | ||
return db_course |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
from sqlalchemy.orm import Session | ||
|
||
from db.models.users import User | ||
from pydantic_schemas.user import UserCreate | ||
|
||
|
||
def get_user(db: Session, user_id: int): | ||
return db.query(User).filter(User.id == user_id).first() | ||
|
||
|
||
def get_user_by_email(db: Session, email: str): | ||
return db.query(User).filter(User.email == email).first() | ||
|
||
|
||
def get_users(db: Session, skip: int = 0, limit: int = 100): | ||
return db.query(User).offset(skip).limit(limit).all() | ||
|
||
|
||
def create_user(db: Session, user: UserCreate): | ||
db_user = User(email=user.email, role=user.role) | ||
db.add(db_user) | ||
db.commit() | ||
db.refresh(db_user) | ||
return db_user |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
from typing import Optional | ||
|
||
from pydantic import BaseModel | ||
|
||
|
||
class CourseBase(BaseModel): | ||
title: str | ||
description: Optional[str] = None | ||
user_id: int | ||
|
||
|
||
class CourseCreate(CourseBase): | ||
... | ||
|
||
|
||
class Course(CourseBase): | ||
id: int | ||
|
||
class Config: | ||
orm_mode = True |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
from datetime import datetime | ||
|
||
from pydantic import BaseModel | ||
|
||
|
||
class UserBase(BaseModel): | ||
email: str | ||
role: int | ||
|
||
|
||
class UserCreate(UserBase): | ||
... | ||
|
||
|
||
class User(UserBase): | ||
id: int | ||
is_active: bool | ||
created_at: datetime | ||
updated_at: datetime | ||
|
||
class Config: | ||
orm_mode = True |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
|
||
# Basic CRUD Api using FastAPI | ||
|
||
(In work ...) |