mirror of
https://github.com/jaypyles/Scraperr.git
synced 2025-12-05 23:35:34 +00:00
* chore: wip swap to sqlalchemy * feat: swap to sqlalchemy * feat: swap to sqlalchemy * feat: swap to sqlalchemy * feat: swap to sqlalchemy
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
# PDM
|
|
from sqlalchemy import JSON, Column, String, Boolean, DateTime, ForeignKey, func
|
|
from sqlalchemy.orm import relationship
|
|
|
|
# LOCAL
|
|
from api.backend.database.base import Base
|
|
|
|
|
|
class User(Base):
|
|
__tablename__ = "users"
|
|
|
|
email = Column(String(255), primary_key=True, nullable=False)
|
|
hashed_password = Column(String(255), nullable=False)
|
|
full_name = Column(String(255), nullable=True)
|
|
disabled = Column(Boolean, default=False)
|
|
|
|
jobs = relationship("Job", back_populates="user_obj", cascade="all, delete-orphan")
|
|
cron_jobs = relationship(
|
|
"CronJob", back_populates="user_obj", cascade="all, delete-orphan"
|
|
)
|
|
|
|
|
|
class Job(Base):
|
|
__tablename__ = "jobs"
|
|
|
|
id = Column(String(64), primary_key=True, nullable=False)
|
|
url = Column(String(2048), nullable=False)
|
|
elements = Column(JSON, nullable=False)
|
|
user = Column(String(255), ForeignKey("users.email"), nullable=True)
|
|
time_created = Column(
|
|
DateTime(timezone=True), server_default=func.now(), nullable=False
|
|
)
|
|
result = Column(JSON, nullable=False)
|
|
status = Column(String(50), nullable=False)
|
|
chat = Column(JSON, nullable=True)
|
|
job_options = Column(JSON, nullable=True)
|
|
agent_mode = Column(Boolean, default=False, nullable=False)
|
|
prompt = Column(String(1024), nullable=True)
|
|
favorite = Column(Boolean, default=False, nullable=False)
|
|
|
|
user_obj = relationship("User", back_populates="jobs")
|
|
cron_jobs = relationship(
|
|
"CronJob", back_populates="job_obj", cascade="all, delete-orphan"
|
|
)
|
|
|
|
|
|
class CronJob(Base):
|
|
__tablename__ = "cron_jobs"
|
|
|
|
id = Column(String(64), primary_key=True, nullable=False)
|
|
user_email = Column(String(255), ForeignKey("users.email"), nullable=False)
|
|
job_id = Column(String(64), ForeignKey("jobs.id"), nullable=False)
|
|
cron_expression = Column(String(255), nullable=False)
|
|
time_created = Column(
|
|
DateTime(timezone=True), server_default=func.now(), nullable=False
|
|
)
|
|
time_updated = Column(
|
|
DateTime(timezone=True),
|
|
server_default=func.now(),
|
|
onupdate=func.now(),
|
|
nullable=False,
|
|
)
|
|
|
|
user_obj = relationship("User", back_populates="cron_jobs")
|
|
job_obj = relationship("Job", back_populates="cron_jobs")
|