diff --git a/src/webapi/crud.py b/src/webapi/crud.py new file mode 100644 index 0000000..672a250 --- /dev/null +++ b/src/webapi/crud.py @@ -0,0 +1,39 @@ +from sqlalchemy.orm import Session +from . import models, schemas + + +def get_bot(db: Session, user_id: int): + return db.query(models.DiscordBot).filter(models.DiscordBot.user_id == user_id).first() + + +def get_bots(db: Session, skip: int = 0, limit: int = 5): + return db.query(models.DiscordBot).offset(skip).limit(limit).all() + + +def create_user(db: Session, user: schemas.DiscordBotCreate): + fake_hashed_password = user.password + "notreallyhashed" + db_user = models.User(email=user.email, hashed_password=fake_hashed_password) + db.add(db_user) + db.commit() + db.refresh(db_user) + return db_user + +def create_user(db: Session, user: schemas.UserCreate): + fake_hashed_password = user.password + "notreallyhashed" + db_user = models.DiscordBot(email=user.email, hashed_password=fake_hashed_password) + db.add(db_user) + db.commit() + db.refresh(db_user) + return db_user + + +def get_items(db: Session, skip: int = 0, limit: int = 100): + return db.query(models.Item).offset(skip).limit(limit).all() + + +def create_user_item(db: Session, item: schemas.ItemCreate, user_id: int): + db_item = models.Item(**item.dict(), owner_id=user_id) + db.add(db_item) + db.commit() + db.refresh(db_item) + return db_item diff --git a/src/webapi/database.py b/src/webapi/database.py new file mode 100644 index 0000000..00aac8b --- /dev/null +++ b/src/webapi/database.py @@ -0,0 +1,11 @@ +from sqlalchemy import create_engine +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import sessionmaker +import os + +DATABASE_URL = os.environ.get('DATABASE_URL') + +engine = create_engine(DATABASE_URL, connect_args={'check_same_thread': False}) +SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) + +Base = declarative_base() diff --git a/src/webapi/main.py b/src/webapi/main.py index b57fe92..23d0a59 100644 --- a/src/webapi/main.py +++ b/src/webapi/main.py @@ -1,10 +1,6 @@ from fastapi import FastAPI, status -from pydantic import BaseModel from starlette.responses import RedirectResponse - - -class Bot(BaseModel): - name: str +from .schemas import DiscordBot app = FastAPI( @@ -24,12 +20,12 @@ def get_bot(id: int): @app.post('/api/bots', status_code=status.HTTP_201_CREATED) -def post_bots(bot: Bot): +def post_bots(bot: DiscordBot): return {'message': 'Hello World'} @app.put('/api/bots/{id}', status_code=status.HTTP_200_OK) -def put_bots(id: int, bot: Bot): +def put_bots(id: int, bot: DiscordBot): return {'message': 'Hello World'} diff --git a/src/webapi/models.py b/src/webapi/models.py new file mode 100644 index 0000000..50d1da3 --- /dev/null +++ b/src/webapi/models.py @@ -0,0 +1,11 @@ +from sqlalchemy import Column, Integer, String +from .database import Base + + +class DiscordBot(Base): + __tablename__ = 'discord_bots' + + user_id = Column( + Integer, primary_key=True, autoincrement=False, unique=True, index=True + ) + name = Column(String) diff --git a/src/webapi/schemas.py b/src/webapi/schemas.py new file mode 100644 index 0000000..b445782 --- /dev/null +++ b/src/webapi/schemas.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel + + +class DiscordBotBase(BaseModel): + user_id: int + name: str + + +class DiscordBotCreate(DiscordBotBase): + pass + + +class DiscordBot(DiscordBotBase): + class Config: + orm_mode = True