소스 검색

update repositories

Luke Pulverenti 8 년 전
부모
커밋
61e195c096

+ 7 - 13
Emby.Server.Implementations/Activity/ActivityRepository.cs

@@ -27,17 +27,11 @@ namespace Emby.Server.Implementations.Activity
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-                {
-                                "PRAGMA page_size=4096",
-                                "pragma default_temp_store = memory",
-                                "pragma temp_store = memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 string[] queries = {
                 string[] queries = {
-
-                                "create table if not exists ActivityLogEntries (Id GUID PRIMARY KEY, Name TEXT, Overview TEXT, ShortOverview TEXT, Type TEXT, ItemId TEXT, UserId TEXT, DateCreated DATETIME, LogSeverity TEXT)",
-                                "create index if not exists idx_ActivityLogEntries on ActivityLogEntries(Id)"
+                    "create table if not exists ActivityLogEntries (Id GUID PRIMARY KEY, Name TEXT, Overview TEXT, ShortOverview TEXT, Type TEXT, ItemId TEXT, UserId TEXT, DateCreated DATETIME, LogSeverity TEXT)",
+                    "create index if not exists idx_ActivityLogEntries on ActivityLogEntries(Id)"
                                };
                                };
 
 
                 connection.RunQueries(queries);
                 connection.RunQueries(queries);
@@ -58,9 +52,9 @@ namespace Emby.Server.Implementations.Activity
                 throw new ArgumentNullException("entry");
                 throw new ArgumentNullException("entry");
             }
             }
 
 
