File tree Expand file tree Collapse file tree 4 files changed +64
-2
lines changed Expand file tree Collapse file tree 4 files changed +64
-2
lines changed Original file line number Diff line number Diff line change 1+ from sqlalchemy import create_engine
2+ from sqlalchemy .ext .declarative import declarative_base
3+ from sqlalchemy .orm import sessionmaker
4+
5+ engine = create_engine (
6+ "sqlite:///./database.sqlite" ,
7+ connect_args = {
8+ "check_same_thread" : False ,
9+ },
10+ )
11+
12+ Base = declarative_base ()
13+ SessionLocal = sessionmaker (bind = engine , autoflush = False )
14+
15+
16+ def get_db ():
17+ db = SessionLocal ()
18+ try :
19+ yield db
20+ finally :
21+ db .close ()
Original file line number Diff line number Diff line change 22from fastapi import FastAPI
33
44from config import oauth2_config
5+ from database import Base
6+ from database import engine
57from fastapi_oauth2 .middleware import OAuth2Middleware
68from fastapi_oauth2 .router import router as oauth2_router
79from router import router as app_router
810
11+ Base .metadata .create_all (bind = engine )
12+
913router = APIRouter ()
1014
1115app = FastAPI ()
Original file line number Diff line number Diff line change 1+ from sqlalchemy import Column
2+ from sqlalchemy import Integer
3+ from sqlalchemy import String
4+ from sqlalchemy .orm import Session
5+
6+ from database import Base
7+
8+
9+ class BaseModel (Base ):
10+ __abstract__ = True
11+
12+ def save (self , db : Session ):
13+ db .add (self )
14+ db .commit ()
15+ db .refresh (self )
16+ return self
17+
18+
19+ class User (BaseModel ):
20+ __tablename__ = "users"
21+
22+ id = Column (Integer , primary_key = True , index = True )
23+ username = Column (String )
Original file line number Diff line number Diff line change 11import json
22
3+ from fastapi import APIRouter
34from fastapi import Depends
45from fastapi import Request
5- from fastapi import APIRouter
66from fastapi .responses import HTMLResponse
77from fastapi .templating import Jinja2Templates
8+ from sqlalchemy .orm import Session
89
10+ from database import get_db
911from fastapi_oauth2 .security import OAuth2
12+ from models import User
1013
1114oauth2 = OAuth2 ()
1215router = APIRouter ()
@@ -19,5 +22,16 @@ async def root(request: Request):
1922
2023
2124@router .get ("/user" )
22- def user (request : Request , _ : str = Depends (oauth2 )):
25+ def user_get (request : Request , _ : str = Depends (oauth2 )):
2326 return request .user
27+
28+
29+ @router .get ("/users" )
30+ def users_get (request : Request , db : Session = Depends (get_db ), _ : str = Depends (oauth2 )):
31+ return db .query (User ).all ()
32+
33+
34+ @router .post ("/users" )
35+ async def users_post (request : Request , db : Session = Depends (get_db ), _ : str = Depends (oauth2 )):
36+ data = await request .json ()
37+ return User (** data ).save (db )
You can’t perform that action at this time.
0 commit comments