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(); } } } } }
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)); } } }
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); } } } }
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); } } } }
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)); } } } } }