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 2
2
from fastapi import FastAPI
3
3
4
4
from config import oauth2_config
5
+ from database import Base
6
+ from database import engine
5
7
from fastapi_oauth2 .middleware import OAuth2Middleware
6
8
from fastapi_oauth2 .router import router as oauth2_router
7
9
from router import router as app_router
8
10
11
+ Base .metadata .create_all (bind = engine )
12
+
9
13
router = APIRouter ()
10
14
11
15
app = 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 1
1
import json
2
2
3
+ from fastapi import APIRouter
3
4
from fastapi import Depends
4
5
from fastapi import Request
5
- from fastapi import APIRouter
6
6
from fastapi .responses import HTMLResponse
7
7
from fastapi .templating import Jinja2Templates
8
+ from sqlalchemy .orm import Session
8
9
10
+ from database import get_db
9
11
from fastapi_oauth2 .security import OAuth2
12
+ from models import User
10
13
11
14
oauth2 = OAuth2 ()
12
15
router = APIRouter ()
@@ -19,5 +22,16 @@ async def root(request: Request):
19
22
20
23
21
24
@router .get ("/user" )
22
- def user (request : Request , _ : str = Depends (oauth2 )):
25
+ def user_get (request : Request , _ : str = Depends (oauth2 )):
23
26
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