public int?GenerateItemId(ItemType itemType) { ISQLiteConnection conn = null; try { conn = database.GetSqliteConnection(); int affected = conn.ExecuteLogged("INSERT INTO Item (ItemType, Timestamp) VALUES (?, ?)", itemType, DateTime.UtcNow.ToUnixTime()); if (affected >= 1) { try { int rowId = conn.ExecuteScalar <int>("SELECT last_insert_rowid()"); if (rowId != 0) { return(rowId); } } catch (Exception e) { logger.Error(e); } } } catch (Exception e) { logger.Error("GenerateItemId ERROR: ", e); } finally { database.CloseSqliteConnection(conn); } return(null); }
/// <summary> /// Retrieve the server's GUID for URL forwarding, or generate a new one if none exists /// </summary> public static string GetServerGuid() { string guid = null; ISQLiteConnection conn = null; try { // Grab server GUID from the database conn = Injection.Kernel.Get <IDatabase>().GetSqliteConnection(); guid = conn.ExecuteScalar <string>("SELECT Guid FROM Server"); } catch (Exception e) { logger.Error("Exception loading server GUID", e); } finally { Injection.Kernel.Get <IDatabase>().CloseSqliteConnection(conn); } // If it doesn't exist, generate a new one if ((object)guid == null) { // Generate the GUID Guid guidObj = Guid.NewGuid(); guid = guidObj.ToString(); // Store the GUID in the database try { conn = Injection.Kernel.Get <IDatabase>().GetSqliteConnection(); int affected = conn.Execute("INSERT INTO Server (Guid) VALUES (?)", guid); if (affected == 0) { guid = null; } } catch (Exception e) { logger.Error("Exception saving guid", e); guid = null; } finally { Injection.Kernel.Get <IDatabase>().CloseSqliteConnection(conn); } } return(guid); }
/// <summary> /// Retrieve the server's forwarding URL from database /// </summary> public static string GetServerUrl() { ISQLiteConnection conn = null; try { // Grab server URL from the database conn = Injection.Kernel.Get <IDatabase>().GetSqliteConnection(); return(conn.ExecuteScalar <string>("SELECT Url FROM Server")); } catch (Exception e) { logger.Error("Exception loading server info", e); } finally { Injection.Kernel.Get <IDatabase>().CloseSqliteConnection(conn); } return(null); }
public int IndexOfMediaItem(IMediaItem item) { ISQLiteConnection conn = null; try { conn = Injection.Kernel.Get <IDatabase>().GetSqliteConnection(); return(conn.ExecuteScalar <int>("SELECT ItemPosition FROM PlaylistItem " + "WHERE PlaylistId = ? AND ItemType = ? " + "ORDER BY ItemPosition LIMIT 1", PlaylistId, item.ItemTypeId)); } catch (Exception e) { logger.Error(e); } finally { Injection.Kernel.Get <IDatabase>().CloseSqliteConnection(conn); } return(0); }
// Retrieve a scalar value of type T using query string and prepared arguments public static T GetScalar <T>(this IDatabase database, string query, params object[] args) where T : new() { ISQLiteConnection conn = null; try { // Get database connection, use query to fetch scalar value of type T conn = database.GetSqliteConnection(); return(conn.ExecuteScalar <T>(query, args)); } catch (Exception e) { logger.Error("query: " + query); logger.Error(e); } finally { database.CloseSqliteConnection(conn); } // Return default value for scalar (reference: null, value: 0) return(default(T)); }
private bool ArtFileNeedsUpdating(string filePath) { if (filePath == null) { return(false); } // Verify file is one that we recognize as art FileInfo file = new FileInfo(filePath); if (!Injection.Kernel.Get <IServerSettings>().FolderArtNames.Contains(file.Name)) { return(false); } long lastModified = System.IO.File.GetLastWriteTime(filePath).ToUnixTime(); bool needsUpdating = true; ISQLiteConnection conn = null; try { conn = Injection.Kernel.Get <IDatabase>().GetSqliteConnection(); string artId = conn.ExecuteScalar <string>("SELECT ArtId FROM Art WHERE LastModified = ? AND FilePath = ?", lastModified, filePath); if (!ReferenceEquals(artId, null)) { needsUpdating = false; } } catch (Exception e) { logger.Error(e); } finally { Injection.Kernel.Get <IDatabase>().CloseSqliteConnection(conn); } return(needsUpdating); }