diff --git a/src/common/db/Database.py b/src/common/db/Database.py index fa09e1991..b56117d80 100644 --- a/src/common/db/Database.py +++ b/src/common/db/Database.py @@ -1709,16 +1709,17 @@ class Database: filters = {"job_name": job_name, "file_name": file_name} if service_id: filters["service_id"] = service_id - if plugin_id: - filters["plugin_id"] = plugin_id with self.__db_session() as session: + if plugin_id: + job = session.query(Jobs).filter_by(name=job_name, plugin_id=plugin_id).first() + if not job: + return None data = session.query(Jobs_cache).with_entities(*entities).filter_by(**filters).first() if not data: return None - - if with_data and not with_info: + elif with_data and not with_info: return data.data ret_data = {} @@ -1738,24 +1739,36 @@ class Database: query = session.query(Jobs_cache).with_entities(*entities) - filters = {} if job_name: - filters["job_name"] = job_name + query = query.filter_by(job_name=job_name) + + db_cache = query.all() + + if not db_cache: + return [] + + job_names = [] if plugin_id: - filters["plugin_id"] = plugin_id + filters = {"plugin_id": plugin_id} + if job_name: + filters["name"] = job_name + job_names = [name for name in session.query(Jobs).with_entities(Jobs.name).filter_by(**filters)] + if not job_names: + return [] - if filters: - query = query.filter_by(**filters) - - return [ - { - "job_name": cache.job_name, - "service_id": cache.service_id, - "file_name": cache.file_name, - "data": "Download file to view content" if not with_data else cache.data, - } - for cache in query - ] + cache_files = [] + for cache in db_cache: + if cache.job_name not in job_names: + continue + cache_files.append( + { + "job_name": cache.job_name, + "service_id": cache.service_id, + "file_name": cache.file_name, + "data": "Download file to view content" if not with_data else cache.data, + } + ) + return cache_files def add_instance(self, hostname: str, port: int, server_name: str, changed: Optional[bool] = True) -> str: """Add instance.""" diff --git a/src/common/db/model.py b/src/common/db/model.py index 292306ca3..58a4e1a75 100644 --- a/src/common/db/model.py +++ b/src/common/db/model.py @@ -72,11 +72,7 @@ class Settings(Base): id = Column(String(256), primary_key=True) name = Column(String(256), primary_key=True) - plugin_id = Column( - String(64), - ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"), - nullable=False, - ) + plugin_id = Column(String(64), ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"), nullable=False) context = Column(CONTEXTS_ENUM, nullable=False) default = Column(String(4096), nullable=True, default="") help = Column(String(512), nullable=False) @@ -94,11 +90,7 @@ class Settings(Base): class Global_values(Base): __tablename__ = "bw_global_values" - setting_id = Column( - String(256), - ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), - primary_key=True, - ) + setting_id = Column(String(256), ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), primary_key=True) value = Column(String(8192), nullable=False) suffix = Column(Integer, primary_key=True, nullable=True, default=0) method = Column(METHODS_ENUM, nullable=False) @@ -121,16 +113,8 @@ class Services(Base): class Services_settings(Base): __tablename__ = "bw_services_settings" - service_id = Column( - String(64), - ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), - primary_key=True, - ) - setting_id = Column( - String(256), - ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), - primary_key=True, - ) + service_id = Column(String(64), ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), primary_key=True) + setting_id = Column(String(256), ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), primary_key=True) value = Column(String(8192), nullable=False) suffix = Column(Integer, primary_key=True, nullable=True, default=0) method = Column(METHODS_ENUM, nullable=False) @@ -144,10 +128,7 @@ class Jobs(Base): __table_args__ = (UniqueConstraint("name", "plugin_id"),) name = Column(String(128), primary_key=True) - plugin_id = Column( - String(64), - ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"), - ) + plugin_id = Column(String(64), ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade")) file_name = Column(String(256), nullable=False) every = Column(SCHEDULES_ENUM, nullable=False) reload = Column(Boolean, default=False, nullable=False) @@ -161,16 +142,8 @@ class Jobs(Base): class Plugin_pages(Base): __tablename__ = "bw_plugin_pages" - id = Column( - Integer, - Identity(start=1, increment=1), - primary_key=True, - ) - plugin_id = Column( - String(64), - ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"), - nullable=False, - ) + id = Column(Integer, Identity(start=1, increment=1), primary_key=True) + plugin_id = Column(String(64), ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"), nullable=False) template_file = Column(LargeBinary(length=(2**32) - 1), nullable=False) template_checksum = Column(String(128), nullable=False) actions_file = Column(LargeBinary(length=(2**32) - 1), nullable=False) @@ -181,27 +154,11 @@ class Plugin_pages(Base): class Jobs_cache(Base): __tablename__ = "bw_jobs_cache" - __table_args__ = (UniqueConstraint("job_name", "service_id", "file_name"),) - id = Column( - Integer, - Identity(start=1, increment=1), - primary_key=True, - ) - job_name = Column( - String(128), - ForeignKey("bw_jobs.name", onupdate="cascade", ondelete="cascade"), - nullable=False, - ) - service_id = Column( - String(64), - ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), - nullable=True, - ) - file_name = Column( - String(256), - nullable=False, - ) + id = Column(Integer, Identity(start=1, increment=1), primary_key=True) + job_name = Column(String(128), ForeignKey("bw_jobs.name", onupdate="cascade", ondelete="cascade"), nullable=False) + service_id = Column(String(64), ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), nullable=True) + file_name = Column(String(256), nullable=False) data = Column(LargeBinary(length=(2**32) - 1), nullable=True) last_update = Column(DateTime, nullable=True) checksum = Column(String(128), nullable=True) @@ -214,16 +171,8 @@ class Custom_configs(Base): __tablename__ = "bw_custom_configs" __table_args__ = (UniqueConstraint("service_id", "type", "name"),) - id = Column( - Integer, - Identity(start=1, increment=1), - primary_key=True, - ) - service_id = Column( - String(64), - ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), - nullable=True, - ) + id = Column(Integer, Identity(start=1, increment=1), primary_key=True) + service_id = Column(String(64), ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), nullable=True) type = Column(CUSTOM_CONFIGS_TYPES_ENUM, nullable=False) name = Column(String(256), nullable=False) data = Column(LargeBinary(length=(2**32) - 1), nullable=False) @@ -236,11 +185,7 @@ class Custom_configs(Base): class Selects(Base): __tablename__ = "bw_selects" - setting_id = Column( - String(256), - ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), - primary_key=True, - ) + setting_id = Column(String(256), ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), primary_key=True) value = Column(String(256), primary_key=True) setting = relationship("Settings", back_populates="selects")