models.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import time
  2. from datetime import datetime
  3. from sqlalchemy import Column, Integer, String, DateTime, Boolean
  4. from core import db
  5. class Model(db.Base):
  6. __abstract__ = True
  7. id = Column(Integer, primary_key=True)
  8. created_on = Column(DateTime, default=datetime.now())
  9. deleted = Column(Boolean, nullable=False, default=False)
  10. def __repr__(self):
  11. return f"<{self.__class__.__name__} {self.id}>"
  12. class MusicFolder(Model):
  13. __tablename__ = 'MusicFolders'
  14. STATUS_UNKNOWN = 0
  15. STATUS_FOUND = 1
  16. STATUS_UNAVAILABLE = 2
  17. STATUS_DELETED = 3
  18. path = Column(String, nullable=False)
  19. last_scan = Column(DateTime)
  20. status = Column(Integer, default=0)
  21. class Tag(Model):
  22. __tablename__ = 'Tags'
  23. label = Column(String, nullable=False)
  24. color = Column(String, nullable=False, default="#6666ff")
  25. class Track(Model):
  26. __tablename__ = 'Tracks'
  27. STATUS_UNKNOWN = 0
  28. STATUS_FOUND = 1
  29. STATUS_UNAVAILABLE = 2
  30. STATUS_UNREADABLE = 3
  31. title = Column(String)
  32. format = Column(String)
  33. artist = Column(String)
  34. album = Column(String)
  35. track_num = Column(Integer)
  36. duration = Column(Integer)
  37. note = Column(String)
  38. status = Column(Integer, nullable=False, default=0)
  39. path = Column(String, nullable=False)
  40. hash = Column(String, nullable=False)
  41. def literal_duration(self):
  42. return time.strftime("%M:%S", time.gmtime(self.duration))
  43. class TrackTag(Model):
  44. __tablename__ = 'TracksTags'
  45. track_id = Column(Integer)
  46. tag_id = Column(Integer)
  47. class SessionFolder(Model):
  48. __tablename__ = 'SessionFolders'
  49. name = Column(String, nullable=False)
  50. class Session(Model):
  51. __tablename__ = 'Sessions'
  52. name = Column(String, nullable=False, default="Ma session")
  53. date = Column(DateTime, default=datetime.now())
  54. notes = Column(String)
  55. folder_id = Column(Integer)
  56. class SessionTrack(Model):
  57. __tablename__ = 'SessionsTracks'
  58. track_id = Column(Integer)
  59. session_id = Column(Integer)
  60. order = Column(Integer)
  61. if __name__ == "__main__":
  62. from core import constants
  63. session = db.Session()
  64. for track in session.query(Track).all():
  65. print(track)