From 2a0280d48dd4271f60e9d59be932d6ba0f38c62c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 19 Nov 2016 16:07:01 -0500 Subject: add dll config file --- .../Data/SqliteUserDataRepository.cs | 662 ++++++++++----------- 1 file changed, 331 insertions(+), 331 deletions(-) (limited to 'Emby.Server.Implementations/Data/SqliteUserDataRepository.cs') diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs index 4c73b6c6a..5556c4502 100644 --- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs @@ -1,331 +1,331 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Persistence; -using MediaBrowser.Model.Logging; -using SQLitePCL.pretty; - -namespace Emby.Server.Implementations.Data -{ - public class SqliteUserDataRepository : BaseSqliteRepository, IUserDataRepository - { - private SQLiteDatabaseConnection _connection; - - public SqliteUserDataRepository(ILogger logger, IApplicationPaths appPaths) - : base(logger) - { - DbFilePath = Path.Combine(appPaths.DataPath, "userdata_v2.db"); - } - - protected override bool EnableConnectionPooling - { - get { return false; } - } - - /// - /// Gets the name of the repository - /// - /// The name. - public string Name - { - get - { - return "SQLite"; - } - } - - /// - /// Opens the connection to the database - /// - /// Task. - public void Initialize(SQLiteDatabaseConnection connection, ReaderWriterLockSlim writeLock) - { - WriteLock.Dispose(); - WriteLock = writeLock; - _connection = connection; - - string[] queries = { - - "create table if not exists UserDataDb.userdata (key nvarchar, userId GUID, rating float null, played bit, playCount int, isFavorite bit, playbackPositionTicks bigint, lastPlayedDate datetime null)", - - "drop index if exists UserDataDb.idx_userdata", - "drop index if exists UserDataDb.idx_userdata1", - "drop index if exists UserDataDb.idx_userdata2", - "drop index if exists UserDataDb.userdataindex1", - - "create unique index if not exists UserDataDb.userdataindex on userdata (key, userId)", - "create index if not exists UserDataDb.userdataindex2 on userdata (key, userId, played)", - "create index if not exists UserDataDb.userdataindex3 on userdata (key, userId, playbackPositionTicks)", - "create index if not exists UserDataDb.userdataindex4 on userdata (key, userId, isFavorite)", - - //pragmas - "pragma temp_store = memory", - - "pragma shrink_memory" - }; - - _connection.RunQueries(queries); - - connection.RunInTransaction(db => - { - var existingColumnNames = GetColumnNames(db, "userdata"); - - AddColumn(db, "userdata", "AudioStreamIndex", "int", existingColumnNames); - AddColumn(db, "userdata", "SubtitleStreamIndex", "int", existingColumnNames); - }); - } - - /// - /// Saves the user data. - /// - /// The user id. - /// The key. - /// The user data. - /// The cancellation token. - /// Task. - /// userData - /// or - /// cancellationToken - /// or - /// userId - /// or - /// userDataId - public Task SaveUserData(Guid userId, string key, UserItemData userData, CancellationToken cancellationToken) - { - if (userData == null) - { - throw new ArgumentNullException("userData"); - } - if (userId == Guid.Empty) - { - throw new ArgumentNullException("userId"); - } - if (string.IsNullOrEmpty(key)) - { - throw new ArgumentNullException("key"); - } - - return PersistUserData(userId, key, userData, cancellationToken); - } - - public Task SaveAllUserData(Guid userId, IEnumerable userData, CancellationToken cancellationToken) - { - if (userData == null) - { - throw new ArgumentNullException("userData"); - } - if (userId == Guid.Empty) - { - throw new ArgumentNullException("userId"); - } - - return PersistAllUserData(userId, userData.ToList(), cancellationToken); - } - - /// - /// Persists the user data. - /// - /// The user id. - /// The key. - /// The user data. - /// The cancellation token. - /// Task. - public async Task PersistUserData(Guid userId, string key, UserItemData userData, CancellationToken cancellationToken) - { - cancellationToken.ThrowIfCancellationRequested(); - - using (WriteLock.Write()) - { - _connection.RunInTransaction(db => - { - SaveUserData(db, userId, key, userData); - }); - } - } - - private void SaveUserData(IDatabaseConnection db, Guid userId, string key, UserItemData userData) - { - var paramList = new List(); - var commandText = "replace into userdata (key, userId, rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex) values (?, ?, ?,?,?,?,?,?,?,?)"; - - paramList.Add(key); - paramList.Add(userId.ToGuidParamValue()); - paramList.Add(userData.Rating); - paramList.Add(userData.Played); - paramList.Add(userData.PlayCount); - paramList.Add(userData.IsFavorite); - paramList.Add(userData.PlaybackPositionTicks); - - if (userData.LastPlayedDate.HasValue) - { - paramList.Add(userData.LastPlayedDate.Value.ToDateTimeParamValue()); - } - else - { - paramList.Add(null); - } - paramList.Add(userData.AudioStreamIndex); - paramList.Add(userData.SubtitleStreamIndex); - - db.Execute(commandText, paramList.ToArray()); - } - - /// - /// Persist all user data for the specified user - /// - private async Task PersistAllUserData(Guid userId, List userDataList, CancellationToken cancellationToken) - { - cancellationToken.ThrowIfCancellationRequested(); - - using (WriteLock.Write()) - { - _connection.RunInTransaction(db => - { - foreach (var userItemData in userDataList) - { - SaveUserData(db, userId, userItemData.Key, userItemData); - } - }); - } - } - - /// - /// Gets the user data. - /// - /// The user id. - /// The key. - /// Task{UserItemData}. - /// - /// userId - /// or - /// key - /// - public UserItemData GetUserData(Guid userId, string key) - { - if (userId == Guid.Empty) - { - throw new ArgumentNullException("userId"); - } - if (string.IsNullOrEmpty(key)) - { - throw new ArgumentNullException("key"); - } - - var commandText = "select key,userid,rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex from userdata where key = ? and userId=?"; - - var paramList = new List(); - paramList.Add(key); - paramList.Add(userId.ToGuidParamValue()); - - foreach (var row in _connection.Query(commandText, paramList.ToArray())) - { - return ReadRow(row); - } - - return null; - } - - public UserItemData GetUserData(Guid userId, List keys) - { - if (userId == Guid.Empty) - { - throw new ArgumentNullException("userId"); - } - if (keys == null) - { - throw new ArgumentNullException("keys"); - } - - if (keys.Count == 0) - { - return null; - } - - return GetUserData(userId, keys[0]); - } - - /// - /// Return all user-data associated with the given user - /// - /// - /// - public IEnumerable GetAllUserData(Guid userId) - { - if (userId == Guid.Empty) - { - throw new ArgumentNullException("userId"); - } - - var list = new List(); - - using (WriteLock.Read()) - { - var commandText = "select key,userid,rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex from userdata where userId=?"; - - var paramList = new List(); - paramList.Add(userId.ToGuidParamValue()); - - foreach (var row in _connection.Query(commandText, paramList.ToArray())) - { - list.Add(ReadRow(row)); - } - } - - return list; - } - - /// - /// Read a row from the specified reader into the provided userData object - /// - /// - private UserItemData ReadRow(IReadOnlyList reader) - { - var userData = new UserItemData(); - - userData.Key = reader[0].ToString(); - userData.UserId = reader[1].ReadGuid(); - - if (reader[2].SQLiteType != SQLiteType.Null) - { - userData.Rating = reader[2].ToDouble(); - } - - userData.Played = reader[3].ToBool(); - userData.PlayCount = reader[4].ToInt(); - userData.IsFavorite = reader[5].ToBool(); - userData.PlaybackPositionTicks = reader[6].ToInt64(); - - if (reader[7].SQLiteType != SQLiteType.Null) - { - userData.LastPlayedDate = reader[7].ReadDateTime(); - } - - if (reader[8].SQLiteType != SQLiteType.Null) - { - userData.AudioStreamIndex = reader[8].ToInt(); - } - - if (reader[9].SQLiteType != SQLiteType.Null) - { - userData.SubtitleStreamIndex = reader[9].ToInt(); - } - - return userData; - } - - protected override void Dispose(bool dispose) - { - // handled by library database - } - - protected override void CloseConnection() - { - // handled by library database - } - } -} \ No newline at end of file +//using System; +//using System.Collections.Generic; +//using System.IO; +//using System.Linq; +//using System.Threading; +//using System.Threading.Tasks; +//using MediaBrowser.Common.Configuration; +//using MediaBrowser.Controller.Entities; +//using MediaBrowser.Controller.Persistence; +//using MediaBrowser.Model.Logging; +//using SQLitePCL.pretty; + +//namespace Emby.Server.Implementations.Data +//{ +// public class SqliteUserDataRepository : BaseSqliteRepository, IUserDataRepository +// { +// private SQLiteDatabaseConnection _connection; + +// public SqliteUserDataRepository(ILogger logger, IApplicationPaths appPaths) +// : base(logger) +// { +// DbFilePath = Path.Combine(appPaths.DataPath, "userdata_v2.db"); +// } + +// protected override bool EnableConnectionPooling +// { +// get { return false; } +// } + +// /// +// /// Gets the name of the repository +// /// +// /// The name. +// public string Name +// { +// get +// { +// return "SQLite"; +// } +// } + +// /// +// /// Opens the connection to the database +// /// +// /// Task. +// public void Initialize(SQLiteDatabaseConnection connection, ReaderWriterLockSlim writeLock) +// { +// WriteLock.Dispose(); +// WriteLock = writeLock; +// _connection = connection; + +// string[] queries = { + +// "create table if not exists UserDataDb.userdata (key nvarchar, userId GUID, rating float null, played bit, playCount int, isFavorite bit, playbackPositionTicks bigint, lastPlayedDate datetime null)", + +// "drop index if exists UserDataDb.idx_userdata", +// "drop index if exists UserDataDb.idx_userdata1", +// "drop index if exists UserDataDb.idx_userdata2", +// "drop index if exists UserDataDb.userdataindex1", + +// "create unique index if not exists UserDataDb.userdataindex on userdata (key, userId)", +// "create index if not exists UserDataDb.userdataindex2 on userdata (key, userId, played)", +// "create index if not exists UserDataDb.userdataindex3 on userdata (key, userId, playbackPositionTicks)", +// "create index if not exists UserDataDb.userdataindex4 on userdata (key, userId, isFavorite)", + +// //pragmas +// "pragma temp_store = memory", + +// "pragma shrink_memory" +// }; + +// _connection.RunQueries(queries); + +// connection.RunInTransaction(db => +// { +// var existingColumnNames = GetColumnNames(db, "userdata"); + +// AddColumn(db, "userdata", "AudioStreamIndex", "int", existingColumnNames); +// AddColumn(db, "userdata", "SubtitleStreamIndex", "int", existingColumnNames); +// }); +// } + +// /// +// /// Saves the user data. +// /// +// /// The user id. +// /// The key. +// /// The user data. +// /// The cancellation token. +// /// Task. +// /// userData +// /// or +// /// cancellationToken +// /// or +// /// userId +// /// or +// /// userDataId +// public Task SaveUserData(Guid userId, string key, UserItemData userData, CancellationToken cancellationToken) +// { +// if (userData == null) +// { +// throw new ArgumentNullException("userData"); +// } +// if (userId == Guid.Empty) +// { +// throw new ArgumentNullException("userId"); +// } +// if (string.IsNullOrEmpty(key)) +// { +// throw new ArgumentNullException("key"); +// } + +// return PersistUserData(userId, key, userData, cancellationToken); +// } + +// public Task SaveAllUserData(Guid userId, IEnumerable userData, CancellationToken cancellationToken) +// { +// if (userData == null) +// { +// throw new ArgumentNullException("userData"); +// } +// if (userId == Guid.Empty) +// { +// throw new ArgumentNullException("userId"); +// } + +// return PersistAllUserData(userId, userData.ToList(), cancellationToken); +// } + +// /// +// /// Persists the user data. +// /// +// /// The user id. +// /// The key. +// /// The user data. +// /// The cancellation token. +// /// Task. +// public async Task PersistUserData(Guid userId, string key, UserItemData userData, CancellationToken cancellationToken) +// { +// cancellationToken.ThrowIfCancellationRequested(); + +// using (WriteLock.Write()) +// { +// _connection.RunInTransaction(db => +// { +// SaveUserData(db, userId, key, userData); +// }); +// } +// } + +// private void SaveUserData(IDatabaseConnection db, Guid userId, string key, UserItemData userData) +// { +// var paramList = new List(); +// var commandText = "replace into userdata (key, userId, rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex) values (?, ?, ?,?,?,?,?,?,?,?)"; + +// paramList.Add(key); +// paramList.Add(userId.ToGuidParamValue()); +// paramList.Add(userData.Rating); +// paramList.Add(userData.Played); +// paramList.Add(userData.PlayCount); +// paramList.Add(userData.IsFavorite); +// paramList.Add(userData.PlaybackPositionTicks); + +// if (userData.LastPlayedDate.HasValue) +// { +// paramList.Add(userData.LastPlayedDate.Value.ToDateTimeParamValue()); +// } +// else +// { +// paramList.Add(null); +// } +// paramList.Add(userData.AudioStreamIndex); +// paramList.Add(userData.SubtitleStreamIndex); + +// db.Execute(commandText, paramList.ToArray()); +// } + +// /// +// /// Persist all user data for the specified user +// /// +// private async Task PersistAllUserData(Guid userId, List userDataList, CancellationToken cancellationToken) +// { +// cancellationToken.ThrowIfCancellationRequested(); + +// using (WriteLock.Write()) +// { +// _connection.RunInTransaction(db => +// { +// foreach (var userItemData in userDataList) +// { +// SaveUserData(db, userId, userItemData.Key, userItemData); +// } +// }); +// } +// } + +// /// +// /// Gets the user data. +// /// +// /// The user id. +// /// The key. +// /// Task{UserItemData}. +// /// +// /// userId +// /// or +// /// key +// /// +// public UserItemData GetUserData(Guid userId, string key) +// { +// if (userId == Guid.Empty) +// { +// throw new ArgumentNullException("userId"); +// } +// if (string.IsNullOrEmpty(key)) +// { +// throw new ArgumentNullException("key"); +// } + +// var commandText = "select key,userid,rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex from userdata where key = ? and userId=?"; + +// var paramList = new List(); +// paramList.Add(key); +// paramList.Add(userId.ToGuidParamValue()); + +// foreach (var row in _connection.Query(commandText, paramList.ToArray())) +// { +// return ReadRow(row); +// } + +// return null; +// } + +// public UserItemData GetUserData(Guid userId, List keys) +// { +// if (userId == Guid.Empty) +// { +// throw new ArgumentNullException("userId"); +// } +// if (keys == null) +// { +// throw new ArgumentNullException("keys"); +// } + +// if (keys.Count == 0) +// { +// return null; +// } + +// return GetUserData(userId, keys[0]); +// } + +// /// +// /// Return all user-data associated with the given user +// /// +// /// +// /// +// public IEnumerable GetAllUserData(Guid userId) +// { +// if (userId == Guid.Empty) +// { +// throw new ArgumentNullException("userId"); +// } + +// var list = new List(); + +// using (WriteLock.Read()) +// { +// var commandText = "select key,userid,rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex from userdata where userId=?"; + +// var paramList = new List(); +// paramList.Add(userId.ToGuidParamValue()); + +// foreach (var row in _connection.Query(commandText, paramList.ToArray())) +// { +// list.Add(ReadRow(row)); +// } +// } + +// return list; +// } + +// /// +// /// Read a row from the specified reader into the provided userData object +// /// +// /// +// private UserItemData ReadRow(IReadOnlyList reader) +// { +// var userData = new UserItemData(); + +// userData.Key = reader[0].ToString(); +// userData.UserId = reader[1].ReadGuid(); + +// if (reader[2].SQLiteType != SQLiteType.Null) +// { +// userData.Rating = reader[2].ToDouble(); +// } + +// userData.Played = reader[3].ToBool(); +// userData.PlayCount = reader[4].ToInt(); +// userData.IsFavorite = reader[5].ToBool(); +// userData.PlaybackPositionTicks = reader[6].ToInt64(); + +// if (reader[7].SQLiteType != SQLiteType.Null) +// { +// userData.LastPlayedDate = reader[7].ReadDateTime(); +// } + +// if (reader[8].SQLiteType != SQLiteType.Null) +// { +// userData.AudioStreamIndex = reader[8].ToInt(); +// } + +// if (reader[9].SQLiteType != SQLiteType.Null) +// { +// userData.SubtitleStreamIndex = reader[9].ToInt(); +// } + +// return userData; +// } + +// protected override void Dispose(bool dispose) +// { +// // handled by library database +// } + +// protected override void CloseConnection() +// { +// // handled by library database +// } +// } +//} \ No newline at end of file -- cgit v1.2.3