auth from extension

This commit is contained in:
msramalho
2023-02-24 15:39:11 +01:00
parent 75e98f5f31
commit f6b116554f
14 changed files with 164 additions and 224 deletions

1
src/db/README.md Normal file
View File

@@ -0,0 +1 @@
based on https://fastapi-users.github.io/fastapi-users/10.4/configuration/oauth/

1
src/db/__init__.py Normal file
View File

@@ -0,0 +1 @@
# https://fastapi.tiangolo.com/tutorial/sql-databases/#review-all-the-files

24
src/db/crud.py Normal file
View File

@@ -0,0 +1,24 @@
from sqlalchemy.orm import Session
from loguru import logger
from . import models, schemas
def get_task(db: Session, task_id: str):
return db.query(models.Task).filter(models.Task.id == task_id).first()
# def get_user_by_email(db: Session, email: str):
# return db.query(models.User).filter(models.User.email == email).first()
def get_tasks(db: Session, skip: int = 0, limit: int = 100):
return db.query(models.Task).offset(skip).limit(limit).all()
def create_task(db: Session, task: schemas.TaskCreate):
db_task = models.Task(id=task.id, url=task.url, author=task.author, result=task.result)
db.add(db_task)
db.commit()
db.refresh(db_task)
return db_task

14
src/db/database.py Normal file
View File

@@ -0,0 +1,14 @@
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
SQLALCHEMY_DATABASE_URL = "sqlite:///./auto-archiver.db"
# SQLALCHEMY_DATABASE_URL = "postgresql://user:password@postgresserver/db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

17
src/db/models.py Normal file
View File

@@ -0,0 +1,17 @@
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, JSON, TIMESTAMP, DateTime
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from .database import Base
class Task(Base):
__tablename__ = "tasks"
id = Column(String, primary_key=True, index=True)
url = Column(String, index=True)
author = Column(String, index=True)
result = Column(JSON, default=None)
created_at = Column(DateTime(timezone=True), server_default=func.now())
# updated_at = Column(DateTime(timezone=True), onupdate=func.now())
# items = relationship("Item", back_populates="owner")

15
src/db/schemas.py Normal file
View File

@@ -0,0 +1,15 @@
from pydantic import BaseModel
from datetime import datetime
class TaskCreate(BaseModel):
id: str
url: str
author: str
result: dict
class Task(TaskCreate):
created_at: datetime
class Config:
orm_mode = True