1
- from typing import Union
2
-
3
- from fastapi import FastAPI
1
+ import uvicorn
2
+ from fastapi import FastAPI , HTTPException , Depends
3
+ from sqlalchemy .orm import Session
4
+ import crud , models , schemas
5
+ from database import engine , get_db , SessionLocal
4
6
5
7
app = FastAPI ()
6
8
9
+ models .Base .metadata .create_all (bind = engine )
7
10
8
11
@app .get ("/" )
9
12
def read_root ():
10
13
return {"Hello" : "World" }
11
14
15
+ @app .post ("/users/" , response_model = schemas .User )
16
+ def create_user (user : schemas .UserCreate , db : Session = Depends (get_db )):
17
+ return crud .create_user (db = db , user = user )
18
+
19
+ @app .get ("/users/" , response_model = list [schemas .User ])
20
+ def read_users (skip :int = 0 , limit :int = 100 , db : Session = Depends (get_db )):
21
+ users = crud .get_users (db , skip = skip , limit = limit )
22
+ return users
23
+
24
+ @app .get ("/users/{user_id}/" ,response_model = schemas .User )
25
+ def get_user (user_id :int , db :Session = Depends (get_db )):
26
+ db_user = crud .get_user (db ,user_id = user_id )
27
+ if db_user is None :
28
+ raise HTTPException (status_code = 404 , detail = "User not found" )
29
+ return db_user
30
+
31
+ @app .put ("/users/{user_id}" , response_model = schemas .User )
32
+ def update_user (user_id : int , user : schemas .UserCreate , db : Session = Depends (get_db )):
33
+ db_user = crud .update_user (db , user_id = user_id , updated_user = user )
34
+ if db_user is None :
35
+ raise HTTPException (status_code = 404 , detail = "User not found" )
36
+ return db_user
37
+
38
+ @app .delete ("/users/{user_id}" , response_model = schemas .User )
39
+ def delete_user (user_id : int , db : Session = Depends (get_db )):
40
+ db_user = crud .delete_user (db , user_id = user_id )
41
+ if db_user is None :
42
+ raise HTTPException (status_code = 404 , detail = "User not found" )
43
+ return db_user
12
44
13
- @app .get ("/items/{item_id}" )
14
- def read_item (item_id : int , q : Union [str , None ] = None ):
15
- return {"item_id" : item_id , "q" : q }
45
+ if __name__ == "__main__" :
46
+ uvicorn .run ("main:app" , reload = True )
0 commit comments