From 5891206952e2ff63e87aed2f47df5324b019d32e Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 25 十月 2022 00:39:38 +0800
Subject: [PATCH] 2022-10-25

---
 src/menu/sysinterface/index.jsx |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/src/menu/sysinterface/index.jsx b/src/menu/sysinterface/index.jsx
index 5269b49..240fea2 100644
--- a/src/menu/sysinterface/index.jsx
+++ b/src/menu/sysinterface/index.jsx
@@ -160,8 +160,44 @@
   changeScripts = (interfaces) => {
     const { config } = this.props
 
+    interfaces = interfaces.map(item => {
+      item.$tables = this.getTables(item)
+      return item
+    })
+
     this.setState({ interfaces })
     this.props.updateConfig({...config, interfaces})
+  }
+
+  getTables = (record) => {
+    let tables = []
+    let cuts = []
+    let cutreg = /(from|update|insert\s+into)\s+(@db@)?[a-z_]+/ig
+    let trimreg = /(from|update|insert\s+into)\s+(@db@)?/ig
+
+    if (record.setting.interType === 'system') {
+      if (record.setting.execute !== 'false') {
+        let tbs = record.setting.dataresource.match(cutreg)
+        tbs && cuts.push(...tbs)
+      }
+      record.scripts && record.scripts.forEach(script => {
+        if (script.status === 'false') return
+        let tbs = script.sql.match(cutreg)
+        tbs && cuts.push(...tbs)
+      })
+    } else {
+      let tb = record.setting.tableName.replace(/@db@|\s+/ig, '')
+      if (/[a-z_]+/ig.test(tb)) {
+        tables.push(tb)
+      }
+    }
+
+    cuts = cuts.map(item => item.replace(trimreg, ''))
+    tables.push(...cuts)
+    tables = tables.filter(Boolean)
+    tables = Array.from(new Set(tables))
+
+    return tables
   }
 
   update = (record) => {
@@ -173,6 +209,7 @@
       record.status = 'false'
     }
     record.name = record.setting.name
+    record.$tables = this.getTables(record)
 
     let interfaces = this.state.interfaces.map(item => {
       if (item.uuid !== record.uuid) {

--
Gitblit v1.8.0