コード例 #1
0
 public async Task Refresh()
 {
     using (var database = this.DatabaseFactory.Create())
     {
         var table  = database.Tables.PlaylistItem;
         var query  = database.QueryFactory.Build();
         var column = table.GetColumn(ColumnConfig.By("Sequence"));
         query.Output.AddColumn(column);
         query.Source.AddTable(table);
         using (var transaction = database.BeginTransaction(database.PreferredIsolationLevel))
         {
             using (var reader = database.ExecuteReader(query, transaction))
             {
                 using (var sequence = reader.GetAsyncEnumerator())
                 {
                     this.Sequences.Clear();
                     this.Position = 0;
                     while (await sequence.MoveNextAsync().ConfigureAwait(false))
                     {
                         this.Sequences.Add(sequence.Current.Get <int>(column));
                     }
                     this.Sequences.Shuffle();
                 }
             }
         }
     }
 }
コード例 #2
0
 protected virtual int?GetSequence(Playlist playlist, int sequence, QueryOperator @operator, OrderByDirection direction)
 {
     using (var database = this.DatabaseFactory.Create())
     {
         using (var transaction = database.BeginTransaction(database.PreferredIsolationLevel))
         {
             var query = this.SequenceQueries.GetOrAdd(
                 new Tuple <QueryOperator, OrderByDirection>(@operator, direction),
                 key =>
             {
                 var table   = database.Tables.PlaylistItem;
                 var column  = table.GetColumn(ColumnConfig.By("Sequence"));
                 var builder = database.QueryFactory.Build();
                 builder.Output.AddColumn(column);
                 builder.Source.AddTable(table);
                 builder.Filter.AddColumn(table.GetColumn(ColumnConfig.By("Playlist_Id")));
                 builder.Filter.AddColumn(column).Operator = builder.Filter.CreateOperator(@operator);
                 builder.Sort.AddColumn(column).Direction  = direction;
                 return(builder.Build());
             }
                 );
             return(database.ExecuteScalar <int?>(query, (parameters, phase) =>
             {
                 switch (phase)
                 {
                 case DatabaseParameterPhase.Fetch:
                     parameters["playlistId"] = playlist.Id;
                     parameters["sequence"] = sequence;
                     break;
                 }
             }, transaction));
         }
     }
 }
コード例 #3
0
 private IEnumerable <LibraryHierarchy> GetHierarchiesCore()
 {
     using (var database = this.DatabaseFactory.Create())
     {
         using (var transaction = database.BeginTransaction(database.PreferredIsolationLevel))
         {
             var set = database.Set <LibraryHierarchy>(transaction);
             set.Fetch.Filter.AddColumn(
                 set.Table.GetColumn(ColumnConfig.By("Enabled", ColumnFlags.None))
                 ).With(filter => filter.Right = filter.CreateConstant(1));
             set.Fetch.Sort.Expressions.Clear();
             set.Fetch.Sort.AddColumn(set.Table.GetColumn(ColumnConfig.By("Sequence", ColumnFlags.None)));
             foreach (var element in set)
             {
                 yield return(element);
             }
         }
     }
 }
コード例 #4
0
 private IEnumerable <PlaylistColumn> GetColumnsCore()
 {
     using (var database = this.DatabaseFactory.Create())
     {
         using (var transaction = database.BeginTransaction(database.PreferredIsolationLevel))
         {
             var set = database.Set <PlaylistColumn>(transaction);
             //It's easier to just filter enabled/disabled in memory, there isn't much data.
             //set.Fetch.Filter.AddColumn(
             //    set.Table.GetColumn(ColumnConfig.By("Enabled", ColumnFlags.None))
             //).With(filter => filter.Right = filter.CreateConstant(1));
             set.Fetch.Sort.Expressions.Clear();
             set.Fetch.Sort.AddColumn(set.Table.GetColumn(ColumnConfig.By("Sequence", ColumnFlags.None)));
             foreach (var element in set)
             {
                 yield return(element);
             }
         }
     }
 }
コード例 #5
0
ファイル: Playlist.cs プロジェクト: hainam2101/FoxTunes
 protected virtual IEnumerable <GridViewColumn> GetGridColumns()
 {
     if (this.DatabaseFactory != null && this.GridViewColumnFactory != null)
     {
         using (var database = this.DatabaseFactory.Create())
         {
             using (var transaction = database.BeginTransaction(database.PreferredIsolationLevel))
             {
                 var set = database.Set <PlaylistColumn>(transaction);
                 set.Fetch.Filter.AddColumn(
                     set.Table.GetColumn(ColumnConfig.By("Enabled", ColumnFlags.None))
                     ).With(filter => filter.Right = filter.CreateConstant(1));
                 foreach (var column in set)
                 {
                     yield return(this.GridViewColumnFactory.Create(column));
                 }
             }
         }
     }
 }