From 461e9b2cddb829e47420fddc373c795523b3375e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 22 Jun 2016 16:08:07 -0400 Subject: [PATCH] rework query paging --- .../Persistence/SqliteItemRepository.cs | 80 ++++++++++++------- 1 file changed, 49 insertions(+), 31 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 152781aff1..992a0a2cfa 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -123,7 +123,7 @@ namespace MediaBrowser.Server.Implementations.Persistence protected override async Task CreateConnection(bool isReadOnly = false) { - var connection = await DbConnector.Connect(DbFilePath, false, false, 5000).ConfigureAwait(false); + var connection = await DbConnector.Connect(DbFilePath, false, false, 10000).ConfigureAwait(false); connection.RunQueries(new[] { @@ -1780,13 +1780,16 @@ namespace MediaBrowser.Server.Implementations.Persistence if (query.Limit.HasValue || query.StartIndex.HasValue) { - var limit = query.Limit ?? int.MaxValue; + var offset = query.StartIndex ?? 0; - cmd.CommandText += " LIMIT " + limit.ToString(CultureInfo.InvariantCulture); - - if (query.StartIndex.HasValue) + if (query.Limit.HasValue || offset > 0) { - cmd.CommandText += " OFFSET " + query.StartIndex.Value.ToString(CultureInfo.InvariantCulture); + cmd.CommandText += " LIMIT " + (query.Limit ?? int.MaxValue).ToString(CultureInfo.InvariantCulture); + } + + if (offset > 0) + { + cmd.CommandText += " OFFSET " + offset.ToString(CultureInfo.InvariantCulture); } } @@ -1883,13 +1886,16 @@ namespace MediaBrowser.Server.Implementations.Persistence if (query.Limit.HasValue || query.StartIndex.HasValue) { - var limit = query.Limit ?? int.MaxValue; + var offset = query.StartIndex ?? 0; - cmd.CommandText += " LIMIT " + limit.ToString(CultureInfo.InvariantCulture); - - if (query.StartIndex.HasValue) + if (query.Limit.HasValue || offset > 0) { - cmd.CommandText += " OFFSET " + query.StartIndex.Value.ToString(CultureInfo.InvariantCulture); + cmd.CommandText += " LIMIT " + (query.Limit ?? int.MaxValue).ToString(CultureInfo.InvariantCulture); + } + + if (offset > 0) + { + cmd.CommandText += " OFFSET " + offset.ToString(CultureInfo.InvariantCulture); } } @@ -2096,13 +2102,16 @@ namespace MediaBrowser.Server.Implementations.Persistence if (query.Limit.HasValue || query.StartIndex.HasValue) { - var limit = query.Limit ?? int.MaxValue; + var offset = query.StartIndex ?? 0; - cmd.CommandText += " LIMIT " + limit.ToString(CultureInfo.InvariantCulture); - - if (query.StartIndex.HasValue) + if (query.Limit.HasValue || offset > 0) { - cmd.CommandText += " OFFSET " + query.StartIndex.Value.ToString(CultureInfo.InvariantCulture); + cmd.CommandText += " LIMIT " + (query.Limit ?? int.MaxValue).ToString(CultureInfo.InvariantCulture); + } + + if (offset > 0) + { + cmd.CommandText += " OFFSET " + offset.ToString(CultureInfo.InvariantCulture); } } @@ -2153,13 +2162,16 @@ namespace MediaBrowser.Server.Implementations.Persistence if (query.Limit.HasValue || query.StartIndex.HasValue) { - var limit = query.Limit ?? int.MaxValue; + var offset = query.StartIndex ?? 0; - cmd.CommandText += " LIMIT " + limit.ToString(CultureInfo.InvariantCulture); - - if (query.StartIndex.HasValue) + if (query.Limit.HasValue || offset > 0) { - cmd.CommandText += " OFFSET " + query.StartIndex.Value.ToString(CultureInfo.InvariantCulture); + cmd.CommandText += " LIMIT " + (query.Limit ?? int.MaxValue).ToString(CultureInfo.InvariantCulture); + } + + if (offset > 0) + { + cmd.CommandText += " OFFSET " + offset.ToString(CultureInfo.InvariantCulture); } } @@ -2243,13 +2255,16 @@ namespace MediaBrowser.Server.Implementations.Persistence if (query.Limit.HasValue || query.StartIndex.HasValue) { - var limit = query.Limit ?? int.MaxValue; + var offset = query.StartIndex ?? 0; - cmd.CommandText += " LIMIT " + limit.ToString(CultureInfo.InvariantCulture); - - if (query.StartIndex.HasValue) + if (query.Limit.HasValue || offset > 0) { - cmd.CommandText += " OFFSET " + query.StartIndex.Value.ToString(CultureInfo.InvariantCulture); + cmd.CommandText += " LIMIT " + (query.Limit ?? int.MaxValue).ToString(CultureInfo.InvariantCulture); + } + + if (offset > 0) + { + cmd.CommandText += " OFFSET " + offset.ToString(CultureInfo.InvariantCulture); } } @@ -3700,13 +3715,16 @@ namespace MediaBrowser.Server.Implementations.Persistence if (query.Limit.HasValue || query.StartIndex.HasValue) { - var limit = query.Limit ?? int.MaxValue; + var offset = query.StartIndex ?? 0; - cmd.CommandText += " LIMIT " + limit.ToString(CultureInfo.InvariantCulture); - - if (query.StartIndex.HasValue) + if (query.Limit.HasValue || offset > 0) { - cmd.CommandText += " OFFSET " + query.StartIndex.Value.ToString(CultureInfo.InvariantCulture); + cmd.CommandText += " LIMIT " + (query.Limit ?? int.MaxValue).ToString(CultureInfo.InvariantCulture); + } + + if (offset > 0) + { + cmd.CommandText += " OFFSET " + offset.ToString(CultureInfo.InvariantCulture); } }