mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-12 05:28:34 +03:00
auth from extension
This commit is contained in:
1
src/db/README.md
Normal file
1
src/db/README.md
Normal file
@@ -0,0 +1 @@
|
||||
based on https://fastapi-users.github.io/fastapi-users/10.4/configuration/oauth/
|
||||
1
src/db/__init__.py
Normal file
1
src/db/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# https://fastapi.tiangolo.com/tutorial/sql-databases/#review-all-the-files
|
||||
24
src/db/crud.py
Normal file
24
src/db/crud.py
Normal 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
14
src/db/database.py
Normal 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
17
src/db/models.py
Normal 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
15
src/db/schemas.py
Normal 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
|
||||
Reference in New Issue
Block a user