mirror of
https://gitee.com/dromara/electron-egg.git
synced 2026-05-14 19:52:10 +08:00
113 lines
2.4 KiB
JavaScript
113 lines
2.4 KiB
JavaScript
'use strict';
|
|
|
|
const { BasedbService } = require('./basedb');
|
|
const _ = require('lodash');
|
|
|
|
/**
|
|
* sqlite数据存储
|
|
* @class
|
|
*/
|
|
class SqlitedbService extends BasedbService {
|
|
|
|
constructor () {
|
|
const options = {
|
|
dbname: 'sqlite-demo.db',
|
|
}
|
|
super(options);
|
|
this.userTableName = 'user';
|
|
this._initTable();
|
|
}
|
|
|
|
/*
|
|
* 初始化表
|
|
*/
|
|
_initTable() {
|
|
// 检查表是否存在
|
|
const masterStmt = this.db.prepare('SELECT * FROM sqlite_master WHERE type=? AND name = ?');
|
|
let tableExists = masterStmt.get('table', this.userTableName);
|
|
if (!tableExists) {
|
|
// 创建表
|
|
const create_user_table_sql =
|
|
`CREATE TABLE ${this.userTableName}
|
|
(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name CHAR(50) NOT NULL,
|
|
age INT
|
|
);`
|
|
this.db.exec(create_user_table_sql);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* 增 Test data (sqlite)
|
|
*/
|
|
async addTestDataSqlite(data) {
|
|
const insert = this.db.prepare(`INSERT INTO ${this.userTableName} (name, age) VALUES (@name, @age)`);
|
|
insert.run(data);
|
|
return true;
|
|
}
|
|
|
|
/*
|
|
* 删 Test data (sqlite)
|
|
*/
|
|
async delTestDataSqlite(name = '') {
|
|
const delUser = this.db.prepare(`DELETE FROM ${this.userTableName} WHERE name = ?`);
|
|
delUser.run(name);
|
|
return true;
|
|
}
|
|
|
|
/*
|
|
* 改 Test data (sqlite)
|
|
*/
|
|
async updateTestDataSqlite(name= '', age = 0) {
|
|
const updateUser = this.db.prepare(`UPDATE ${this.userTableName} SET age = ? WHERE name = ?`);
|
|
updateUser.run(age, name);
|
|
return true;
|
|
}
|
|
|
|
/*
|
|
* 查 Test data (sqlite)
|
|
*/
|
|
async getTestDataSqlite(age = 0) {
|
|
const selectUser = this.db.prepare(`SELECT * FROM ${this.userTableName} WHERE age = @age`);
|
|
const users = selectUser.all({age: age});
|
|
return users;
|
|
}
|
|
|
|
/*
|
|
* all Test data (sqlite)
|
|
*/
|
|
async getAllTestDataSqlite() {
|
|
const selectAllUser = this.db.prepare(`SELECT * FROM ${this.userTableName} `);
|
|
const allUser = selectAllUser.all();
|
|
return allUser;
|
|
}
|
|
|
|
/*
|
|
* get data dir (sqlite)
|
|
*/
|
|
async getDataDir() {
|
|
const dir = this.storage.getDbDir();
|
|
return dir;
|
|
}
|
|
|
|
/*
|
|
* set custom data dir (sqlite)
|
|
*/
|
|
async setCustomDataDir(dir) {
|
|
if (_.isEmpty(dir)) {
|
|
return;
|
|
}
|
|
|
|
this.changeDataDir(dir);
|
|
this._initTable();
|
|
return;
|
|
}
|
|
}
|
|
|
|
SqlitedbService.toString = () => '[class SqlitedbService]';
|
|
module.exports = {
|
|
SqlitedbService,
|
|
sqlitedbService: new SqlitedbService()
|
|
};
|