WIP: database services
This commit is contained in:
+89
-87
@@ -6,14 +6,12 @@ namespace OCES.Resonance.Core;
|
||||
|
||||
public static class Database
|
||||
{
|
||||
static readonly string DefaultConnectionString = "Data Source=default.rdb;Version=3;";
|
||||
|
||||
/// <summary>
|
||||
/// 获取数据库连接
|
||||
/// </summary>
|
||||
/// <param name="dbName">数据库名称(不含扩展名)</param>
|
||||
/// <returns>数据库连接</returns>
|
||||
public static IDbConnection GetConnection(string dbName = "default")
|
||||
static IDbConnection GetConnection(string dbName = "default")
|
||||
{
|
||||
string connectionString = $"Data Source={dbName}.rdb;Version=3;";
|
||||
return new SQLiteConnection(connectionString);
|
||||
@@ -27,91 +25,95 @@ public static class Database
|
||||
using var connection = GetConnection();
|
||||
connection.Open();
|
||||
|
||||
const string sql = @"
|
||||
CREATE TABLE IF NOT EXISTS audio_files (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
unique_id TEXT NOT NULL UNIQUE,
|
||||
short_id TEXT,
|
||||
md5 TEXT NOT NULL,
|
||||
path TEXT NOT NULL,
|
||||
filename TEXT NOT NULL,
|
||||
folder TEXT NOT NULL,
|
||||
directory TEXT NOT NULL,
|
||||
duration REAL NOT NULL,
|
||||
total_samples REAL NOT NULL,
|
||||
bit_depth INTEGER NOT NULL,
|
||||
channels INTEGER NOT NULL,
|
||||
sample_rate REAL NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
date_added TEXT NOT NULL,
|
||||
original_modification_date TEXT NOT NULL,
|
||||
origination_time TEXT NOT NULL,
|
||||
|
||||
bpm REAL,
|
||||
frame_rate TEXT,
|
||||
timecode INTEGER,
|
||||
description TEXT,
|
||||
category TEXT,
|
||||
subcategory TEXT,
|
||||
cat_id TEXT,
|
||||
category_full TEXT,
|
||||
genre TEXT,
|
||||
style TEXT,
|
||||
mood TEXT,
|
||||
keywords TEXT,
|
||||
rating INTEGER,
|
||||
artist TEXT,
|
||||
composer TEXT,
|
||||
designer TEXT,
|
||||
recordist TEXT,
|
||||
publisher TEXT,
|
||||
manufacturer TEXT,
|
||||
originator TEXT,
|
||||
originator_ref TEXT,
|
||||
project_name TEXT,
|
||||
library TEXT,
|
||||
cd_title TEXT,
|
||||
track_title TEXT,
|
||||
episode TEXT,
|
||||
scene TEXT,
|
||||
take TEXT,
|
||||
tape TEXT,
|
||||
cue_number INTEGER,
|
||||
sync_point INTEGER,
|
||||
release_date TEXT,
|
||||
track_year INTEGER,
|
||||
is_edited INTEGER,
|
||||
is_split INTEGER,
|
||||
location TEXT,
|
||||
[group] TEXT,
|
||||
markers TEXT,
|
||||
comments TEXT,
|
||||
notes TEXT,
|
||||
copyright TEXT,
|
||||
coding_history TEXT,
|
||||
microphone TEXT,
|
||||
mic_perspective TEXT,
|
||||
user1 TEXT,
|
||||
user2 TEXT,
|
||||
user3 TEXT,
|
||||
user4 TEXT,
|
||||
user5 TEXT,
|
||||
user6 TEXT,
|
||||
user7 TEXT,
|
||||
user8 TEXT,
|
||||
fx_name TEXT,
|
||||
channel_layout TEXT,
|
||||
bwf_umid BLOB,
|
||||
disk_number INTEGER,
|
||||
track_number INTEGER,
|
||||
artwork BLOB,
|
||||
waveform BLOB,
|
||||
const string sql = """
|
||||
|
||||
INDEX idx_md5 (md5),
|
||||
INDEX idx_path (path),
|
||||
INDEX idx_unique_id (unique_id)
|
||||
);
|
||||
";
|
||||
CREATE TABLE IF NOT EXISTS audio_files (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
unique_id TEXT NOT NULL UNIQUE,
|
||||
short_id TEXT,
|
||||
md5 TEXT NOT NULL,
|
||||
path TEXT NOT NULL,
|
||||
filename TEXT NOT NULL,
|
||||
folder TEXT NOT NULL,
|
||||
directory TEXT NOT NULL,
|
||||
duration REAL NOT NULL,
|
||||
total_samples REAL NOT NULL,
|
||||
bit_depth INTEGER NOT NULL,
|
||||
channels INTEGER NOT NULL,
|
||||
sample_rate REAL NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
date_added TEXT NOT NULL,
|
||||
original_modification_date TEXT NOT NULL,
|
||||
origination_time TEXT NOT NULL,
|
||||
|
||||
bpm REAL,
|
||||
frame_rate TEXT,
|
||||
timecode INTEGER,
|
||||
description TEXT,
|
||||
category TEXT,
|
||||
subcategory TEXT,
|
||||
cat_id TEXT,
|
||||
category_full TEXT,
|
||||
genre TEXT,
|
||||
style TEXT,
|
||||
mood TEXT,
|
||||
keywords TEXT,
|
||||
rating INTEGER,
|
||||
artist TEXT,
|
||||
composer TEXT,
|
||||
designer TEXT,
|
||||
recordist TEXT,
|
||||
publisher TEXT,
|
||||
manufacturer TEXT,
|
||||
originator TEXT,
|
||||
originator_ref TEXT,
|
||||
project_name TEXT,
|
||||
library TEXT,
|
||||
cd_title TEXT,
|
||||
track_title TEXT,
|
||||
episode TEXT,
|
||||
scene TEXT,
|
||||
take TEXT,
|
||||
tape TEXT,
|
||||
cue_number INTEGER,
|
||||
sync_point INTEGER,
|
||||
release_date TEXT,
|
||||
track_year INTEGER,
|
||||
is_edited INTEGER,
|
||||
is_split INTEGER,
|
||||
location TEXT,
|
||||
[group] TEXT,
|
||||
markers TEXT,
|
||||
comments TEXT,
|
||||
notes TEXT,
|
||||
copyright TEXT,
|
||||
coding_history TEXT,
|
||||
microphone TEXT,
|
||||
mic_perspective TEXT,
|
||||
user1 TEXT,
|
||||
user2 TEXT,
|
||||
user3 TEXT,
|
||||
user4 TEXT,
|
||||
user5 TEXT,
|
||||
user6 TEXT,
|
||||
user7 TEXT,
|
||||
user8 TEXT,
|
||||
fx_name TEXT,
|
||||
channel_layout TEXT,
|
||||
bwf_umid BLOB,
|
||||
disk_number INTEGER,
|
||||
track_number INTEGER,
|
||||
artwork BLOB,
|
||||
waveform BLOB
|
||||
);
|
||||
|
||||
CREATE INDEX idx_file_name on audio_files(filename);
|
||||
CREATE INDEX idx_md5 on audio_files(md5);
|
||||
CREATE INDEX idx_path on audio_files(path);
|
||||
CREATE INDEX idx_unique_id on audio_files(unique_id);
|
||||
CREATE INDEX idx_description on audio_files(description);
|
||||
|
||||
""";
|
||||
|
||||
connection.Execute(sql);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user