models.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from datetime import datetime
  2. from sqlalchemy import Column, Integer, String, DateTime, Boolean
  3. from core import db
  4. class Model(db.Base):
  5. __abstract__ = True
  6. id = Column(Integer, primary_key=True)
  7. created_on = Column(DateTime, default=datetime.now())
  8. deleted = Column(Boolean, nullable=False, default=False)
  9. def __repr__(self):
  10. return f"<{self.__class__.__name__} {self.id}>"
  11. class MusicFolder(Model):
  12. __tablename__ = 'MusicFolders'
  13. STATUS_UNKNOWN = 0
  14. STATUS_FOUND = 1
  15. STATUS_UNAVAILABLE = 2
  16. STATUS_DELETED = 3
  17. path = Column(String, nullable=False)
  18. last_scan = Column(DateTime)
  19. status = Column(Integer, default=0)
  20. class Profile(Model):
  21. __tablename__ = 'Profiles'
  22. name = Column(String, nullable=False)
  23. class Tag(Model):
  24. __tablename__ = 'Tags'
  25. label = Column(String, nullable=False)
  26. color = Column(String, nullable=False, default="#6666ff")
  27. class Track(Model):
  28. __tablename__ = 'Tracks'
  29. STATUS_UNKNOWN = 0
  30. STATUS_FOUND = 1
  31. STATUS_UNAVAILABLE = 2
  32. STATUS_UNREADABLE = 3
  33. profile_id = Column(Integer)
  34. music_folder_id = Column(Integer)
  35. title = Column(String)
  36. format = Column(String)
  37. artist = Column(String)
  38. album = Column(String)
  39. track_num = Column(Integer)
  40. year = Column(Integer)
  41. duration = Column(Integer)
  42. size = Column(Integer)
  43. note = Column(String)
  44. status = Column(Integer, nullable=False, default=0)
  45. path = Column(String, nullable=False)
  46. hash = Column(String, nullable=False)
  47. origin = Column(String)
  48. class TrackTag(Model):
  49. __tablename__ = 'TracksTags'
  50. track_id = Column(Integer)
  51. tag_id = Column(Integer)
  52. class Session(Model):
  53. __tablename__ = 'Sessions'
  54. name = Column(String, nullable=False)
  55. date = Column(DateTime)
  56. notes = Column(String)
  57. class SessionTrack(Model):
  58. __tablename__ = 'SessionsTracks'
  59. track_id = Column(Integer)
  60. session_id = 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)