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 @@ - - +