DreamineVMS 1.0.0.0
Windows PC의 RTSP·USB 카메라 영상을 HLS로 변환해 원격 CCTV Viewer에 전달하는 데스크톱 에이전트입니다.
로딩중...
검색중...
일치하는것 없음
VmsDatabase.cs
이 파일의 문서화 페이지로 가기
1using System.IO;
2using Microsoft.Data.Sqlite;
3
5
14public sealed class VmsDatabase
15{
24 private readonly string _connectionString;
25
34 public VmsDatabase()
35 {
36 var dbPath = Path.Combine(AppContext.BaseDirectory, "vms.db");
37 _connectionString = $"Data Source={dbPath}";
38 Initialize();
39 }
40
57 public SqliteConnection Open()
58 {
59 var conn = new SqliteConnection(_connectionString);
60 conn.Open();
61 return conn;
62 }
63
72 private void Initialize()
73 {
74 using var conn = Open();
75 using var cmd = conn.CreateCommand();
76 cmd.CommandText = """
77 CREATE TABLE IF NOT EXISTS users (
78 id TEXT PRIMARY KEY,
79 email TEXT UNIQUE NOT NULL,
80 display_name TEXT NOT NULL,
81 public_slug TEXT UNIQUE NOT NULL,
82 password_hash TEXT NOT NULL,
83 password_salt TEXT NOT NULL,
84 created_at TEXT NOT NULL
85 );
86
87 CREATE TABLE IF NOT EXISTS cameras (
88 id TEXT PRIMARY KEY,
89 tenant_id TEXT NOT NULL,
90 name TEXT NOT NULL,
91 host TEXT NOT NULL,
92 rtsp_url TEXT NOT NULL,
93 display_order INTEGER NOT NULL DEFAULT 0,
94 enabled INTEGER NOT NULL DEFAULT 1,
95 auto_reconnect INTEGER NOT NULL DEFAULT 1,
96 is_public INTEGER NOT NULL DEFAULT 0
97 );
98 """;
99 cmd.ExecuteNonQuery();
100
101 // 기존 DB에 is_public 컬럼이 없으면 추가 (마이그레이션)
102 using var alter = conn.CreateCommand();
103 alter.CommandText = "ALTER TABLE cameras ADD COLUMN is_public INTEGER NOT NULL DEFAULT 0";
104 try { alter.ExecuteNonQuery(); } catch { /* 이미 있으면 무시 */ }
105 }
106}