From d0cdb5ae40dfa3a0b590d7279014feb22039477e Mon Sep 17 00:00:00 2001 From: Casper Sparre Date: Tue, 17 Feb 2026 22:10:16 +0100 Subject: [PATCH] WIP --- OF DL/Helpers/DBHelper.cs | 69 +++++++++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 18 deletions(-) diff --git a/OF DL/Helpers/DBHelper.cs b/OF DL/Helpers/DBHelper.cs index 90230a6..99e9cd7 100644 --- a/OF DL/Helpers/DBHelper.cs +++ b/OF DL/Helpers/DBHelper.cs @@ -146,6 +146,11 @@ namespace OF_DL.Helpers await cmdInfo.ExecuteNonQueryAsync(); } + using (SqliteCommand cmdInfo = new("CREATE TABLE IF NOT EXISTS user_info_blob (user_id INTEGER NOT NULL, name VARCHAR NOT NULL, blob TEXT NULL, PRIMARY KEY(user_id));", connection)) + { + await cmdInfo.ExecuteNonQueryAsync(); + } + Log.Debug("Adding missing creators"); foreach (KeyValuePair user in users) { @@ -262,28 +267,56 @@ namespace OF_DL.Helpers SqliteConnection connection = await GetAndOpenConnectionAsync($"Data Source={Directory.GetCurrentDirectory()}/users.db"); Log.Debug("Database data source: " + connection.DataSource); - //"SELECT name, about, expires_on, photo_count, video_count FROM user_info WHERE user_id = @userId" - using SqliteCommand cmdInfo = new( - "INSERT OR REPLACE INTO user_info (user_id, name, about, expires_on, photo_count, video_count) " + - "VALUES (@userId, @name, @about, @expiresOn, @photoCount, @videoCount);", - connection - ); + await UpdateAsync(); + await UpdateBlobAsync(); - cmdInfo.Parameters.AddWithValue("@userId", user.id); - cmdInfo.Parameters.AddWithValue("@name", user.name ?? user.username ?? username); - cmdInfo.Parameters.AddWithValue("@about", user.about); - cmdInfo.Parameters.AddWithValue("@expiresOn", user.subscribedByExpireDate); - cmdInfo.Parameters.AddWithValue("@photoCount", user.photosCount ?? 0); - cmdInfo.Parameters.AddWithValue("@videoCount", user.videosCount ?? 0); - - try + async Task UpdateAsync() { - int rowCount = await cmdInfo.ExecuteNonQueryAsync(); - Log.Debug("Inserted or updated creator info: {Username:l}", user.username); + using SqliteCommand cmdInfo = new( + "INSERT OR REPLACE INTO user_info (user_id, name, about, expires_on, photo_count, video_count) " + + "VALUES (@userId, @name, @about, @expiresOn, @photoCount, @videoCount);", + connection + ); + + cmdInfo.Parameters.AddWithValue("@userId", user.id); + cmdInfo.Parameters.AddWithValue("@name", user.name ?? user.username ?? username); + cmdInfo.Parameters.AddWithValue("@about", user.about); + cmdInfo.Parameters.AddWithValue("@expiresOn", user.subscribedByExpireDate); + cmdInfo.Parameters.AddWithValue("@photoCount", user.photosCount ?? 0); + cmdInfo.Parameters.AddWithValue("@videoCount", user.videosCount ?? 0); + + try + { + await cmdInfo.ExecuteNonQueryAsync(); + Log.Debug("Inserted or updated creator info: {Username:l}", user.username); + } + catch (Exception ex) + { + Log.Warning(ex, "Failed to update User Info for: {Username:l}", user.username); + } } - catch (Exception ex) + + async Task UpdateBlobAsync() { - Log.Warning(ex, "Failed to update User Info for: {Username:l}", user.username); + using SqliteCommand cmdInfo = new( + "INSERT OR REPLACE INTO user_info_blob (user_id, name, blob) " + + "VALUES (@userId, @name, @blob);", + connection + ); + + cmdInfo.Parameters.AddWithValue("@userId", user.id); + cmdInfo.Parameters.AddWithValue("@name", user.name ?? user.username ?? username); + cmdInfo.Parameters.AddWithValue("@blob", Newtonsoft.Json.JsonConvert.SerializeObject(user)); + + try + { + await cmdInfo.ExecuteNonQueryAsync(); + Log.Debug("Inserted or updated creator blob: {Username:l}", user.username); + } + catch (Exception ex) + { + Log.Warning(ex, "Failed to update User Info Blob for: {Username:l}", user.username); + } } }