예제 #1
0
        public void FilterParserTest006()
        {
            var minRating     = "4";
            var maxLastPlayed = DateTimeHelper.ToString(DateTime.Now.AddDays(-30).Date);
            var filter        = string.Format("rating>:{0} lastplayed<{1}", minRating, maxLastPlayed);
            var expected      = new FilterParserResult(
                new[]
            {
                new FilterParserResultGroup(
                    new[]
                {
                    new FilterParserResultEntry(CommonStatistics.Rating, FilterParserEntryOperator.GreaterEqual, "4"),
                }
                    ),
                new FilterParserResultGroup(
                    new[]
                {
                    new FilterParserResultEntry(CommonStatistics.LastPlayed, FilterParserEntryOperator.Less, maxLastPlayed)
                }
                    )
            }
                );
            var actual = default(IFilterParserResult);

            Assert.IsTrue(this.Core.Components.FilterParser.TryParse(
                              filter,
                              out actual
                              ));
            Assert.AreEqual(expected, actual);
        }
        private async Task WriteLibraryMetaData(LibraryItem libraryItem)
        {
            using (var transaction = this.Database.BeginTransaction(this.Database.PreferredIsolationLevel))
            {
                await this.Database.ExecuteAsync(this.Database.Queries.ClearLibraryMetaDataItems, (parameters, phase) =>
                {
                    switch (phase)
                    {
                    case DatabaseParameterPhase.Fetch:
                        parameters["itemId"] = libraryItem.Id;
                        parameters["type"]   = META_DATA_TYPE;
                        break;
                    }
                }, transaction).ConfigureAwait(false);

                using (var writer = new MetaDataWriter(this.Database, this.Database.Queries.AddLibraryMetaDataItem, transaction))
                {
                    await writer.Write(
                        libraryItem.Id,
                        libraryItem.MetaDatas,
                        metaDataItem => META_DATA_TYPE.HasFlag(metaDataItem.Type)
                        ).ConfigureAwait(false);
                }

                libraryItem.ImportDate = DateTimeHelper.ToString(DateTime.UtcNow.AddSeconds(30));
                await LibraryTaskBase.UpdateLibraryItem(this.Database, libraryItem, transaction).ConfigureAwait(false);

                if (transaction.HasTransaction)
                {
                    transaction.Commit();
                }
            }
        }
        protected virtual void UpdateLastPlayed(IDictionary <string, MetaDataItem> metaDatas)
        {
            var metaDataItem = default(MetaDataItem);

            if (!metaDatas.TryGetValue(CommonStatistics.LastPlayed, out metaDataItem))
            {
                metaDataItem = new MetaDataItem(CommonStatistics.LastPlayed, MetaDataItemType.Tag);
                this.PlaylistItem.MetaDatas.Add(metaDataItem);
            }
            //TODO: I can't work out what the standard is for this value.
            //TODO: I've seen DateTime.ToFileTime() but that seems a little too windows-ish.
            //TODO: Using yyyy/MM/dd HH:mm:ss for now.
            metaDataItem.Value = DateTimeHelper.ToString(DateTime.UtcNow);
        }
예제 #4
0
 protected virtual async Task Deschedule(PlaylistItem playlistItem)
 {
     playlistItem.Flags &= ~PlaylistItemFlags.Export;
     if (playlistItem.LibraryItem_Id.HasValue)
     {
         await LibraryTaskBase.UpdateLibraryItem(
             this.Database,
             playlistItem.LibraryItem_Id.Value,
             libraryItem =>
         {
             libraryItem.ImportDate = DateTimeHelper.ToString(DateTime.UtcNow.AddSeconds(30));
             libraryItem.Flags     &= ~LibraryItemFlags.Export;
         }
             ).ConfigureAwait(false);
     }
     await PlaylistTaskBase.UpdatePlaylistItem(this.Database, playlistItem).ConfigureAwait(false);
 }
예제 #5
0
 protected virtual Task Deschedule(LibraryItem libraryItem)
 {
     libraryItem.ImportDate = DateTimeHelper.ToString(DateTime.UtcNow.AddSeconds(30));
     libraryItem.Flags     &= ~LibraryItemFlags.Export;
     return(LibraryTaskBase.UpdateLibraryItem(this.Database, libraryItem));
 }
예제 #6
0
 public void SetImportDate(DateTime value)
 {
     this.ImportDate = DateTimeHelper.ToString(value);
 }