aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs205
1 files changed, 30 insertions, 175 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs
index 8a82c062d..eb6e142c1 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs
@@ -1,10 +1,9 @@
-using System.IO;
-using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Logging;
using System;
-using System.Collections.Generic;
using System.Data;
+using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -17,8 +16,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
private readonly ILogger _logger;
- private IDbCommand _deleteInfosCommand;
- private IDbCommand _saveInfoCommand;
private IDbCommand _saveStatusCommand;
private readonly IApplicationPaths _appPaths;
@@ -48,16 +45,13 @@ namespace MediaBrowser.Server.Implementations.Persistence
/// <returns>Task.</returns>
public async Task Initialize()
{
- var dbFile = Path.Combine(_appPaths.DataPath, "providerinfo.db");
+ var dbFile = Path.Combine(_appPaths.DataPath, "refreshinfo.db");
_connection = await SqliteExtensions.ConnectToDb(dbFile, _logger).ConfigureAwait(false);
string[] queries = {
- "create table if not exists providerinfos (ItemId GUID, ProviderId GUID, ProviderVersion TEXT, FileStamp GUID, LastRefreshStatus TEXT, LastRefreshed datetime, PRIMARY KEY (ItemId, ProviderId))",
- "create index if not exists idx_providerinfos on providerinfos(ItemId, ProviderId)",
-
- "create table if not exists MetadataStatus (ItemId GUID PRIMARY KEY, DateLastMetadataRefresh datetime, DateLastImagesRefresh datetime, LastStatus TEXT, LastErrorMessage TEXT, MetadataProvidersRefreshed TEXT, ImageProvidersRefreshed TEXT)",
+ "create table if not exists MetadataStatus (ItemId GUID PRIMARY KEY, ItemName TEXT, SeriesName TEXT, DateLastMetadataRefresh datetime, DateLastImagesRefresh datetime, LastStatus TEXT, LastErrorMessage TEXT, MetadataProvidersRefreshed TEXT, ImageProvidersRefreshed TEXT)",
"create index if not exists idx_MetadataStatus on MetadataStatus(ItemId)",
//pragmas
@@ -73,21 +67,11 @@ namespace MediaBrowser.Server.Implementations.Persistence
_shrinkMemoryTimer = new SqliteShrinkMemoryTimer(_connection, _writeLock, _logger);
}
- private static readonly string[] SaveHistoryColumns =
- {
- "ItemId",
- "ProviderId",
- "ProviderVersion",
- "FileStamp",
- "LastRefreshStatus",
- "LastRefreshed"
- };
-
- private readonly string[] _historySelectColumns = SaveHistoryColumns.Skip(1).ToArray();
-
private static readonly string[] StatusColumns =
{
"ItemId",
+ "ItemName",
+ "SeriesName",
"DateLastMetadataRefresh",
"DateLastImagesRefresh",
"LastStatus",
@@ -106,21 +90,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
/// </summary>
private void PrepareStatements()
{
- _deleteInfosCommand = _connection.CreateCommand();
- _deleteInfosCommand.CommandText = "delete from providerinfos where ItemId=@ItemId";
- _deleteInfosCommand.Parameters.Add(_deleteInfosCommand, "@ItemId");
-
- _saveInfoCommand = _connection.CreateCommand();
-
- _saveInfoCommand.CommandText = string.Format("replace into providerinfos ({0}) values ({1})",
- string.Join(",", SaveHistoryColumns),
- string.Join(",", SaveHistoryColumns.Select(i => "@" + i).ToArray()));
-
- foreach (var col in SaveHistoryColumns)
- {
- _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@" + col);
- }
-
_saveStatusCommand = _connection.CreateCommand();
_saveStatusCommand.CommandText = string.Format("replace into MetadataStatus ({0}) values ({1})",
@@ -133,132 +102,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
}
}
- public IEnumerable<BaseProviderInfo> GetProviderHistory(Guid itemId)
- {
- if (itemId == Guid.Empty)
- {
- throw new ArgumentNullException("itemId");
- }
-
- using (var cmd = _connection.CreateCommand())
- {
- var cmdText = "select " + string.Join(",", _historySelectColumns) + " from providerinfos where";
-
- cmdText += " ItemId=@ItemId";
- cmd.Parameters.Add(cmd, "@ItemId", DbType.Guid).Value = itemId;
-
- cmd.CommandText = cmdText;
-
- using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
- {
- while (reader.Read())
- {
- yield return GetBaseProviderInfo(reader);
- }
- }
- }
- }
-
- /// <summary>
- /// Gets the base provider information.
- /// </summary>
- /// <param name="reader">The reader.</param>
- /// <returns>BaseProviderInfo.</returns>
- private BaseProviderInfo GetBaseProviderInfo(IDataReader reader)
- {
- var item = new BaseProviderInfo
- {
- ProviderId = reader.GetGuid(0)
- };
-
- if (!reader.IsDBNull(1))
- {
- item.ProviderVersion = reader.GetString(1);
- }
-
- item.FileStamp = reader.GetGuid(2);
- item.LastRefreshStatus = (ProviderRefreshStatus)Enum.Parse(typeof(ProviderRefreshStatus), reader.GetString(3), true);
- item.LastRefreshed = reader.GetDateTime(4).ToUniversalTime();
-
- return item;
- }
-
- public async Task SaveProviderHistory(Guid id, IEnumerable<BaseProviderInfo> infos, CancellationToken cancellationToken)
- {
- if (id == Guid.Empty)
- {
- throw new ArgumentNullException("id");
- }
-
- if (infos == null)
- {
- throw new ArgumentNullException("infos");
- }
-
- cancellationToken.ThrowIfCancellationRequested();
-
- await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false);
-
- IDbTransaction transaction = null;
-
- try
- {
- transaction = _connection.BeginTransaction();
-
- _deleteInfosCommand.GetParameter(0).Value = id;
-
- _deleteInfosCommand.Transaction = transaction;
-
- _deleteInfosCommand.ExecuteNonQuery();
-
- foreach (var stream in infos)
- {
- cancellationToken.ThrowIfCancellationRequested();
-
- _saveInfoCommand.GetParameter(0).Value = id;
- _saveInfoCommand.GetParameter(1).Value = stream.ProviderId;
- _saveInfoCommand.GetParameter(2).Value = stream.ProviderVersion;
- _saveInfoCommand.GetParameter(3).Value = stream.FileStamp;
- _saveInfoCommand.GetParameter(4).Value = stream.LastRefreshStatus.ToString();
- _saveInfoCommand.GetParameter(5).Value = stream.LastRefreshed;
-
- _saveInfoCommand.Transaction = transaction;
- _saveInfoCommand.ExecuteNonQuery();
- }
-
- transaction.Commit();
- }
- catch (OperationCanceledException)
- {
- if (transaction != null)
- {
- transaction.Rollback();
- }
-
- throw;
- }
- catch (Exception e)
- {
- _logger.ErrorException("Failed to save provider info:", e);
-
- if (transaction != null)
- {
- transaction.Rollback();
- }
-
- throw;
- }
- finally
- {
- if (transaction != null)
- {
- transaction.Dispose();
- }
-
- _writeLock.Release();
- }
- }
-
public MetadataStatus GetMetadataStatus(Guid itemId)
{
if (itemId == Guid.Empty)
@@ -296,32 +139,42 @@ namespace MediaBrowser.Server.Implementations.Persistence
if (!reader.IsDBNull(1))
{
- result.DateLastMetadataRefresh = reader.GetDateTime(1).ToUniversalTime();
+ result.ItemName = reader.GetString(1);
}
if (!reader.IsDBNull(2))
{
- result.DateLastImagesRefresh = reader.GetDateTime(2).ToUniversalTime();
+ result.SeriesName = reader.GetString(2);
}
if (!reader.IsDBNull(3))
{
- result.LastStatus = (ProviderRefreshStatus)Enum.Parse(typeof(ProviderRefreshStatus), reader.GetString(3), true);
+ result.DateLastMetadataRefresh = reader.GetDateTime(3).ToUniversalTime();
}
if (!reader.IsDBNull(4))
{
- result.LastErrorMessage = reader.GetString(4);
+ result.DateLastImagesRefresh = reader.GetDateTime(4).ToUniversalTime();
}
if (!reader.IsDBNull(5))
{
- result.MetadataProvidersRefreshed = reader.GetString(5).Split('|').Where(i => !string.IsNullOrEmpty(i)).Select(i => new Guid(i)).ToList();
+ result.LastStatus = (ProviderRefreshStatus)Enum.Parse(typeof(ProviderRefreshStatus), reader.GetString(5), true);
}
if (!reader.IsDBNull(6))
{
- result.ImageProvidersRefreshed = reader.GetString(6).Split('|').Where(i => !string.IsNullOrEmpty(i)).Select(i => new Guid(i)).ToList();
+ result.LastErrorMessage = reader.GetString(6);
+ }
+
+ if (!reader.IsDBNull(7))
+ {
+ result.MetadataProvidersRefreshed = reader.GetString(7).Split('|').Where(i => !string.IsNullOrEmpty(i)).Select(i => new Guid(i)).ToList();
+ }
+
+ if (!reader.IsDBNull(8))
+ {
+ result.ImageProvidersRefreshed = reader.GetString(8).Split('|').Where(i => !string.IsNullOrEmpty(i)).Select(i => new Guid(i)).ToList();
}
return result;
@@ -345,12 +198,14 @@ namespace MediaBrowser.Server.Implementations.Persistence
transaction = _connection.BeginTransaction();
_saveStatusCommand.GetParameter(0).Value = status.ItemId;
- _saveStatusCommand.GetParameter(1).Value = status.DateLastMetadataRefresh;
- _saveStatusCommand.GetParameter(2).Value = status.DateLastImagesRefresh;
- _saveStatusCommand.GetParameter(3).Value = status.LastStatus.ToString();
- _saveStatusCommand.GetParameter(4).Value = status.LastErrorMessage;
- _saveStatusCommand.GetParameter(5).Value = string.Join("|", status.MetadataProvidersRefreshed.ToArray());
- _saveStatusCommand.GetParameter(6).Value = string.Join("|", status.ImageProvidersRefreshed.ToArray());
+ _saveStatusCommand.GetParameter(1).Value = status.ItemName;
+ _saveStatusCommand.GetParameter(2).Value = status.SeriesName;
+ _saveStatusCommand.GetParameter(3).Value = status.DateLastMetadataRefresh;
+ _saveStatusCommand.GetParameter(4).Value = status.DateLastImagesRefresh;
+ _saveStatusCommand.GetParameter(5).Value = status.LastStatus.ToString();
+ _saveStatusCommand.GetParameter(6).Value = status.LastErrorMessage;
+ _saveStatusCommand.GetParameter(7).Value = string.Join("|", status.MetadataProvidersRefreshed.ToArray());
+ _saveStatusCommand.GetParameter(8).Value = string.Join("|", status.ImageProvidersRefreshed.ToArray());
_saveStatusCommand.Transaction = transaction;