776
776
"SELECT TrackID FROM CoreTracks WHERE PrimarySourceId IN (?) AND Uri = ? LIMIT 1"
779
private static string get_track_by_metadata_hash =
780
"SELECT {0} FROM {1} WHERE {2} AND PrimarySourceId IN (?) AND MetadataHash = ? LIMIT 1";
782
private static HyenaSqliteCommand get_track_count_by_metadata_hash = new HyenaSqliteCommand (
783
"SELECT COUNT('x') FROM CoreTracks WHERE PrimarySourceId IN (?) AND MetadataHash = ?"
779
786
public static int GetTrackIdForUri (SafeUri uri, int [] primary_sources)
781
788
return ServiceManager.DbConnection.Query<int> (get_track_id_by_uri,
788
795
primary_sources, absoluteUri);
798
private static IDataReader FindTrackByMetadataHash (string metadata_hash, int [] primary_sources)
800
var command = new HyenaSqliteCommand (String.Format (
801
get_track_by_metadata_hash,
802
provider.Select, provider.From, provider.Where));
803
return ServiceManager.DbConnection.Query (command,
804
primary_sources, metadata_hash);
791
807
public static bool ContainsUri (SafeUri uri, int [] primary_sources)
793
809
return GetTrackIdForUri (uri, primary_sources) > 0;
812
internal static DatabaseTrackInfo GetTrackForMetadataHash (string metadata_hash, int [] primary_sources)
814
using (IDataReader reader = FindTrackByMetadataHash (metadata_hash, primary_sources)) {
815
if (reader.Read ()) {
816
return provider.Load (reader);
822
internal static int MetadataHashCount (string metadata_hash, int [] primary_sources)
824
return ServiceManager.DbConnection.Query<int> (get_track_count_by_metadata_hash,
825
primary_sources, metadata_hash);
796
828
public static void UpdateMetadataHash (string albumTitle, string artistName, string condition)
798
830
// Keep this field set/order in sync with MetadataHash in TrackInfo.cs