index copy.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { SQLite } from "@/plugins/tauri-plugin-sqlite";
  2. import { createSql } from "./createTableSql";
  3. import { TableName } from "@/types/table";
  4. import {fileFileds} from './addFiledInTable'
  5. export const table_init = async (dbName: string, tableName: TableName) => {
  6. const dbversion = await SQLite.open(dbName);
  7. //查询是否有该表
  8. const rows = await dbversion.queryWithArgs<Array<{ count: number }>>(
  9. `SELECT count(1) count FROM sqlite_master WHERE type='table' and name = '${tableName}' `
  10. );
  11. if (!!rows && rows.length > 0 && rows[0].count > 0) {
  12. } else {
  13. //创建表
  14. await dbversion.execute(createSql[tableName]);
  15. }
  16. };
  17. export const table_add_filed = async (tableName: string, dbName: string, addFileFileds: any[]) => {
  18. const dbversion = await SQLite.open(dbName);
  19. // 依据版本增加
  20. const addField = await Promise.allSettled(addFileFileds.map(async (item) => {
  21. try {
  22. const is_field = await is_field_in_table(item.key, tableName, dbName);
  23. if(!is_field) {
  24. return await dbversion.execute(item.sql.replace('{tableName}', tableName))
  25. }
  26. } catch (err) {
  27. console.log('table_add_filed 出现bug::', err);
  28. }
  29. return true
  30. }))
  31. console.log(4545, addField);
  32. }
  33. export const is_field_in_table = async (fidld: string, tableName: string, dbName: string) => {
  34. // 不能为空
  35. if (!fidld || !tableName || !dbName) {
  36. return Promise.reject('必填数据不能为空');
  37. }
  38. try {
  39. const dbversion = await SQLite.open(dbName);
  40. const fidldList: any[] = await dbversion.queryWithArgs(`SELECT * FROM sqlite_master WHERE type='table' AND name='${tableName}' AND sql LIKE '%${fidld}%'`);
  41. console.log(5656, fidldList);
  42. if(fidldList.length) {
  43. // 字段存在
  44. return Promise.resolve(true);
  45. }
  46. // 字段不存在
  47. return Promise.resolve(false);
  48. } catch (error) {
  49. return Promise.reject('查询失败');
  50. }
  51. }
  52. export const DB = async (dbName: string) => await SQLite.open(dbName);