diff --git a/libraries/database/broadcasts.py b/libraries/database/broadcasts.py index b827412602d434b2ce450ecb4a9eb2163eed717c..42ecae392db80da31634bfddcc766e9613316d09 100644 --- a/libraries/database/broadcasts.py +++ b/libraries/database/broadcasts.py @@ -80,6 +80,7 @@ class AuraDatabaseModel(): def _asdict(self): return self.__dict__ + @staticmethod def recreate_db(systemexit = False): """ @@ -88,16 +89,13 @@ class AuraDatabaseModel(): manualschedule = Schedule() manualschedule.schedule_id = 0 manualschedule.show_name = "Manual Show" - self.logger.debug("Recreating Database...") DB.drop_all() - self.logger.debug("All dropped. creating...") DB.create_all() -# self.logger.debug("inserting manual scheduling possibility and fallback trackservice schedule") -# DB.session.add(manualschedule) -# db.session.add(fallback_trackservice_schedule) -# self.logger.debug("all created. commiting...") + # self.logger.debug("inserting manual scheduling possibility and fallback trackservice schedule") + # DB.session.add(manualschedule) + # db.session.add(fallback_trackservice_schedule) + # self.logger.debug("all created. commiting...") DB.session.commit() - self.logger.debug("Database recreated!") if systemexit: sys.exit(0) @@ -426,22 +424,27 @@ class TrackService(DB.Model, AuraDatabaseModel): """ __tablename__ = 'trackservice' + # Primary keys trackservice_id = Column(Integer, primary_key=True, autoincrement=True) - schedule_entry_id = Column(Integer, ForeignKey("schedule_entry.id")) - playlist_id = Column(Integer, nullable=False) - entry_num = Column(Integer, nullable=False) - source = Column(String(255), nullable=False) - start = Column(DateTime, nullable=False, default=func.now()) - - __table_args__ = ( - ForeignKeyConstraint(['playlist_id', 'entry_num'], ['schedule_entry.playlist_id', 'schedule_entry.entry_num']), - ) - schedule_entry = relationship("ScheduleEntry", primaryjoin="and_(TrackService.playlist_id==ScheduleEntry.playlist_id, TrackService.entry_num==ScheduleEntry.entry_num)", lazy="joined") - - schedule = relationship("Schedule", foreign_keys=[schedule_id], lazy="joined") - trackservice_entry = relationship("ScheduleEntry", foreign_keys=[playlist_id, entry_num], lazy="joined") - schedule_entry = relationship("ScheduleEntry", primaryjoin="and_(TrackService.schedule_entry_id==ScheduleEntry.id)", lazy="joined") - + + # Foreign keys + schedule_start = Column(DateTime, ForeignKey("schedule.schedule_start")) + artificial_playlist_entry_id = Column(Integer, ForeignKey("playlist_entry.artificial_id")) + + # Data + entry_start = Column(DateTime, nullable=False, default=func.now()) + schedule = relationship("Schedule", foreign_keys=[schedule_start], lazy="joined") + playlist_entry = relationship("PlaylistEntry", primaryjoin="and_(TrackService.artificial_playlist_entry_id==PlaylistEntry.artificial_id)", lazy="joined") + fallback = Column(String(255), nullable=True) + + + def __init__(self, playlist_entry): + """ + Initializes a trackservice entry based on a playlist entry. + """ + self.artificial_playlist_entry_id = playlist_entry.artificial_id + self.schedule_start = playlist_entry.playlist.schedule_start + @staticmethod def select_one(trackservice_id): @@ -479,55 +482,55 @@ class TrackService(DB.Model, AuraDatabaseModel): -class TrackServiceSchedule(db.Model, AuraDatabaseModel): - """ - Trackservice is tracking every schedule. - """ - __tablename__ = 'trackservice_schedule' - # primary and foreign keys - ts_schedule_id = Column(Integer, primary_key=True, autoincrement=True) - schedule_id = Column(Integer, ForeignKey("schedule.schedule_id")) - schedule = relationship("Schedule", foreign_keys=[schedule_id], lazy="joined") +# class TrackServiceSchedule(DB.Model, AuraDatabaseModel): +# """ +# Trackservice is tracking every schedule. +# """ +# __tablename__ = 'trackservice_schedule' - # ------------------------------------------------------------------------------------------ # - @staticmethod - def select_one(schedule_id): - # damn BAND-AID - # db.session.commit() +# # primary and foreign keys +# ts_schedule_id = Column(Integer, primary_key=True, autoincrement=True) +# schedule_id = Column(Integer, ForeignKey("schedule.schedule_id")) +# schedule = relationship("Schedule", foreign_keys=[schedule_id], lazy="joined") - return db.session.query(ScheduleEntry).filter(TrackServiceSchedule.schedule_id == schedule_id).first() +# # ------------------------------------------------------------------------------------------ # +# @staticmethod +# def select_one(schedule_id): +# # damn BAND-AID +# # db.session.commit() +# return DB.session.query(PlaylistEntry).filter(TrackServiceSchedule.schedule_id == schedule_id).first() -class TrackServiceScheduleEntry(db.Model, AuraDatabaseModel): - """ - And a schedule can have multiple entries - """ - __tablename__ = 'trackservice_entry' +# class TrackServiceScheduleEntry(DB.Model, AuraDatabaseModel): +# """ +# And a schedule can have multiple entries +# """ +# __tablename__ = 'trackservice_entry' - # primary and foreign keys. the foreign keys here can be null, because of fallback stuff - ts_entry_id = Column(Integer, primary_key=True, autoincrement=True) - ts_schedule_id = Column(Integer, ForeignKey("trackservice_schedule.ts_schedule_id"), nullable=True) - playlist_id = Column(Integer, nullable=True) - entry_num = Column(Integer, nullable=True) +# # Primary and foreign keys. the foreign keys here can be null, because of fallback stuff +# ts_entry_id = Column(Integer, primary_key=True, autoincrement=True) +# ts_schedule_id = Column(Integer, ForeignKey("trackservice_schedule.ts_schedule_id"), nullable=True) +# artificial_playlist_id = Column(Integer, nullable=True) +# entry_num = Column(Integer, nullable=True) - fallback = Column(Boolean, default=False) - fallback_start = Column(DateTime, nullable=True, default=None) - source = Column(String(256), nullable=True, default=None) +# fallback = Column(Boolean, default=False) +# fallback_start = Column(DateTime, nullable=True, default=None) +# source = Column(String(256), nullable=True, default=None) - # foreign key definitions - __table_args__ = ( - ForeignKeyConstraint(['playlist_id', 'entry_num'], ['schedule_entry.playlist_id', 'schedule_entry.entry_num']), - ) +# # Foreign key definitions +# __table_args__ = ( +# ForeignKeyConstraint(['artificial_playlist_id', 'entry_num'], ['playlist_entry.artificial_playlist_id', 'playlist_entry.entry_num']), +# ) - trackservice_schedule = relationship("TrackServiceSchedule", foreign_keys=[ts_schedule_id], lazy="joined") - #trackservice_entry = relationship("ScheduleEntry", foreign_keys=[playlist_id, entry_num], lazy="joined") - trackservice_entry = relationship("ScheduleEntry", primaryjoin="and_(TrackServiceScheduleEntry.playlist_id==ScheduleEntry.playlist_id, TrackServiceScheduleEntry.entry_num==ScheduleEntry.entry_num)" , lazy="joined") +# trackservice_schedule = relationship("TrackServiceSchedule", foreign_keys=[ts_schedule_id], lazy="joined") +# #trackservice_entry = relationship("PlaylistEntry", foreign_keys=[playlist_id, entry_num], lazy="joined") +# trackservice_entry = relationship("PlaylistEntry", primaryjoin="and_(TrackServiceScheduleEntry.artificial_playlist_id==PlaylistEntry.artificial_playlist_id, TrackServiceScheduleEntry.entry_num==PlaylistEntry.entry_num)" , lazy="joined") - @staticmethod - def select_all(): - return db.session.query(TrackServiceScheduleEntry).filter().all() +# @staticmethod +# def select_all(): +# return DB.session.query(TrackServiceScheduleEntry).filter().all()