DreamineVMS.Web 1.0.0.0
DreamineVMS 에이전트가 제공하는 HLS 카메라 영상을 브라우저에서 관리·재생하는 원격 CCTV 웹 서비스입니다.
로딩중...
검색중...
일치하는것 없음
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 마이그레이션 (컬럼이 이미 있으면 무시)
102 foreach (var ddl in new[]
103 {
104 "ALTER TABLE cameras ADD COLUMN is_public INTEGER NOT NULL DEFAULT 0",
105 "ALTER TABLE users ADD COLUMN live_layout TEXT NOT NULL DEFAULT 'auto'",
106 "ALTER TABLE users ADD COLUMN og_title TEXT NOT NULL DEFAULT ''",
107 "ALTER TABLE users ADD COLUMN og_description TEXT NOT NULL DEFAULT ''",
108 "ALTER TABLE users ADD COLUMN og_image TEXT NOT NULL DEFAULT ''"
109 })
110 {
111 using var alter = conn.CreateCommand();
112 alter.CommandText = ddl;
113 try { alter.ExecuteNonQuery(); } catch { }
114 }
115 }
116}