SoundFingerprinting.InMemory.TrackDao.DeleteTrack C# (CSharp) Méthode

DeleteTrack() public méthode

public DeleteTrack ( IModelReference trackReference ) : int
trackReference IModelReference
Résultat int
        public int DeleteTrack(IModelReference trackReference)
        {
            int count = 0;
            if (storage.Tracks.Remove(trackReference))
            {
                count++;
                if (storage.Fingerprints.ContainsKey(trackReference))
                {
                    count += storage.Fingerprints[trackReference].Count;
                    storage.Fingerprints.Remove(trackReference);
                }

                var subFingerprintReferences = storage.SubFingerprints
                                 .Where(pair => pair.Value.TrackReference.Equals(trackReference))
                                 .Select(pair => pair.Key)
                                 .ToList();

                count += subFingerprintReferences.Count;
                foreach (var subFingerprintReference in subFingerprintReferences)
                {
                    storage.SubFingerprints.Remove(subFingerprintReference);
                }

                foreach (var hashTable in storage.HashTables)
                {
                    foreach (var hashBins in hashTable)
                    {
                        foreach (var subFingerprintReference in subFingerprintReferences)
                        {
                            if (hashBins.Value.Remove(subFingerprintReference))
                            {
                                count++;
                            }
                        }
                    }
                }

                if (storage.TracksHashes.ContainsKey(trackReference))
                {
                    storage.TracksHashes.Remove(trackReference);
                }
            }

            return count;
        }

Usage Example

        /// <inheritdoc cref="IModelService.DeleteTrack"/>
        public void DeleteTrack(string trackId)
        {
            var track = TrackDao.ReadTrackById(trackId);

            if (track == null)
            {
                return;
            }

            var trackReference = track.TrackReference;

            SubFingerprintDao.DeleteSubFingerprintsByTrackReference(trackReference);
            TrackDao.DeleteTrack(trackReference);
        }
All Usage Examples Of SoundFingerprinting.InMemory.TrackDao::DeleteTrack