< Summary

Information
Class: CounterDrone.Core.DatabaseManager
Assembly: CounterDrone.Core
File(s): C:\Users\Tellme\apps\CounterDroneBackend\src\CounterDrone.Core\DatabaseManager.cs
Line coverage
100%
Covered lines: 44
Uncovered lines: 0
Coverable lines: 44
Total lines: 69
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
OpenMainDb()100%11100%
OpenFrameDb(...)100%11100%
DeleteFrameDb(...)100%22100%
CreateMainTables(...)100%11100%

File(s)

C:\Users\Tellme\apps\CounterDroneBackend\src\CounterDrone.Core\DatabaseManager.cs

#LineLine coverage
 1using System.IO;
 2using CounterDrone.Core.Models;
 3using SQLite;
 4
 5namespace CounterDrone.Core
 6{
 7    /// <summary>数据库管理器 — 建表 / 连接管理</summary>
 8    public class DatabaseManager
 9    {
 10        private readonly IPathProvider _paths;
 11
 6212        public DatabaseManager(IPathProvider paths)
 6213        {
 6214            _paths = paths;
 6215        }
 16
 17        /// <summary>初始化主数据库(建表)</summary>
 18        public SQLiteConnection OpenMainDb()
 6119        {
 6120            var dbPath = _paths.GetMainDbPath();
 6121            var db = new SQLiteConnection(dbPath);
 6122            CreateMainTables(db);
 6123            return db;
 6124        }
 25
 26        /// <summary>创建/打开任务帧数据库</summary>
 27        public SQLiteConnection OpenFrameDb(string taskId)
 228        {
 229            var dbPath = Path.Combine(_paths.GetFramesDir(), $"{taskId}.db");
 230            var db = new SQLiteConnection(dbPath);
 231            db.CreateTable<SimFrameRecord>();
 232            db.CreateIndex("SimFrameRecord", new[] { "TaskId", "FrameIndex" });
 233            return db;
 234        }
 35
 36        /// <summary>删除任务帧数据库文件</summary>
 37        public void DeleteFrameDb(string taskId)
 138        {
 139            var dbPath = Path.Combine(_paths.GetFramesDir(), $"{taskId}.db");
 140            if (File.Exists(dbPath))
 141                File.Delete(dbPath);
 142        }
 43
 44        private void CreateMainTables(SQLiteConnection db)
 6145        {
 6146            db.CreateTable<ModelInfo>();
 6147            db.CreateTable<AmmunitionSpec>();
 6148            db.CreateTable<SimTask>();
 6149            db.CreateTable<CombatScene>();
 6150            db.CreateTable<ControlZone>();
 6151            db.CreateTable<TargetConfig>();
 6152            db.CreateTable<EquipmentDeployment>();
 6153            db.CreateTable<CloudDispersal>();
 6154            db.CreateTable<RoutePlan>();
 6155            db.CreateTable<Waypoint>();
 6156            db.CreateTable<Group>();
 6157            db.CreateTable<SimulationReport>();
 6158            db.CreateTable<SimEvent>();
 59
 6160            db.CreateIndex("SimTask", "TaskNumber");
 6161            db.CreateIndex("ControlZone", "TaskId");
 6162            db.CreateIndex("TargetConfig", "TaskId");
 6163            db.CreateIndex("EquipmentDeployment", "TaskId");
 6164            db.CreateIndex("Waypoint", "TaskId");
 6165            db.CreateIndex("SimEvent", "TaskId");
 6166            db.CreateIndex("SimulationReport", "TaskId");
 6167        }
 68    }
 69}