DawnLauncher/electron/main/setting/data.ts

86 lines
1.8 KiB
TypeScript

import { Setting } from "../../../types/setting";
import { getSetting } from "../../../commons/utils/setting";
import { getDataSqlite3 } from "../../commons/betterSqlite3";
import { app } from "electron";
// 获取数据库
let db = getDataSqlite3();
// 设置表名
let settingTableName = "setting";
/**
* 初始化
*/
function init() {
// sql
let sql = `CREATE TABLE IF NOT EXISTS ${settingTableName} (
id INTEGER PRIMARY KEY AUTOINCREMENT,
setting TEXT NOT NULL)`;
// 运行
db.exec(sql);
// 如果无数据的话,初始化
let setting = select();
if (setting) {
global.setting = setting;
} else {
setting = getSetting(null);
if (add(setting)) {
global.setting = setting;
}
}
}
/**
* 查询
*/
function select() {
// sql
let sql = `SELECT setting FROM ${settingTableName} WHERE id = 1`;
// 运行
let row: any = db.prepare(sql).get();
// 返回
if (row && row.setting) {
return getSetting(JSON.parse(row.setting));
} else {
return null;
}
}
/**
* 添加
*/
function add(setting: Setting) {
// SQL
let sql = `INSERT INTO ${settingTableName}
(id, setting)
VALUES (?, ?)`;
// 运行
let id = db.prepare(sql).run(1, JSON.stringify(setting)).lastInsertRowid;
if (id) {
global.setting = setting;
// 添加设置被视为首次打开软件
global.first = true;
return true;
}
return false;
}
/**
* 更新
*/
function update(setting: Setting) {
// SQL
let sql = `UPDATE ${settingTableName}
SET setting = ?
WHERE id = ?`;
// 运行
let res = db.prepare(sql).run(JSON.stringify(setting), 1).changes > 0;
if (res) {
global.setting = setting;
}
return res;
}
export { init, select, add, update };