[WIP] Added Artist/ReleaseInfo

This commit is contained in:
emeric
2019-01-23 13:22:43 +01:00
parent b76c60f437
commit 3e142b5507
77 changed files with 2706 additions and 716 deletions
+17 -3
View File
@@ -36,15 +36,17 @@ namespace Database {
class Artist;
class Cluster;
class ClusterType;
class TrackListEntry;
class Release;
class TrackFeature;
class TrackFeatureType;
class TrackListEntry;
class TrackStats;
class Track : public Wt::Dbo::Dbo<Track>
{
public:
typedef Wt::Dbo::ptr<Track> pointer;
using pointer = Wt::Dbo::ptr<Track>;
Track() {}
Track(const boost::filesystem::path& p);
@@ -68,6 +70,8 @@ class Track : public Wt::Dbo::Dbo<Track>
static std::vector<pointer> getMBIDDuplicates(Wt::Dbo::Session& session);
static std::vector<pointer> getChecksumDuplicates(Wt::Dbo::Session& session);
static std::vector<pointer> getLastAdded(Wt::Dbo::Session& session, Wt::WDateTime after, int size = 1);
static std::vector<pointer> getAllWithMBIDAndMissingFeatures(Wt::Dbo::Session& session); // nested transaction
static std::vector<pointer> getAllWithFeatures(Wt::Dbo::Session& session); // nested transaction
// Create utility
static pointer create(Wt::Dbo::Session& session, const boost::filesystem::path& p);
@@ -76,7 +80,8 @@ class Track : public Wt::Dbo::Dbo<Track>
static void removeClusters(std::string type);
// Accessors
void setScanVersion(std::size_t version) {_scanVersion = version; }
void setScanVersion(std::size_t version) { _scanVersion = version; }
void setSimilarityScanVersion(std::size_t version) { _similarityScanVersion = version; }
void setTrackNumber(int num) { _trackNumber = num; }
void setTotalTrackNumber(int num) { _totalTrackNumber = num; }
void setDiscNumber(int num) { _discNumber = num; }
@@ -96,8 +101,10 @@ class Track : public Wt::Dbo::Dbo<Track>
void setArtist(Wt::Dbo::ptr<Artist> artist) { _artist = artist; }
void setRelease(Wt::Dbo::ptr<Release> release) { _release = release; }
void eraseClusters() { _clusters.clear(); }
void eraseFeatures() { _trackFeatures.clear(); }
std::size_t getScanVersion() const { return _scanVersion; }
std::size_t getSimilarityScanVersion() const { return _similarityScanVersion; }
boost::optional<std::size_t> getTrackNumber() const;
boost::optional<std::size_t> getTotalTrackNumber() const;
boost::optional<std::size_t> getDiscNumber() const;
@@ -117,6 +124,9 @@ class Track : public Wt::Dbo::Dbo<Track>
Wt::Dbo::ptr<Artist> getArtist() const { return _artist; }
Wt::Dbo::ptr<Release> getRelease() const { return _release; }
std::vector<Wt::Dbo::ptr<Cluster>> getClusters() const;
std::vector<Wt::Dbo::ptr<TrackFeature>> getTrackFeatures() const; // ordered by feature's name
bool hasTrackFeatures() const;
Wt::Dbo::ptr<TrackFeature> getTrackFeature(Wt::Dbo::ptr<TrackFeatureType> type) const;
std::vector<std::vector<Wt::Dbo::ptr<Cluster>>> getClusterGroups(std::vector<Wt::Dbo::ptr<ClusterType>> clusterTypes, std::size_t size) const;
@@ -124,6 +134,7 @@ class Track : public Wt::Dbo::Dbo<Track>
void persist(Action& a)
{
Wt::Dbo::field(a, _scanVersion, "scan_version");
Wt::Dbo::field(a, _similarityScanVersion, "similarity_version");
Wt::Dbo::field(a, _trackNumber, "track_number");
Wt::Dbo::field(a, _totalTrackNumber, "total_track_number");
Wt::Dbo::field(a, _discNumber, "disc_number");
@@ -145,6 +156,7 @@ class Track : public Wt::Dbo::Dbo<Track>
Wt::Dbo::belongsTo(a, _artist, "artist", Wt::Dbo::OnDeleteCascade);
Wt::Dbo::hasMany(a, _clusters, Wt::Dbo::ManyToMany, "track_cluster", "", Wt::Dbo::OnDeleteCascade);
Wt::Dbo::hasMany(a, _playlistEntries, Wt::Dbo::ManyToOne, "track");
Wt::Dbo::hasMany(a, _trackFeatures, Wt::Dbo::ManyToOne, "track");
}
private:
@@ -154,6 +166,7 @@ class Track : public Wt::Dbo::Dbo<Track>
static const std::size_t _maxCopyrightURLLength = 128;
int _scanVersion = 0;
int _similarityScanVersion = 0;
int _trackNumber = 0;
int _totalTrackNumber = 0;
int _discNumber = 0;
@@ -178,6 +191,7 @@ class Track : public Wt::Dbo::Dbo<Track>
Wt::Dbo::ptr<Release> _release;
Wt::Dbo::collection<Wt::Dbo::ptr<Cluster>> _clusters;
Wt::Dbo::collection<Wt::Dbo::ptr<TrackListEntry>> _playlistEntries;
Wt::Dbo::collection<Wt::Dbo::ptr<TrackFeature>> _trackFeatures;
};