erster docker release
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
import datetime
|
||||
from sqlalchemy import create_engine, Column, Integer, String, Boolean, DateTime, Text
|
||||
from sqlalchemy.orm import declarative_base, sessionmaker
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
class Job(Base):
|
||||
__tablename__ = "jobs"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
name = Column(String(200), nullable=False)
|
||||
stream_url = Column(String(1000), nullable=False)
|
||||
stream_type = Column(String(20), default="auto")
|
||||
output_format = Column(String(10), default="")
|
||||
max_duration = Column(Integer, nullable=True)
|
||||
extra_ffmpeg_args = Column(String(500), default="")
|
||||
segment_duration = Column(Integer, nullable=True)
|
||||
|
||||
schedule_enabled = Column(Boolean, default=False)
|
||||
schedule_once = Column(Boolean, default=False)
|
||||
schedule_date = Column(String(10), default="")
|
||||
schedule_days = Column(String(50), default="*")
|
||||
schedule_start = Column(String(5), default="")
|
||||
schedule_stop = Column(String(5), default="")
|
||||
|
||||
plik_enabled = Column(Boolean, default=False)
|
||||
delete_after_upload = Column(Boolean, default=False)
|
||||
|
||||
ntfy_enabled = Column(Boolean, default=False)
|
||||
|
||||
metadata_monitor_enabled = Column(Boolean, default=False)
|
||||
metadata_pattern = Column(String(200), default="")
|
||||
metadata_grace_period = Column(Integer, default=300)
|
||||
metadata_poll_interval = Column(Integer, default=30)
|
||||
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow)
|
||||
|
||||
|
||||
class Recording(Base):
|
||||
__tablename__ = "recordings"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
job_id = Column(Integer, nullable=True)
|
||||
job_name = Column(String(200), nullable=False)
|
||||
stream_url = Column(String(1000), nullable=False)
|
||||
stream_type = Column(String(20), default="")
|
||||
output_dir = Column(String(500), default="")
|
||||
output_file = Column(String(500), default="")
|
||||
pid = Column(Integer, nullable=True)
|
||||
status = Column(String(20), default="running") # running, stopped, completed, error
|
||||
started_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
stopped_at = Column(DateTime, nullable=True)
|
||||
scheduled_stop = Column(DateTime, nullable=True)
|
||||
segment_mode = Column(Boolean, default=False)
|
||||
is_scheduled = Column(Boolean, default=False)
|
||||
error_message = Column(Text, nullable=True)
|
||||
|
||||
|
||||
class LogEntry(Base):
|
||||
__tablename__ = "logs"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
timestamp = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
level = Column(String(10), default="INFO")
|
||||
message = Column(Text, nullable=False)
|
||||
job_name = Column(String(200), nullable=True)
|
||||
|
||||
|
||||
_engine = None
|
||||
_SessionLocal = None
|
||||
|
||||
|
||||
def init_db(db_path: str):
|
||||
global _engine, _SessionLocal
|
||||
_engine = create_engine(f"sqlite:///{db_path}", connect_args={"check_same_thread": False})
|
||||
Base.metadata.create_all(_engine)
|
||||
_SessionLocal = sessionmaker(bind=_engine)
|
||||
|
||||
|
||||
def get_session():
|
||||
return _SessionLocal()
|
||||
Reference in New Issue
Block a user