feat 添加数据库模块
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
import DB from '@/utils/sqlite'
|
||||
|
||||
// 导入可删但爆红, 可正常运行
|
||||
import { projectTableSql } from './project'
|
||||
import { rtkTrackTableSql } from './rtkTrack'
|
||||
import { warningRecordTableSql } from './warningRecord'
|
||||
@@ -11,19 +9,20 @@ export { rtkTrackTableSql } from './rtkTrack'
|
||||
export { warningRecordTableSql } from './warningRecord'
|
||||
export { workRecordTableSql } from './workRecord'
|
||||
|
||||
const tableSqls = [
|
||||
projectTableSql,
|
||||
workRecordTableSql,
|
||||
rtkTrackTableSql,
|
||||
warningRecordTableSql,
|
||||
]
|
||||
|
||||
/**
|
||||
* 初始化数据库
|
||||
*/
|
||||
export async function initTables() {
|
||||
const sqls = [
|
||||
projectTableSql,
|
||||
workRecordTableSql,
|
||||
rtkTrackTableSql,
|
||||
warningRecordTableSql,
|
||||
]
|
||||
|
||||
try {
|
||||
await DB.transaction(sqls)
|
||||
console.log('开始初始化数据库表...')
|
||||
await DB.transaction(tableSqls)
|
||||
console.log('数据库表初始化成功')
|
||||
}
|
||||
catch (err) {
|
||||
|
||||
@@ -72,8 +72,16 @@ class DB {
|
||||
resolve()
|
||||
},
|
||||
fail(err: any) {
|
||||
console.error('数据库打开失败:', err)
|
||||
reject(err)
|
||||
// -1402: Same Name Already Open,数据库已打开则视为成功
|
||||
if (err?.code === -1402) {
|
||||
console.log('数据库已打开,跳过')
|
||||
isOpen = true
|
||||
resolve()
|
||||
}
|
||||
else {
|
||||
console.error('数据库打开失败:', err)
|
||||
reject(err)
|
||||
}
|
||||
},
|
||||
})
|
||||
})
|
||||
@@ -147,25 +155,65 @@ class DB {
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行事务
|
||||
* 执行事务(BEGIN → SQLs → COMMIT,失败自动 ROLLBACK)
|
||||
*/
|
||||
static transaction(sqls: string[]): Promise<void> {
|
||||
return DB.open().then(() => {
|
||||
return new Promise((resolve, reject) => {
|
||||
static async transaction(sqls: string[]): Promise<void> {
|
||||
await DB.open()
|
||||
|
||||
// 开启事务
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
plus.sqlite.transaction({
|
||||
name: DB_NAME,
|
||||
operation: 'begin',
|
||||
success() {
|
||||
resolve()
|
||||
},
|
||||
fail(err: any) {
|
||||
console.error('开启事务失败:', err)
|
||||
reject(err)
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
try {
|
||||
// 逐条执行 SQL
|
||||
for (const sql of sqls) {
|
||||
await DB.executeSql(sql)
|
||||
}
|
||||
|
||||
// 提交事务
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
plus.sqlite.transaction({
|
||||
name: DB_NAME,
|
||||
sql: sqls,
|
||||
operation: 'commit',
|
||||
success() {
|
||||
console.log('事务执行成功')
|
||||
console.log('事务提交成功')
|
||||
resolve()
|
||||
},
|
||||
fail(err: any) {
|
||||
console.error('事务执行失败:', err)
|
||||
console.error('提交事务失败:', err)
|
||||
reject(err)
|
||||
},
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
catch (err) {
|
||||
// 回滚事务
|
||||
await new Promise<void>((resolve) => {
|
||||
plus.sqlite.transaction({
|
||||
name: DB_NAME,
|
||||
operation: 'rollback',
|
||||
success() {
|
||||
console.log('事务回滚成功')
|
||||
resolve()
|
||||
},
|
||||
fail() {
|
||||
resolve()
|
||||
},
|
||||
})
|
||||
})
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
// ======================== CRUD 封装方法 ========================
|
||||
|
||||
46
vite.config.ts.timestamp-1788943664167-e7e01738caae4.mjs
Normal file
46
vite.config.ts.timestamp-1788943664167-e7e01738caae4.mjs
Normal file
@@ -0,0 +1,46 @@
|
||||
// vite.config.ts
|
||||
import Uni from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/@uni-helper+plugin-uni@0.1.0_@dcloudio+vite-plugin-uni@3.0.0-4080720251210001_@vueuse+core@13_le5bumlafdzre2on4j245qmxce/node_modules/@uni-helper/plugin-uni/src/index.js";
|
||||
import UniHelperComponents from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/@uni-helper+vite-plugin-uni-components@0.2.3_rollup@4.59.0/node_modules/@uni-helper/vite-plugin-uni-components/dist/index.mjs";
|
||||
import UniHelperLayouts from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/@uni-helper+vite-plugin-uni-layouts@0.1.11_rollup@4.59.0/node_modules/@uni-helper/vite-plugin-uni-layouts/dist/index.mjs";
|
||||
import UniHelperManifest from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/@uni-helper+vite-plugin-uni-manifest@0.2.9_vite@5.2.8_@types+node@24.1.0_sass@1.103.1_terser@5.37.0_/node_modules/@uni-helper/vite-plugin-uni-manifest/dist/index.mjs";
|
||||
import UniHelperPages from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/@uni-helper+vite-plugin-uni-pages@0.3.19_vite@5.2.8_@types+node@24.1.0_sass@1.103.1_terser@5.37.0_/node_modules/@uni-helper/vite-plugin-uni-pages/dist/index.mjs";
|
||||
import { UniEchartsResolver } from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/uni-echarts@2.5.2_echarts@6.1.0_vue@3.4.21_typescript@5.8.3_/node_modules/uni-echarts/dist-resolver/index.mjs";
|
||||
import UnoCSS from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/unocss@66.0.0_postcss@8.5.6_vite@5.2.8_@types+node@24.1.0_sass@1.103.1_terser@5.37.0__vue@3.4.21_typescript@5.8.3_/node_modules/unocss/dist/vite.mjs";
|
||||
import AutoImport from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/unplugin-auto-import@19.3.0_@vueuse+core@13.5.0_vue@3.4.21_typescript@5.8.3__/node_modules/unplugin-auto-import/dist/vite.js";
|
||||
import { defineConfig } from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/vite@5.2.8_@types+node@24.1.0_sass@1.103.1_terser@5.37.0/node_modules/vite/dist/node/index.js";
|
||||
import UniPolyfill from "file:///C:/Users/Administrator/Desktop/work/Road_roller/node_modules/.pnpm/vite-plugin-uni-polyfill@0.1.0/node_modules/vite-plugin-uni-polyfill/dist/index.mjs";
|
||||
var vite_config_default = defineConfig({
|
||||
plugins: [
|
||||
// https://uni-helper.js.org/vite-plugin-uni-manifest
|
||||
UniHelperManifest(),
|
||||
// https://uni-helper.js.org/vite-plugin-uni-pages
|
||||
UniHelperPages({
|
||||
dts: "src/uni-pages.d.ts"
|
||||
}),
|
||||
// https://uni-helper.js.org/vite-plugin-uni-layouts
|
||||
UniHelperLayouts(),
|
||||
// https://uni-helper.js.org/vite-plugin-uni-components
|
||||
UniHelperComponents({
|
||||
dts: "src/components.d.ts",
|
||||
directoryAsNamespace: true,
|
||||
resolvers: [UniEchartsResolver()]
|
||||
}),
|
||||
// https://uni-helper.js.org/plugin-uni
|
||||
Uni(),
|
||||
UniPolyfill(),
|
||||
// https://github.com/antfu/unplugin-auto-import
|
||||
AutoImport({
|
||||
imports: ["vue", "@vueuse/core", "uni-app"],
|
||||
dts: "src/auto-imports.d.ts",
|
||||
dirs: ["src/composables", "src/stores", "src/utils"],
|
||||
vueTemplate: true
|
||||
}),
|
||||
// https://github.com/antfu/unocss
|
||||
// see unocss.config.ts for config
|
||||
UnoCSS()
|
||||
]
|
||||
});
|
||||
export {
|
||||
vite_config_default as default
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFxBZG1pbmlzdHJhdG9yXFxcXERlc2t0b3BcXFxcd29ya1xcXFxSb2FkX3JvbGxlclwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcQWRtaW5pc3RyYXRvclxcXFxEZXNrdG9wXFxcXHdvcmtcXFxcUm9hZF9yb2xsZXJcXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0M6L1VzZXJzL0FkbWluaXN0cmF0b3IvRGVza3RvcC93b3JrL1JvYWRfcm9sbGVyL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IFVuaSBmcm9tICdAdW5pLWhlbHBlci9wbHVnaW4tdW5pJ1xuaW1wb3J0IFVuaUhlbHBlckNvbXBvbmVudHMgZnJvbSAnQHVuaS1oZWxwZXIvdml0ZS1wbHVnaW4tdW5pLWNvbXBvbmVudHMnXG5pbXBvcnQgVW5pSGVscGVyTGF5b3V0cyBmcm9tICdAdW5pLWhlbHBlci92aXRlLXBsdWdpbi11bmktbGF5b3V0cydcbmltcG9ydCBVbmlIZWxwZXJNYW5pZmVzdCBmcm9tICdAdW5pLWhlbHBlci92aXRlLXBsdWdpbi11bmktbWFuaWZlc3QnXG5pbXBvcnQgVW5pSGVscGVyUGFnZXMgZnJvbSAnQHVuaS1oZWxwZXIvdml0ZS1wbHVnaW4tdW5pLXBhZ2VzJ1xuaW1wb3J0IHsgVW5pRWNoYXJ0c1Jlc29sdmVyIH0gZnJvbSAndW5pLWVjaGFydHMvcmVzb2x2ZXInXG5pbXBvcnQgVW5vQ1NTIGZyb20gJ3Vub2Nzcy92aXRlJ1xuaW1wb3J0IEF1dG9JbXBvcnQgZnJvbSAndW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZSdcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgVW5pUG9seWZpbGwgZnJvbSAndml0ZS1wbHVnaW4tdW5pLXBvbHlmaWxsJ1xuXG4vLyBodHRwczovL3ZpdGVqcy5kZXYvY29uZmlnL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcGx1Z2luczogW1xuICAgIC8vIGh0dHBzOi8vdW5pLWhlbHBlci5qcy5vcmcvdml0ZS1wbHVnaW4tdW5pLW1hbmlmZXN0XG4gICAgVW5pSGVscGVyTWFuaWZlc3QoKSxcbiAgICAvLyBodHRwczovL3VuaS1oZWxwZXIuanMub3JnL3ZpdGUtcGx1Z2luLXVuaS1wYWdlc1xuICAgIFVuaUhlbHBlclBhZ2VzKHtcbiAgICAgIGR0czogJ3NyYy91bmktcGFnZXMuZC50cycsXG4gICAgfSksXG4gICAgLy8gaHR0cHM6Ly91bmktaGVscGVyLmpzLm9yZy92aXRlLXBsdWdpbi11bmktbGF5b3V0c1xuICAgIFVuaUhlbHBlckxheW91dHMoKSxcbiAgICAvLyBodHRwczovL3VuaS1oZWxwZXIuanMub3JnL3ZpdGUtcGx1Z2luLXVuaS1jb21wb25lbnRzXG4gICAgVW5pSGVscGVyQ29tcG9uZW50cyh7XG4gICAgICBkdHM6ICdzcmMvY29tcG9uZW50cy5kLnRzJyxcbiAgICAgIGRpcmVjdG9yeUFzTmFtZXNwYWNlOiB0cnVlLFxuICAgICAgcmVzb2x2ZXJzOiBbVW5pRWNoYXJ0c1Jlc29sdmVyKCldLFxuICAgIH0pLFxuICAgIC8vIGh0dHBzOi8vdW5pLWhlbHBlci5qcy5vcmcvcGx1Z2luLXVuaVxuICAgIFVuaSgpLFxuICAgIFVuaVBvbHlmaWxsKCksXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudGZ1L3VucGx1Z2luLWF1dG8taW1wb3J0XG4gICAgQXV0b0ltcG9ydCh7XG4gICAgICBpbXBvcnRzOiBbJ3Z1ZScsICdAdnVldXNlL2NvcmUnLCAndW5pLWFwcCddLFxuICAgICAgZHRzOiAnc3JjL2F1dG8taW1wb3J0cy5kLnRzJyxcbiAgICAgIGRpcnM6IFsnc3JjL2NvbXBvc2FibGVzJywgJ3NyYy9zdG9yZXMnLCAnc3JjL3V0aWxzJ10sXG4gICAgICB2dWVUZW1wbGF0ZTogdHJ1ZSxcbiAgICB9KSxcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW50ZnUvdW5vY3NzXG4gICAgLy8gc2VlIHVub2Nzcy5jb25maWcudHMgZm9yIGNvbmZpZ1xuICAgIFVub0NTUygpLFxuICBdLFxufSlcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBMlUsT0FBTyxTQUFTO0FBQzNWLE9BQU8seUJBQXlCO0FBQ2hDLE9BQU8sc0JBQXNCO0FBQzdCLE9BQU8sdUJBQXVCO0FBQzlCLE9BQU8sb0JBQW9CO0FBQzNCLFNBQVMsMEJBQTBCO0FBQ25DLE9BQU8sWUFBWTtBQUNuQixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLG9CQUFvQjtBQUM3QixPQUFPLGlCQUFpQjtBQUd4QixJQUFPLHNCQUFRLGFBQWE7QUFBQSxFQUMxQixTQUFTO0FBQUE7QUFBQSxJQUVQLGtCQUFrQjtBQUFBO0FBQUEsSUFFbEIsZUFBZTtBQUFBLE1BQ2IsS0FBSztBQUFBLElBQ1AsQ0FBQztBQUFBO0FBQUEsSUFFRCxpQkFBaUI7QUFBQTtBQUFBLElBRWpCLG9CQUFvQjtBQUFBLE1BQ2xCLEtBQUs7QUFBQSxNQUNMLHNCQUFzQjtBQUFBLE1BQ3RCLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQztBQUFBLElBQ2xDLENBQUM7QUFBQTtBQUFBLElBRUQsSUFBSTtBQUFBLElBQ0osWUFBWTtBQUFBO0FBQUEsSUFFWixXQUFXO0FBQUEsTUFDVCxTQUFTLENBQUMsT0FBTyxnQkFBZ0IsU0FBUztBQUFBLE1BQzFDLEtBQUs7QUFBQSxNQUNMLE1BQU0sQ0FBQyxtQkFBbUIsY0FBYyxXQUFXO0FBQUEsTUFDbkQsYUFBYTtBQUFBLElBQ2YsQ0FBQztBQUFBO0FBQUE7QUFBQSxJQUdELE9BQU87QUFBQSxFQUNUO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
|
||||
Reference in New Issue
Block a user