From e4206d9e29ecafa21f3c0b543d75426b3ad5e849 Mon Sep 17 00:00:00 2001 From: leiurayer <1432593898@qq.com> Date: Sun, 4 Aug 2024 00:33:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Cookies=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Downkyi.Core/Database/Login/Cookies.cs | 21 +++++ .../Database/Login/LoginDatabase.cs | 79 +++++++++++++++++++ src/Downkyi.Core/Database/Login/Users.cs | 21 +++++ src/Downkyi.Core/Downkyi.Core.csproj | 3 +- 4 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 src/Downkyi.Core/Database/Login/Cookies.cs create mode 100644 src/Downkyi.Core/Database/Login/LoginDatabase.cs create mode 100644 src/Downkyi.Core/Database/Login/Users.cs diff --git a/src/Downkyi.Core/Database/Login/Cookies.cs b/src/Downkyi.Core/Database/Login/Cookies.cs new file mode 100644 index 0000000..ab96485 --- /dev/null +++ b/src/Downkyi.Core/Database/Login/Cookies.cs @@ -0,0 +1,21 @@ +using SQLite; + +namespace Downkyi.Core.Database.Login; + +[Table("cookies")] +public class Cookies +{ + [PrimaryKey, AutoIncrement] + [Column("id")] + public long Id { get; set; } + + [Indexed] + [Column("uid")] + public long Uid { get; set; } + + [Column("key")] + public string Key { get; set; } = string.Empty; + + [Column("value")] + public string Value { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/src/Downkyi.Core/Database/Login/LoginDatabase.cs b/src/Downkyi.Core/Database/Login/LoginDatabase.cs new file mode 100644 index 0000000..cd6ae64 --- /dev/null +++ b/src/Downkyi.Core/Database/Login/LoginDatabase.cs @@ -0,0 +1,79 @@ +using Downkyi.Core.Storage; +using SQLite; + +namespace Downkyi.Core.Database.Login; + +public class LoginDatabase +{ + private const SQLiteOpenFlags _flags = + SQLiteOpenFlags.ReadWrite | + SQLiteOpenFlags.Create | + SQLiteOpenFlags.SharedCache; + + private readonly string _databasePath = Constant.Login; + + private SQLiteAsyncConnection? _database; + + private async Task Init() + { + if (_database is not null) + return; + + _database = new SQLiteAsyncConnection(_databasePath, _flags); + await _database.CreateTableAsync(); + await _database.CreateTableAsync(); + } + + // 增删查改 + + public async Task AddCookiesAsync(Cookies cookies) + { + await Init(); + + var user = await _database!.Table() + .Where(i => i.Uid == cookies.Uid) + .FirstOrDefaultAsync(); + if (user != null) + { + user.UpdateTime = DateTime.Now; + await _database.UpdateAsync(user); + } + else + { + var newUser = new Users + { + Uid = cookies.Uid, + UpdateTime = DateTime.Now, + CreateTime = DateTime.Now, + }; + await _database.InsertAsync(newUser); + } + + if (cookies.Id != 0) + return await _database.UpdateAsync(cookies); + else + return await _database.InsertAsync(cookies); + } + + public async Task DeleteCookiesAsync(Cookies cookies) + { + await Init(); + return await _database!.DeleteAsync(cookies); + } + + public async Task DeleteCookiesByUidAsync(long uid) + { + await Init(); + return await _database!.Table() + .DeleteAsync(i => i.Uid == uid); + } + + public async Task> GetCookiesAsync(long uid) + { + await Init(); + return await _database!.Table() + .Where(i => i.Uid == uid) + .ToListAsync(); + } + +} \ No newline at end of file diff --git a/src/Downkyi.Core/Database/Login/Users.cs b/src/Downkyi.Core/Database/Login/Users.cs new file mode 100644 index 0000000..e6ac26d --- /dev/null +++ b/src/Downkyi.Core/Database/Login/Users.cs @@ -0,0 +1,21 @@ +using SQLite; + +namespace Downkyi.Core.Database.Login; + +[Table("users")] +public class Users +{ + [PrimaryKey, AutoIncrement] + [Column("id")] + public long Id { get; set; } + + [Indexed, Unique] + [Column("uid")] + public long Uid { get; set; } + + [Column("update_time")] + public DateTime UpdateTime { get; set; } = DateTime.Now; + + [Column("create_time")] + public DateTime CreateTime { get; set; } = DateTime.Now; +} \ No newline at end of file diff --git a/src/Downkyi.Core/Downkyi.Core.csproj b/src/Downkyi.Core/Downkyi.Core.csproj index af33c39..18e0499 100644 --- a/src/Downkyi.Core/Downkyi.Core.csproj +++ b/src/Downkyi.Core/Downkyi.Core.csproj @@ -12,8 +12,7 @@ - - +