diff --git a/BetterGenshinImpact/BetterGenshinImpact.csproj b/BetterGenshinImpact/BetterGenshinImpact.csproj index ae240f04..38f7eab7 100644 --- a/BetterGenshinImpact/BetterGenshinImpact.csproj +++ b/BetterGenshinImpact/BetterGenshinImpact.csproj @@ -80,6 +80,9 @@ + + + diff --git a/BetterGenshinImpact/Model/Database/ApplicationDbContext.cs b/BetterGenshinImpact/Model/Database/ApplicationDbContext.cs new file mode 100644 index 00000000..e3df9358 --- /dev/null +++ b/BetterGenshinImpact/Model/Database/ApplicationDbContext.cs @@ -0,0 +1,25 @@ +using System.IO; +using BetterGenshinImpact.Core.Config; +using Microsoft.EntityFrameworkCore; + +namespace BetterGenshinImpact.Model.Database +{ + public class ApplicationDbContext : DbContext + { + public DbSet TaskLists { get; set; } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + var dbPath = Path.Combine(Global.Absolute("User\\db"), "Data", "bgi_user.db"); + Directory.CreateDirectory(Path.GetDirectoryName(dbPath)!); + optionsBuilder.UseSqlite($"Data Source={dbPath}"); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity() + .HasIndex(t => t.OrderIndex) + .IsUnique(); + } + } +} \ No newline at end of file diff --git a/BetterGenshinImpact/Model/Database/TaskList.cs b/BetterGenshinImpact/Model/Database/TaskList.cs new file mode 100644 index 00000000..10037cbc --- /dev/null +++ b/BetterGenshinImpact/Model/Database/TaskList.cs @@ -0,0 +1,51 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace BetterGenshinImpact.Model.Database +{ + [Table("task_list")] + public class TaskList + { + [Key] + [Column("id")] + public int Id { get; set; } + + [Column("order_index")] + public int OrderIndex { get; set; } + + [Column("task_name")] + [Required] + [MaxLength(255)] + public string TaskName { get; set; } = string.Empty; + + [Column("task_params")] + public string? TaskParams { get; set; } + + [Column("schedule_expression")] + [MaxLength(255)] + public string? ScheduleExpression { get; set; } + + [Column("schedule_type")] + [MaxLength(50)] + public string? ScheduleType { get; set; } + + [Column("next_run_time")] + public DateTime? NextRunTime { get; set; } + + [Column("last_run_time")] + public DateTime? LastRunTime { get; set; } + + [Column("hotkey")] + [MaxLength(50)] + public string? Hotkey { get; set; } + + [Column("hotkey_")] + [MaxLength(50)] + public string? Hotkey2 { get; set; } + + [Column("category")] + [MaxLength(50)] + public string? Category { get; set; } + } +} \ No newline at end of file