123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- import { getDatabaseDir } from "./env";
- import { formatDate } from "./utils";
- const path = require("path");
- const fs = require("fs");
- const sqlite = require("sqlite3").verbose();
- let db = undefined;
- init();
- function init(sqlName = "client") {
- if (db) return;
- const databasePath = getDatabaseDir();
- var orgDb = path.join(databasePath, "org.rdb");
- var clientDb = path.join(databasePath, sqlName + ".rdb");
- if (!fs.existsSync(clientDb)) {
- fs.copyFileSync(orgDb, clientDb);
- }
- db = new sqlite.Database(clientDb, sqlite.OPEN_READWRITE);
- }
- function serializeWhere(params) {
- const where = Object.keys(params)
- .map(key => {
- if (key.indexOf("Time") !== -1) {
- return `${key} LIKE $${key}`;
- } else {
- return `${key} = $${key}`;
- }
- })
- .join(" AND ");
- const whereData = {};
- Object.entries(params).map(([key, val]) => {
- whereData[`$${key}`] = key.indexOf("Time") !== -1 ? `${val}%` : val;
- });
- return {
- where,
- whereData
- };
- }
- // function serializeUpdate(params) {
- // const template = Object.keys(params)
- // .map(key => {
- // return `${key}=$${key}`;
- // })
- // .join(",");
- // const templateData = {};
- // Object.entries(params).map(([key, val]) => {
- // templateData[`$${key}`] = val;
- // });
- // return {
- // template,
- // templateData
- // };
- // }
- // scan
- function saveUploadInfo(params) {
- const sql = `INSERT INTO scan (taskId, taskName, courseCode, courseName, teachingClassName, frontOriginImgPath, versoOriginImgPath, clientUserId, clientUsername, clientUserLoginTime, isUpload,createdTime, finishTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)`;
- const datas = [
- params.taskId,
- params.taskName,
- params.courseCode,
- params.courseName,
- params.teachingClassName,
- params.frontOriginImgPath,
- params.versoOriginImgPath,
- params.clientUserId,
- params.clientUsername,
- params.clientUserLoginTime,
- 0, // isUpload
- formatDate(), // createdTime
- null
- ];
- return new Promise((resolve, reject) => {
- db.serialize(() => {
- db.run(sql, datas, function(err) {
- if (err) reject(err);
- resolve(this.lastID);
- });
- });
- });
- }
- function searchUploadList(params) {
- const { where, whereData } = serializeWhere(params);
- const sql = `SELECT * FROM scan WHERE ${where}`;
- return new Promise((resolve, reject) => {
- db.all(sql, whereData, (err, rows) => {
- if (err) reject("search info fail!");
- resolve(rows);
- });
- });
- }
- function countScanList(params) {
- const { where, whereData } = serializeWhere(params);
- const sql = `SELECT COUNT(1) AS count FROM scan WHERE ${where}`;
- return new Promise((resolve, reject) => {
- db.all(sql, whereData, (err, rows) => {
- if (err) reject("count list fail!");
- resolve(rows[0].count);
- });
- });
- }
- function getUploadCount(limitTime) {
- const sql = `SELECT COUNT(1) AS count FROM scan WHERE strftime('%s',finishTime, 'utc') >= '${limitTime}' AND isUpload = 1`;
- return new Promise((resolve, reject) => {
- db.all(sql, (err, rows) => {
- if (err) reject("count list fail!");
- resolve(rows[0].count);
- });
- });
- }
- function updateUploadState(id) {
- const sql = `UPDATE scan SET isUpload=$isUpload,finishTime=$finishTime WHERE id=$id`;
- const datas = {
- $isUpload: 1,
- $finishTime: formatDate(),
- $id: id
- };
- return new Promise((resolve, reject) => {
- db.run(sql, datas, err => {
- if (err) reject("update upload info fail!");
- resolve();
- });
- });
- }
- function deleteScanById(id) {
- const sql = `DELETE FROM scan WHERE id=$id`;
- const datas = {
- $id: id
- };
- return new Promise((resolve, reject) => {
- db.run(sql, datas, err => {
- if (err) reject("delete scan fail!");
- resolve(true);
- });
- });
- }
- // dict
- function getAllDict() {
- const sql = `SELECT * FROM dict`;
- return new Promise((resolve, reject) => {
- db.all(sql, (err, rows) => {
- if (err) reject("get all dict fail!");
- const storeDict = {};
- rows.map(item => {
- storeDict[item.key] = item.val;
- });
- resolve(storeDict);
- });
- });
- }
- function initDict(key, val = "") {
- const sql = `INSERT INTO dict (key, val) VALUES (?,?)`;
- const datas = [key, val];
- return new Promise((resolve, reject) => {
- db.run(sql, datas, err => {
- if (err) reject(`init dict ${key} fail!`);
- resolve();
- });
- });
- }
- function getDict(key, defaultVal = "") {
- const sql = `SELECT * FROM dict WHERE key=?`;
- return new Promise((resolve, reject) => {
- db.get(sql, key, (err, row) => {
- if (err) reject(`get dict ${key} fail!`);
- resolve((row && row.val) || defaultVal);
- });
- });
- }
- function setDict(key, val) {
- const sql = `UPDATE dict SET val=? WHERE key=?`;
- return new Promise((resolve, reject) => {
- db.run(sql, [val, key], err => {
- if (err) reject(`update dict ${key} fail!`);
- resolve(true);
- });
- });
- }
- export default {
- init,
- // scan
- saveUploadInfo,
- searchUploadList,
- countScanList,
- getUploadCount,
- updateUploadState,
- deleteScanById,
- // dict
- getDict,
- setDict,
- getAllDict,
- initDict
- };
|