-            using (WriteLock.Write())
+            using (var connection = CreateConnection())
             {
             {
-                using (var connection = CreateConnection())
+                using (WriteLock.Write())
                 {
                 {
                     connection.RunInTransaction(db =>
                     connection.RunInTransaction(db =>
                     {
                     {
@@ -86,9 +80,9 @@ namespace Emby.Server.Implementations.Activity
 
 
         public QueryResult<ActivityLogEntry> GetActivityLogEntries(DateTime? minDate, int? startIndex, int? limit)
         public QueryResult<ActivityLogEntry> GetActivityLogEntries(DateTime? minDate, int? startIndex, int? limit)
         {
         {
-            using (WriteLock.Read())
+            using (var connection = CreateConnection(true))
             {
             {
-                using (var connection = CreateConnection(true))
+                using (WriteLock.Read())
                 {
                 {
                     var commandText = BaseActivitySelectText;
                     var commandText = BaseActivitySelectText;
                     var whereClauses = new List<string>();
                     var whereClauses = new List<string>();

+ 26 - 16
Emby.Server.Implementations/Data/BaseSqliteRepository.cs

@@ -67,20 +67,8 @@ namespace Emby.Server.Implementations.Data
                 //Logger.Info("Opening write connection");
                 //Logger.Info("Opening write connection");
             }
             }
 
 
-            isReadOnly = false;
-
-            if (isReadOnly)
-            {
-                connectionFlags = ConnectionFlags.ReadOnly;
-                //connectionFlags = ConnectionFlags.Create;
-                //connectionFlags |= ConnectionFlags.ReadWrite;
-            }
-            else
-            {
-                connectionFlags = ConnectionFlags.Create;
-                connectionFlags |= ConnectionFlags.ReadWrite;
-            }
-
+            connectionFlags = ConnectionFlags.Create;
+            connectionFlags |= ConnectionFlags.ReadWrite;
             connectionFlags |= ConnectionFlags.SharedCached;
             connectionFlags |= ConnectionFlags.SharedCached;
             connectionFlags |= ConnectionFlags.NoMutex;
             connectionFlags |= ConnectionFlags.NoMutex;
 
 
@@ -89,6 +77,8 @@ namespace Emby.Server.Implementations.Data
             if (string.IsNullOrWhiteSpace(_defaultWal))
             if (string.IsNullOrWhiteSpace(_defaultWal))
             {
             {
                 _defaultWal = db.Query("PRAGMA journal_mode").SelectScalarString().First();
                 _defaultWal = db.Query("PRAGMA journal_mode").SelectScalarString().First();
+
+                Logger.Info("Default journal_mode for {0} is {1}", DbFilePath, _defaultWal);
             }
             }
 
 
             var queries = new List<string>
             var queries = new List<string>
@@ -115,7 +105,7 @@ namespace Emby.Server.Implementations.Data
             //Logger.Info("synchronous: " + db.Query("PRAGMA synchronous").SelectScalarString().First());
             //Logger.Info("synchronous: " + db.Query("PRAGMA synchronous").SelectScalarString().First());
             //Logger.Info("temp_store: " + db.Query("PRAGMA temp_store").SelectScalarString().First());
             //Logger.Info("temp_store: " + db.Query("PRAGMA temp_store").SelectScalarString().First());
 
 
-            if (!string.Equals(_defaultWal, "wal", StringComparison.OrdinalIgnoreCase))
+            /*if (!string.Equals(_defaultWal, "wal", StringComparison.OrdinalIgnoreCase))
             {
             {
                 queries.Add("PRAGMA journal_mode=WAL");
                 queries.Add("PRAGMA journal_mode=WAL");
 
 
@@ -124,7 +114,7 @@ namespace Emby.Server.Implementations.Data
                     db.ExecuteAll(string.Join(";", queries.ToArray()));
                     db.ExecuteAll(string.Join(";", queries.ToArray()));
                 }
                 }
             }
             }
-            else if (queries.Count > 0)
+            else*/ if (queries.Count > 0)
             {
             {
                 db.ExecuteAll(string.Join(";", queries.ToArray()));
                 db.ExecuteAll(string.Join(";", queries.ToArray()));
             }
             }
@@ -132,6 +122,26 @@ namespace Emby.Server.Implementations.Data
             return db;
             return db;
         }
         }
 
 
+        protected void RunDefaultInitialization(IDatabaseConnection db)
+        {
+            var queries = new List<string>
+            {
+                "PRAGMA journal_mode=WAL",
+                "PRAGMA page_size=4096",
+            };
+
+            if (EnableTempStoreMemory)
+            {
+                queries.AddRange(new List<string>
+                {
+                    "pragma default_temp_store = memory",
+                    "pragma temp_store = memory"
+                });
+            }
+
+            db.ExecuteAll(string.Join(";", queries.ToArray()));
+        }
+
         protected virtual bool EnableTempStoreMemory
         protected virtual bool EnableTempStoreMemory
         {
         {
             get
             get

+ 1 - 6
Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs

@@ -54,12 +54,7 @@ namespace Emby.Server.Implementations.Data
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-               {
-                                "PRAGMA page_size=4096",
-                                "pragma default_temp_store = memory",
-                                "pragma temp_store = memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 string[] queries = {
                 string[] queries = {
 
 

+ 1 - 6
Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs

@@ -31,12 +31,7 @@ namespace Emby.Server.Implementations.Data
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-                {
-                                "PRAGMA page_size=4096",
-                                "pragma default_temp_store = memory",
-                                "pragma temp_store = memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 string[] queries = {
                 string[] queries = {
 
 

+ 3 - 8
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -157,12 +157,7 @@ namespace Emby.Server.Implementations.Data
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-                {
-                                "PRAGMA page_size=4096",
-                                "PRAGMA default_temp_store=memory",
-                                "PRAGMA temp_store=memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 var createMediaStreamsTableCommand
                 var createMediaStreamsTableCommand
                    = "create table if not exists mediastreams (ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, CodecTag TEXT NULL, Comment TEXT NULL, NalLengthSize TEXT NULL, IsAvc BIT NULL, Title TEXT NULL, TimeBase TEXT NULL, CodecTimeBase TEXT NULL, PRIMARY KEY (ItemId, StreamIndex))";
                    = "create table if not exists mediastreams (ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, CodecTag TEXT NULL, Comment TEXT NULL, NalLengthSize TEXT NULL, IsAvc BIT NULL, Title TEXT NULL, TimeBase TEXT NULL, CodecTimeBase TEXT NULL, PRIMARY KEY (ItemId, StreamIndex))";
@@ -396,9 +391,9 @@ namespace Emby.Server.Implementations.Data
         {
         {
             try
             try
             {
             {
-                using (WriteLock.Write())
+                using (var connection = CreateConnection())
                 {
                 {
-                    using (var connection = CreateConnection())
+                    using (WriteLock.Write())
                     {
                     {
                         connection.RunQueries(new string[]
                         connection.RunQueries(new string[]
                         {
                         {

+ 0 - 2
Emby.Server.Implementations/Data/SqliteUserDataRepository.cs

@@ -51,8 +51,6 @@ namespace Emby.Server.Implementations.Data
             {
             {
                 string[] queries = {
                 string[] queries = {
 
 
-                                "pragma temp_store = memory",
-
                                 "create table if not exists userdata (key nvarchar, userId GUID, rating float null, played bit, playCount int, isFavorite bit, playbackPositionTicks bigint, lastPlayedDate datetime null)",
                                 "create table if not exists userdata (key nvarchar, userId GUID, rating float null, played bit, playCount int, isFavorite bit, playbackPositionTicks bigint, lastPlayedDate datetime null)",
 
 
                                 "create table if not exists DataSettings (IsUserDataImported bit)",
                                 "create table if not exists DataSettings (IsUserDataImported bit)",

+ 1 - 6
Emby.Server.Implementations/Data/SqliteUserRepository.cs

@@ -50,12 +50,7 @@ namespace Emby.Server.Implementations.Data
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-                {
-                                "PRAGMA page_size=4096",
-                                "pragma default_temp_store = memory",
-                                "pragma temp_store = memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 string[] queries = {
                 string[] queries = {
 
 

+ 3 - 8
Emby.Server.Implementations/Notifications/SqliteNotificationsRepository.cs

@@ -29,12 +29,7 @@ namespace Emby.Server.Implementations.Notifications
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-                {
-                                "PRAGMA page_size=4096",
-                                "pragma default_temp_store = memory",
-                                "pragma temp_store = memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 string[] queries = {
                 string[] queries = {
 
 
@@ -58,7 +53,7 @@ namespace Emby.Server.Implementations.Notifications
 
 
             using (var connection = CreateConnection(true))
             using (var connection = CreateConnection(true))
             {
             {
-                //using (WriteLock.Read())
+                using (WriteLock.Read())
                 {
                 {
                     var clauses = new List<string>();
                     var clauses = new List<string>();
                     var paramList = new List<object>();
                     var paramList = new List<object>();
@@ -113,7 +108,7 @@ namespace Emby.Server.Implementations.Notifications
 
 
             using (var connection = CreateConnection(true))
             using (var connection = CreateConnection(true))
             {
             {
-                //using (WriteLock.Read())
+                using (WriteLock.Read())
                 {
                 {
                     using (var statement = connection.PrepareStatement("select Level from Notifications where UserId=@UserId and IsRead=@IsRead"))
                     using (var statement = connection.PrepareStatement("select Level from Notifications where UserId=@UserId and IsRead=@IsRead"))
                     {
                     {

+ 57 - 62
Emby.Server.Implementations/Security/AuthenticationRepository.cs

@@ -30,12 +30,7 @@ namespace Emby.Server.Implementations.Security
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-                {
-                                "PRAGMA page_size=4096",
-                                "pragma default_temp_store = memory",
-                                "pragma temp_store = memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 string[] queries = {
                 string[] queries = {
 
 
@@ -139,78 +134,78 @@ namespace Emby.Server.Implementations.Security
                 throw new ArgumentNullException("query");
                 throw new ArgumentNullException("query");
             }
             }
 
 
-            using (var connection = CreateConnection(true))
-            {
-                using (WriteLock.Read())
-                {
-                    var commandText = BaseSelectText;
+            var commandText = BaseSelectText;
 
 
-                    var whereClauses = new List<string>();
+            var whereClauses = new List<string>();
 
 
-                    var startIndex = query.StartIndex ?? 0;
+            var startIndex = query.StartIndex ?? 0;
 
 
-                    if (!string.IsNullOrWhiteSpace(query.AccessToken))
-                    {
-                        whereClauses.Add("AccessToken=@AccessToken");
-                    }
+            if (!string.IsNullOrWhiteSpace(query.AccessToken))
+            {
+                whereClauses.Add("AccessToken=@AccessToken");
+            }
 
 
-                    if (!string.IsNullOrWhiteSpace(query.UserId))
-                    {
-                        whereClauses.Add("UserId=@UserId");
-                    }
+            if (!string.IsNullOrWhiteSpace(query.UserId))
+            {
+                whereClauses.Add("UserId=@UserId");
+            }
 
 
-                    if (!string.IsNullOrWhiteSpace(query.DeviceId))
-                    {
-                        whereClauses.Add("DeviceId=@DeviceId");
-                    }
+            if (!string.IsNullOrWhiteSpace(query.DeviceId))
+            {
+                whereClauses.Add("DeviceId=@DeviceId");
+            }
 
 
-                    if (query.IsActive.HasValue)
-                    {
-                        whereClauses.Add("IsActive=@IsActive");
-                    }
+            if (query.IsActive.HasValue)
+            {
+                whereClauses.Add("IsActive=@IsActive");
+            }
 
 
-                    if (query.HasUser.HasValue)
-                    {
-                        if (query.HasUser.Value)
-                        {
-                            whereClauses.Add("UserId not null");
-                        }
-                        else
-                        {
-                            whereClauses.Add("UserId is null");
-                        }
-                    }
+            if (query.HasUser.HasValue)
+            {
+                if (query.HasUser.Value)
+                {
+                    whereClauses.Add("UserId not null");
+                }
+                else
+                {
+                    whereClauses.Add("UserId is null");
+                }
+            }
 
 
-                    var whereTextWithoutPaging = whereClauses.Count == 0 ?
-                        string.Empty :
-                        " where " + string.Join(" AND ", whereClauses.ToArray());
+            var whereTextWithoutPaging = whereClauses.Count == 0 ?
+              string.Empty :
+              " where " + string.Join(" AND ", whereClauses.ToArray());
 
 
-                    if (startIndex > 0)
-                    {
-                        var pagingWhereText = whereClauses.Count == 0 ?
-                            string.Empty :
-                            " where " + string.Join(" AND ", whereClauses.ToArray());
+            if (startIndex > 0)
+            {
+                var pagingWhereText = whereClauses.Count == 0 ?
+                    string.Empty :
+                    " where " + string.Join(" AND ", whereClauses.ToArray());
 
 
-                        whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM AccessTokens {0} ORDER BY DateCreated LIMIT {1})",
-                            pagingWhereText,
-                            startIndex.ToString(_usCulture)));
-                    }
+                whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM AccessTokens {0} ORDER BY DateCreated LIMIT {1})",
+                    pagingWhereText,
+                    startIndex.ToString(_usCulture)));
+            }
 
 
-                    var whereText = whereClauses.Count == 0 ?
-                        string.Empty :
-                        " where " + string.Join(" AND ", whereClauses.ToArray());
+            var whereText = whereClauses.Count == 0 ?
+                string.Empty :
+                " where " + string.Join(" AND ", whereClauses.ToArray());
 
 
-                    commandText += whereText;
+            commandText += whereText;
 
 
-                    commandText += " ORDER BY DateCreated";
+            commandText += " ORDER BY DateCreated";
 
 
-                    if (query.Limit.HasValue)
-                    {
-                        commandText += " LIMIT " + query.Limit.Value.ToString(_usCulture);
-                    }
+            if (query.Limit.HasValue)
+            {
+                commandText += " LIMIT " + query.Limit.Value.ToString(_usCulture);
+            }
 
 
-                    var list = new List<AuthenticationInfo>();
+            var list = new List<AuthenticationInfo>();
 
 
+            using (var connection = CreateConnection(true))
+            {
+                using (WriteLock.Read())
+                {
                     using (var statement = connection.PrepareStatement(commandText))
                     using (var statement = connection.PrepareStatement(commandText))
                     {
                     {
                         BindAuthenticationQueryParams(query, statement);
                         BindAuthenticationQueryParams(query, statement);

+ 1 - 6
Emby.Server.Implementations/Social/SharingRepository.cs

@@ -27,12 +27,7 @@ namespace Emby.Server.Implementations.Social
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-                {
-                                "PRAGMA page_size=4096",
-                                "pragma default_temp_store = memory",
-                                "pragma temp_store = memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 string[] queries = {
                 string[] queries = {
 
 

+ 1 - 6
Emby.Server.Implementations/Sync/SyncRepository.cs

@@ -43,12 +43,7 @@ namespace Emby.Server.Implementations.Sync
         {
         {
             using (var connection = CreateConnection())
             using (var connection = CreateConnection())
             {
             {
-                connection.ExecuteAll(string.Join(";", new[]
-                {
-                                "PRAGMA page_size=4096",
-                                "pragma default_temp_store = memory",
-                                "pragma temp_store = memory"
-                }));
+                RunDefaultInitialization(connection);
 
 
                 string[] queries = {
                 string[] queries = {