gitextract_docf9pkb/ ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ ├── optimized.md │ │ └── suggest.md │ └── workflows/ │ ├── pushdocker.yml │ ├── release.yml │ ├── release_test.yml │ └── release_test_2.yml ├── .gitignore ├── .vscode/ │ └── settings.json ├── CHANGELOG.md ├── CHANGELOG_CN.md ├── CHAT2DB_AI_SQL.md ├── Chat2DB_LICENSE ├── LICENSE ├── README.md ├── README_CN.md ├── README_JA.md ├── chat2db-client/ │ ├── .eslintrc.js │ ├── .gitignore │ ├── .npmrc │ ├── .prettierignore │ ├── .prettierrc │ ├── .umirc.prod.desktop.ts │ ├── .umirc.prod.ts │ ├── .umirc.ts │ ├── .vscode/ │ │ └── settings.json │ ├── mock/ │ │ └── sqlResult.json │ ├── package.json │ ├── readme.md │ ├── src/ │ │ ├── assets/ │ │ │ ├── font/ │ │ │ │ ├── demo.css │ │ │ │ ├── demo_index.html │ │ │ │ ├── iconfont.css │ │ │ │ ├── iconfont.js │ │ │ │ └── iconfont.json │ │ │ └── logo/ │ │ │ └── logo.icns │ │ ├── blocks/ │ │ │ ├── AppTitleBar/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── CreateConnection/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── DatabaseTableEditor/ │ │ │ │ ├── BaseInfo/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── ColumnList/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── IncludeCol/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── IndexList/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── RealTimeSQL/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── SequenceEditor/ │ │ │ │ ├── BaseInfo/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── IncludeCol/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── RealTimeSQL/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── Setting/ │ │ │ │ ├── About/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── AiSetting/ │ │ │ │ │ ├── aiTypeConfig.ts │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── BaseSetting/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── ProxySetting/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateDetection/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ └── Tree/ │ │ │ ├── functions/ │ │ │ │ ├── deleteSequence.tsx │ │ │ │ ├── deleteTable.less │ │ │ │ ├── deleteTable.tsx │ │ │ │ ├── openAsyncSql.ts │ │ │ │ ├── pinTable.ts │ │ │ │ ├── refresh.ts │ │ │ │ ├── viewDDL.less │ │ │ │ └── viewDDL.tsx │ │ │ ├── hooks/ │ │ │ │ ├── useGetRightClickMenu.ts │ │ │ │ └── useTreeNodeFocus.ts │ │ │ ├── index.less │ │ │ ├── index.tsx │ │ │ ├── treeConfig.tsx │ │ │ └── treeStore.ts │ │ ├── components/ │ │ │ ├── BrandLogo/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── CascaderDB/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── ConnectionEdit/ │ │ │ │ ├── components/ │ │ │ │ │ └── Driver/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── config/ │ │ │ │ │ ├── dataSource.ts │ │ │ │ │ ├── enum.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── ConsoleEditor/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ChatInput/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── OperationLine/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── SelectBoundInfo/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useModuleData.ts │ │ │ │ │ └── useSaveEditorData.ts │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── CreateDatabase/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── CustomLayout/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── CustomSelect/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── DraggableContainer/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── EditDialog/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── ExecuteSQL/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── Iconfont/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── ImportBlock/ │ │ │ │ └── index.tsx │ │ │ ├── ImportConnection/ │ │ │ │ └── index.tsx │ │ │ ├── LayoutBasic/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── Loading/ │ │ │ │ ├── LazyLoading/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── Loading/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── LoadingContent/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── LoadingGracile/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ └── LoadingLiquid/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── MenuLabel/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── Modal/ │ │ │ │ ├── BaseModal/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── MonacoEditorModal/ │ │ │ │ │ └── index.tsx │ │ │ │ └── TriggeredModal/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── MonacoEditor/ │ │ │ │ ├── index.less │ │ │ │ ├── index.tsx │ │ │ │ ├── monacoEditorConfig.ts │ │ │ │ ├── syntax-parser/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lexer/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── token.ts │ │ │ │ │ ├── parser/ │ │ │ │ │ │ ├── chain.ts │ │ │ │ │ │ ├── define.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── match.ts │ │ │ │ │ │ ├── scanner.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── monaco-plugin/ │ │ │ │ │ │ ├── default-opts.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── parser.worker.ts │ │ │ │ │ └── sql-parser/ │ │ │ │ │ ├── base/ │ │ │ │ │ │ ├── define.ts │ │ │ │ │ │ ├── four-operations.ts │ │ │ │ │ │ ├── parser.ts │ │ │ │ │ │ ├── reader.ts │ │ │ │ │ │ ├── reserve-keys.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── mysql/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lexer.ts │ │ │ │ │ └── parser.ts │ │ │ │ └── useMonacoTheme.ts │ │ │ ├── MyNotification/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── Output/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── Popularize/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── RefreshLoadingButton/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── ScrollLoading/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── SearchResult/ │ │ │ │ ├── components/ │ │ │ │ │ ├── OperationalDataBar/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Pagination/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RightClickMenu/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ScreeningResult/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StatusBar/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── TableBox/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useCurdTableData.ts │ │ │ │ │ ├── useMultipleSelect.ts │ │ │ │ │ └── usePasteData.ts │ │ │ │ ├── index.less │ │ │ │ ├── index.tsx │ │ │ │ └── utils.tsx │ │ │ ├── ShortcutKey/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── SingleFileMonacoEditor/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── StateIndicator/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── Tabs/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── UploadDriver/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── ViewDDL/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ └── XXXX_FN/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── constants/ │ │ │ ├── IntelliSense/ │ │ │ │ ├── index.ts │ │ │ │ ├── mysql.ts │ │ │ │ ├── oracle.ts │ │ │ │ ├── pgsql.ts │ │ │ │ ├── redis.ts │ │ │ │ └── sqlserver.ts │ │ │ ├── appConfig.ts │ │ │ ├── chat.ts │ │ │ ├── common.ts │ │ │ ├── console.ts │ │ │ ├── database.ts │ │ │ ├── editTable.ts │ │ │ ├── environment.ts │ │ │ ├── index.ts │ │ │ ├── table.ts │ │ │ ├── theme.ts │ │ │ ├── tree.ts │ │ │ └── workspace.ts │ │ ├── hooks/ │ │ │ ├── getConnection.ts │ │ │ ├── index.ts │ │ │ ├── useClickAndDoubleClick.ts │ │ │ ├── useEventSource.ts │ │ │ ├── useFocusData.ts │ │ │ ├── usePollRequestService.ts │ │ │ ├── useTheme.ts │ │ │ └── useUpdateEffect.ts │ │ ├── i18n/ │ │ │ ├── en-us/ │ │ │ │ ├── chat.ts │ │ │ │ ├── common.ts │ │ │ │ ├── connection.ts │ │ │ │ ├── dashboard.ts │ │ │ │ ├── editSequence.ts │ │ │ │ ├── editTable.ts │ │ │ │ ├── editTableData.ts │ │ │ │ ├── index.ts │ │ │ │ ├── login.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── setting.ts │ │ │ │ ├── sqlEditor.ts │ │ │ │ ├── team.ts │ │ │ │ └── workspace.ts │ │ │ ├── index.tsx │ │ │ ├── ja-jp/ │ │ │ │ ├── chat.ts │ │ │ │ ├── common.ts │ │ │ │ ├── connection.ts │ │ │ │ ├── dashboard.ts │ │ │ │ ├── editSequence.ts │ │ │ │ ├── editTable.ts │ │ │ │ ├── editTableData.ts │ │ │ │ ├── index.ts │ │ │ │ ├── login.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── setting.ts │ │ │ │ ├── sqlEditor.ts │ │ │ │ ├── team.ts │ │ │ │ └── workspace.ts │ │ │ ├── tr-tr/ │ │ │ │ ├── chat.ts │ │ │ │ ├── common.ts │ │ │ │ ├── connection.ts │ │ │ │ ├── dashboard.ts │ │ │ │ ├── editSequence.ts │ │ │ │ ├── editTable.ts │ │ │ │ ├── editTableData.ts │ │ │ │ ├── index.ts │ │ │ │ ├── login.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── setting.ts │ │ │ │ ├── sqlEditor.ts │ │ │ │ ├── team.ts │ │ │ │ └── workspace.ts │ │ │ └── zh-cn/ │ │ │ ├── chat.ts │ │ │ ├── common.ts │ │ │ ├── connection.ts │ │ │ ├── dashboard.ts │ │ │ ├── editSequence.ts │ │ │ ├── editTable.ts │ │ │ ├── editTableData.ts │ │ │ ├── index.ts │ │ │ ├── login.ts │ │ │ ├── menu.ts │ │ │ ├── setting.ts │ │ │ ├── sqlEditor.ts │ │ │ ├── team.ts │ │ │ └── workspace.ts │ │ ├── indexedDB/ │ │ │ ├── index.ts │ │ │ └── table.ts │ │ ├── layouts/ │ │ │ ├── GlobalLayout/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ └── init/ │ │ │ ├── GlobalComponent.tsx │ │ │ ├── init.ts │ │ │ ├── initIndexedDB.ts │ │ │ ├── registerElectronApi.ts │ │ │ ├── registerMessage.ts │ │ │ └── registerNotification.ts │ │ ├── main/ │ │ │ ├── analysis.js │ │ │ ├── constants.js │ │ │ ├── ga4.js │ │ │ ├── i18n/ │ │ │ │ ├── en/ │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ └── zh-cn/ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ ├── main.js.LICENSE.txt │ │ │ ├── menu.js │ │ │ ├── package.json │ │ │ ├── preload.js │ │ │ ├── store.js │ │ │ ├── utils.js │ │ │ └── webpack.config.js │ │ ├── pages/ │ │ │ ├── demo/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── document.ejs │ │ │ ├── login/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── main/ │ │ │ │ ├── connection/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── dashboard/ │ │ │ │ │ ├── chart/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── line/ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── pie/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── chart-item/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── left-block/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── functions/ │ │ │ │ │ └── getConnection.ts │ │ │ │ ├── index.less │ │ │ │ ├── index.tsx │ │ │ │ ├── store/ │ │ │ │ │ ├── connection/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── main/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── monaco/ │ │ │ │ │ └── index.ts │ │ │ │ ├── team/ │ │ │ │ │ ├── datasource-management/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── team-management/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── universal-add-modal/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── universal-drawer/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── user-management/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ └── workspace/ │ │ │ │ ├── components/ │ │ │ │ │ ├── OperationLine/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SQLExecute/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SaveList/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── TableList/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ViewAllTable/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WorkspaceExtend/ │ │ │ │ │ │ ├── GlobalExtendComponents/ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── WorkspaceExtendBody/ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── WorkspaceExtendNav/ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── config.tsx │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WorkspaceLeft/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WorkspaceLeftHeader/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WorkspaceRight/ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── WorkspaceTabs/ │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── functions/ │ │ │ │ │ └── shortcutKeyCreateConsole.ts │ │ │ │ ├── index.less │ │ │ │ ├── index.tsx │ │ │ │ └── store/ │ │ │ │ ├── common.ts │ │ │ │ ├── config.ts │ │ │ │ ├── console.ts │ │ │ │ ├── index.ts │ │ │ │ └── modal.ts │ │ │ └── test/ │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── service/ │ │ │ ├── ai.ts │ │ │ ├── base.ts │ │ │ ├── config.ts │ │ │ ├── connection.ts │ │ │ ├── dashboard.ts │ │ │ ├── history.ts │ │ │ ├── misc.tsx │ │ │ ├── outside.ts │ │ │ ├── sql.ts │ │ │ ├── team.ts │ │ │ └── user.ts │ │ ├── store/ │ │ │ ├── common/ │ │ │ │ ├── appTitleBarConfig.ts │ │ │ │ ├── components.ts │ │ │ │ ├── copyFocusedContent.ts │ │ │ │ └── index.ts │ │ │ ├── config/ │ │ │ │ └── index.ts │ │ │ ├── monaco/ │ │ │ │ └── index.ts │ │ │ ├── setting/ │ │ │ │ └── index.ts │ │ │ └── user/ │ │ │ └── index.ts │ │ ├── styles/ │ │ │ ├── antd.less │ │ │ ├── common.less │ │ │ ├── global.less │ │ │ └── var.less │ │ ├── theme/ │ │ │ ├── abandon/ │ │ │ │ ├── demo/ │ │ │ │ │ ├── dark.less │ │ │ │ │ └── light.less │ │ │ │ └── primaryColor.less │ │ │ ├── background/ │ │ │ │ ├── dark.ts │ │ │ │ ├── darkDimmed.ts │ │ │ │ └── light.ts │ │ │ ├── common.ts │ │ │ ├── custom/ │ │ │ │ ├── dark.less │ │ │ │ ├── darkDimmed.less │ │ │ │ └── light.less │ │ │ └── index.ts │ │ ├── typings/ │ │ │ ├── ai.ts │ │ │ ├── common.ts │ │ │ ├── connection.ts │ │ │ ├── console.ts │ │ │ ├── dashboard.ts │ │ │ ├── database.ts │ │ │ ├── editSequence.ts │ │ │ ├── editTable.ts │ │ │ ├── index.ts │ │ │ ├── main.ts │ │ │ ├── resultTable.ts │ │ │ ├── setting.ts │ │ │ ├── team.ts │ │ │ ├── theme.ts │ │ │ ├── tree.ts │ │ │ ├── user.ts │ │ │ └── workspace.ts │ │ └── utils/ │ │ ├── IntelliSense/ │ │ │ ├── database.ts │ │ │ ├── field.ts │ │ │ ├── index.ts │ │ │ ├── keyword.ts │ │ │ ├── table.ts │ │ │ └── view.ts │ │ ├── check.ts │ │ ├── database.ts │ │ ├── date.ts │ │ ├── eventSource.ts │ │ ├── file.ts │ │ ├── getTree.ts │ │ ├── index.ts │ │ ├── localStorage.ts │ │ ├── lodash.ts │ │ ├── sort.ts │ │ ├── sql.ts │ │ ├── timezone.ts │ │ ├── url.ts │ │ └── webpack.ts │ ├── tsconfig.json │ └── typings.d.ts ├── chat2db-server/ │ ├── .apifox-helper.properties │ ├── .easy.api.config │ ├── .gitignore │ ├── README.md │ ├── chat2db-plugins/ │ │ ├── chat2db-clickhouse/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── clickhouse/ │ │ │ │ ├── ClickHouseDBManage.java │ │ │ │ ├── ClickHouseMetaData.java │ │ │ │ ├── ClickHousePlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── ClickHouseSqlBuilder.java │ │ │ │ ├── clickhouse.json │ │ │ │ └── type/ │ │ │ │ ├── ClickHouseColumnTypeEnum.java │ │ │ │ ├── ClickHouseEngineTypeEnum.java │ │ │ │ └── ClickHouseIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-db2/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── db2/ │ │ │ │ ├── DB2DBManage.java │ │ │ │ ├── DB2MetaData.java │ │ │ │ ├── DB2Plugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── DB2SqlBuilder.java │ │ │ │ ├── constant/ │ │ │ │ │ └── SQLConstant.java │ │ │ │ ├── db2.json │ │ │ │ └── type/ │ │ │ │ ├── DB2ColumnTypeEnum.java │ │ │ │ ├── DB2DefaultValueEnum.java │ │ │ │ └── DB2IndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-dm/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── dm/ │ │ │ │ ├── DMDBManage.java │ │ │ │ ├── DMMetaData.java │ │ │ │ ├── DMPlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── DMSqlBuilder.java │ │ │ │ ├── dm.json │ │ │ │ └── type/ │ │ │ │ ├── DMColumnTypeEnum.java │ │ │ │ ├── DMDefaultValueEnum.java │ │ │ │ └── DMIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-h2/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── h2/ │ │ │ │ ├── H2DBManage.java │ │ │ │ ├── H2Meta.java │ │ │ │ ├── H2Plugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── H2SqlBuilder.java │ │ │ │ └── h2.json │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-hive/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── hive/ │ │ │ │ ├── HiveCommandExecutor.java │ │ │ │ ├── HiveDBManage.java │ │ │ │ ├── HiveMetaData.java │ │ │ │ ├── HivePlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── HiveSqlBuilder.java │ │ │ │ ├── hive.json │ │ │ │ └── type/ │ │ │ │ ├── HiveColumnTypeEnum.java │ │ │ │ └── HiveIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-kingbase/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── kingbase/ │ │ │ │ ├── KingBaseDBManage.java │ │ │ │ ├── KingBaseMetaData.java │ │ │ │ ├── KingBasePlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── KingBaseSqlBuilder.java │ │ │ │ ├── kingbase.json │ │ │ │ └── type/ │ │ │ │ ├── KingBaseColumnTypeEnum.java │ │ │ │ ├── KingBaseDefaultValueEnum.java │ │ │ │ └── KingBaseIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-mariadb/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── mariadb/ │ │ │ │ ├── MariaDBManage.java │ │ │ │ ├── MariaDBMetaData.java │ │ │ │ ├── MariaDBPlugin.java │ │ │ │ ├── mariadb.json │ │ │ │ └── value/ │ │ │ │ ├── MariaDBValueProcessor.java │ │ │ │ ├── factory/ │ │ │ │ │ └── MariaDBValueProcessorFactory.java │ │ │ │ └── sub/ │ │ │ │ ├── MariaDBBitProcessor.java │ │ │ │ ├── MariaDBGeometryProcessor.java │ │ │ │ ├── MariaDBTimestampProcessor.java │ │ │ │ └── MariaDBYearProcessor.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-mongodb/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── mongodb/ │ │ │ │ ├── MongodbCommandExecutor.java │ │ │ │ ├── MongodbManage.java │ │ │ │ ├── MongodbMetaData.java │ │ │ │ ├── MongodbPlugin.java │ │ │ │ └── mongodb.json │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-mysql/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── mysql/ │ │ │ │ ├── MysqlDBManage.java │ │ │ │ ├── MysqlMetaData.java │ │ │ │ ├── MysqlPlugin.java │ │ │ │ ├── MysqlValueHandler.java │ │ │ │ ├── builder/ │ │ │ │ │ ├── MysqlSqlBuilder.java │ │ │ │ │ └── form.json │ │ │ │ ├── mysql.json │ │ │ │ ├── type/ │ │ │ │ │ ├── MysqlCharsetEnum.java │ │ │ │ │ ├── MysqlCollationEnum.java │ │ │ │ │ ├── MysqlColumnTypeEnum.java │ │ │ │ │ ├── MysqlDefaultValueEnum.java │ │ │ │ │ └── MysqlIndexTypeEnum.java │ │ │ │ └── value/ │ │ │ │ ├── GeometryValueHandler.java │ │ │ │ ├── MysqlValueProcessor.java │ │ │ │ ├── factory/ │ │ │ │ │ └── MysqlValueProcessorFactory.java │ │ │ │ ├── sub/ │ │ │ │ │ ├── MysqlBinaryProcessor.java │ │ │ │ │ ├── MysqlBitProcessor.java │ │ │ │ │ ├── MysqlDecimalProcessor.java │ │ │ │ │ ├── MysqlGeometryProcessor.java │ │ │ │ │ ├── MysqlTextProcessor.java │ │ │ │ │ ├── MysqlTimestampProcessor.java │ │ │ │ │ ├── MysqlVarBinaryProcessor.java │ │ │ │ │ └── MysqlYearProcessor.java │ │ │ │ └── template/ │ │ │ │ └── MysqlDmlValueTemplate.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-oceanbase/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── oceanbase/ │ │ │ │ ├── OceanBaseDBManage.java │ │ │ │ ├── OceanBaseMetaData.java │ │ │ │ ├── OceanBasePlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── OceanBaseSqlBuilder.java │ │ │ │ ├── oceanbase.json │ │ │ │ └── type/ │ │ │ │ ├── OceanBaseColumnTypeEnum.java │ │ │ │ └── OceanBaseIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-oracle/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── oracle/ │ │ │ │ ├── OracleDBManage.java │ │ │ │ ├── OracleMetaData.java │ │ │ │ ├── OraclePlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── OracleSqlBuilder.java │ │ │ │ ├── oracle.json │ │ │ │ ├── type/ │ │ │ │ │ ├── OracleColumnTypeEnum.java │ │ │ │ │ ├── OracleDefaultValueEnum.java │ │ │ │ │ └── OracleIndexTypeEnum.java │ │ │ │ └── value/ │ │ │ │ ├── OracleValueProcessor.java │ │ │ │ ├── factory/ │ │ │ │ │ └── OracleValueProcessorFactory.java │ │ │ │ ├── sub/ │ │ │ │ │ ├── OracleAnyDataProcessor.java │ │ │ │ │ ├── OracleBlobProcessor.java │ │ │ │ │ ├── OracleClobProcessor.java │ │ │ │ │ ├── OracleDateProcessor.java │ │ │ │ │ ├── OracleIntervalDSProcessor.java │ │ │ │ │ ├── OracleIntervalYMProcessor.java │ │ │ │ │ ├── OracleLongRawProcessor.java │ │ │ │ │ ├── OracleNumberProcessor.java │ │ │ │ │ ├── OracleRawValueProcessor.java │ │ │ │ │ ├── OracleTimeStampLTZProcessor.java │ │ │ │ │ ├── OracleTimeStampProcessor.java │ │ │ │ │ ├── OracleTimeStampTZProcessor.java │ │ │ │ │ └── OracleXmlValueProcessor.java │ │ │ │ └── template/ │ │ │ │ └── OracleDmlValueTemplate.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-postgresql/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── postgresql/ │ │ │ │ ├── PostgreSQLDBManage.java │ │ │ │ ├── PostgreSQLMetaData.java │ │ │ │ ├── PostgreSQLPlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── PostgreSQLSqlBuilder.java │ │ │ │ ├── consts/ │ │ │ │ │ ├── SQLConst.java │ │ │ │ │ └── SequenceCommonConst.java │ │ │ │ ├── pg.json │ │ │ │ └── type/ │ │ │ │ ├── PostgreSQLCharsetEnum.java │ │ │ │ ├── PostgreSQLCollationEnum.java │ │ │ │ ├── PostgreSQLColumnTypeEnum.java │ │ │ │ ├── PostgreSQLDefaultValueEnum.java │ │ │ │ └── PostgreSQLIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-presto/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── presto/ │ │ │ │ ├── PrestoDBManage.java │ │ │ │ ├── PrestoMetaData.java │ │ │ │ ├── PrestoPlugin.java │ │ │ │ └── presto.json │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-sqlite/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── sqlite/ │ │ │ │ ├── SqliteDBManage.java │ │ │ │ ├── SqliteMetaData.java │ │ │ │ ├── SqlitePlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── SqliteBuilder.java │ │ │ │ ├── sqlite.json │ │ │ │ └── type/ │ │ │ │ ├── SqliteCharsetEnum.java │ │ │ │ ├── SqliteCollationEnum.java │ │ │ │ ├── SqliteColumnTypeEnum.java │ │ │ │ ├── SqliteDefaultValueEnum.java │ │ │ │ └── SqliteIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-sqlserver/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── sqlserver/ │ │ │ │ ├── SqlServerCommandExecutor.java │ │ │ │ ├── SqlServerDBManage.java │ │ │ │ ├── SqlServerMetaData.java │ │ │ │ ├── SqlServerPlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── SqlServerSqlBuilder.java │ │ │ │ ├── sqlserver.json │ │ │ │ └── type/ │ │ │ │ ├── SqlServerColumnTypeEnum.java │ │ │ │ ├── SqlServerDefaultValueEnum.java │ │ │ │ └── SqlServerIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ ├── chat2db-timeplus/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── plugin/ │ │ │ │ └── timeplus/ │ │ │ │ ├── TimeplusDBManage.java │ │ │ │ ├── TimeplusMetaData.java │ │ │ │ ├── TimeplusPlugin.java │ │ │ │ ├── builder/ │ │ │ │ │ └── TimeplusSqlBuilder.java │ │ │ │ ├── timeplus.json │ │ │ │ └── type/ │ │ │ │ ├── TimeplusColumnTypeEnum.java │ │ │ │ ├── TimeplusEngineTypeEnum.java │ │ │ │ └── TimeplusIndexTypeEnum.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── ai.chat2db.spi.Plugin │ │ └── pom.xml │ ├── chat2db-server-domain/ │ │ ├── README.md │ │ ├── chat2db-server-domain-api/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── domain/ │ │ │ └── api/ │ │ │ ├── chart/ │ │ │ │ ├── ChartCreateParam.java │ │ │ │ ├── ChartListQueryParam.java │ │ │ │ ├── ChartPageQueryParam.java │ │ │ │ ├── ChartQueryParam.java │ │ │ │ └── ChartUpdateParam.java │ │ │ ├── enums/ │ │ │ │ ├── AccessObjectTypeEnum.java │ │ │ │ ├── AiSqlSourceEnum.java │ │ │ │ ├── DataSourceKindEnum.java │ │ │ │ ├── DeletedTypeEnum.java │ │ │ │ ├── EnvironmentEnum.java │ │ │ │ ├── ExportFileSuffix.java │ │ │ │ ├── ExportSizeEnum.java │ │ │ │ ├── ExportTypeEnum.java │ │ │ │ ├── OperationStatusEnum.java │ │ │ │ ├── RoleCodeEnum.java │ │ │ │ ├── TableVectorEnum.java │ │ │ │ ├── TaskStatusEnum.java │ │ │ │ ├── TaskTypeEnum.java │ │ │ │ └── ValidStatusEnum.java │ │ │ ├── model/ │ │ │ │ ├── AIConfig.java │ │ │ │ ├── Chart.java │ │ │ │ ├── ChatGptConfig.java │ │ │ │ ├── Config.java │ │ │ │ ├── Dashboard.java │ │ │ │ ├── DataSource.java │ │ │ │ ├── DataSourceAccess.java │ │ │ │ ├── DataSourceAccessObject.java │ │ │ │ ├── Environment.java │ │ │ │ ├── IndexInfo.java │ │ │ │ ├── Operation.java │ │ │ │ ├── OperationLog.java │ │ │ │ ├── TableParameter.java │ │ │ │ ├── Task.java │ │ │ │ ├── Team.java │ │ │ │ ├── TeamUser.java │ │ │ │ └── User.java │ │ │ ├── param/ │ │ │ │ ├── ConsoleCloseParam.java │ │ │ │ ├── ConsoleConnectParam.java │ │ │ │ ├── ConsoleCreateParam.java │ │ │ │ ├── DlCountParam.java │ │ │ │ ├── DlExecuteParam.java │ │ │ │ ├── DmlSqlCopyParam.java │ │ │ │ ├── DropParam.java │ │ │ │ ├── EnvironmentPageQueryParam.java │ │ │ │ ├── GroupByParam.java │ │ │ │ ├── MetaDataQueryParam.java │ │ │ │ ├── OrderByParam.java │ │ │ │ ├── PinTableParam.java │ │ │ │ ├── SchemaOperationParam.java │ │ │ │ ├── SchemaQueryParam.java │ │ │ │ ├── SelectResultOperation.java │ │ │ │ ├── SequencePageQueryParam.java │ │ │ │ ├── SequenceQueryParam.java │ │ │ │ ├── ShowCreateSequenceParam.java │ │ │ │ ├── ShowCreateTableParam.java │ │ │ │ ├── SqlAnalyseParam.java │ │ │ │ ├── SystemConfigParam.java │ │ │ │ ├── TablePageQueryParam.java │ │ │ │ ├── TableQueryParam.java │ │ │ │ ├── TableSelector.java │ │ │ │ ├── TableVectorParam.java │ │ │ │ ├── TaskCreateParam.java │ │ │ │ ├── TaskPageParam.java │ │ │ │ ├── TaskUpdateParam.java │ │ │ │ ├── TypeQueryParam.java │ │ │ │ ├── UpdateSelectResultParam.java │ │ │ │ ├── dashboard/ │ │ │ │ │ ├── DashboardCreateParam.java │ │ │ │ │ ├── DashboardPageQueryParam.java │ │ │ │ │ ├── DashboardQueryParam.java │ │ │ │ │ ├── DashboardSelector.java │ │ │ │ │ └── DashboardUpdateParam.java │ │ │ │ ├── datasource/ │ │ │ │ │ ├── DataSourceCloseParam.java │ │ │ │ │ ├── DataSourceCreateParam.java │ │ │ │ │ ├── DataSourcePageQueryParam.java │ │ │ │ │ ├── DataSourcePreConnectParam.java │ │ │ │ │ ├── DataSourceSelector.java │ │ │ │ │ ├── DataSourceTestParam.java │ │ │ │ │ ├── DataSourceUpdateParam.java │ │ │ │ │ ├── DatabaseCreateParam.java │ │ │ │ │ ├── DatabaseExportDataParam.java │ │ │ │ │ ├── DatabaseExportParam.java │ │ │ │ │ ├── DatabaseQueryAllParam.java │ │ │ │ │ └── access/ │ │ │ │ │ ├── DataSourceAccessBatchCreatParam.java │ │ │ │ │ ├── DataSourceAccessComprehensivePageQueryParam.java │ │ │ │ │ ├── DataSourceAccessCreatParam.java │ │ │ │ │ ├── DataSourceAccessObjectParam.java │ │ │ │ │ ├── DataSourceAccessPageQueryParam.java │ │ │ │ │ └── DataSourceAccessSelector.java │ │ │ │ ├── message/ │ │ │ │ │ └── MessageCreateParam.java │ │ │ │ ├── operation/ │ │ │ │ │ ├── OperationLogCreateParam.java │ │ │ │ │ ├── OperationLogPageQueryParam.java │ │ │ │ │ ├── OperationPageQueryParam.java │ │ │ │ │ ├── OperationQueryParam.java │ │ │ │ │ ├── OperationSavedParam.java │ │ │ │ │ └── OperationUpdateParam.java │ │ │ │ ├── team/ │ │ │ │ │ ├── TeamCreateParam.java │ │ │ │ │ ├── TeamPageQueryParam.java │ │ │ │ │ ├── TeamSelector.java │ │ │ │ │ ├── TeamUpdateParam.java │ │ │ │ │ └── user/ │ │ │ │ │ ├── TeamUserComprehensivePageQueryParam.java │ │ │ │ │ ├── TeamUserCreatParam.java │ │ │ │ │ ├── TeamUserPageQueryParam.java │ │ │ │ │ └── TeamUserSelector.java │ │ │ │ └── user/ │ │ │ │ ├── UserCreateParam.java │ │ │ │ ├── UserPageQueryParam.java │ │ │ │ ├── UserSelector.java │ │ │ │ └── UserUpdateParam.java │ │ │ └── service/ │ │ │ ├── ChartService.java │ │ │ ├── ConfigService.java │ │ │ ├── ConsoleService.java │ │ │ ├── DashboardService.java │ │ │ ├── DataSourceAccessBusinessService.java │ │ │ ├── DataSourceAccessService.java │ │ │ ├── DataSourceService.java │ │ │ ├── DatabaseService.java │ │ │ ├── DlTemplateService.java │ │ │ ├── EnvironmentService.java │ │ │ ├── FunctionService.java │ │ │ ├── JdbcDriverService.java │ │ │ ├── OperationLogService.java │ │ │ ├── OperationService.java │ │ │ ├── PinService.java │ │ │ ├── ProcedureService.java │ │ │ ├── SequenceService.java │ │ │ ├── TableService.java │ │ │ ├── TaskService.java │ │ │ ├── TeamService.java │ │ │ ├── TeamUserService.java │ │ │ ├── TriggerService.java │ │ │ ├── UserService.java │ │ │ ├── ViewService.java │ │ │ └── WebhookSender.java │ │ ├── chat2db-server-domain-core/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── domain/ │ │ │ └── core/ │ │ │ ├── cache/ │ │ │ │ ├── CacheKey.java │ │ │ │ ├── CacheManage.java │ │ │ │ └── MemoryCacheManage.java │ │ │ ├── converter/ │ │ │ │ ├── ChartConverter.java │ │ │ │ ├── CommandConverter.java │ │ │ │ ├── ConfigConverter.java │ │ │ │ ├── DashboardConverter.java │ │ │ │ ├── DataSourceAccessConverter.java │ │ │ │ ├── DataSourceConverter.java │ │ │ │ ├── DriverConfigConverter.java │ │ │ │ ├── EnvironmentConverter.java │ │ │ │ ├── OperationConverter.java │ │ │ │ ├── OperationLogConverter.java │ │ │ │ ├── PinTableConverter.java │ │ │ │ ├── TableConverter.java │ │ │ │ ├── TaskConverter.java │ │ │ │ ├── TeamConverter.java │ │ │ │ ├── TeamUserConverter.java │ │ │ │ └── UserConverter.java │ │ │ ├── enums/ │ │ │ │ └── ExternalNotificationTypeEnum.java │ │ │ ├── impl/ │ │ │ │ ├── ChartServiceImpl.java │ │ │ │ ├── ConfigServiceImpl.java │ │ │ │ ├── ConsoleServiceImpl.java │ │ │ │ ├── DashboardServiceImpl.java │ │ │ │ ├── DataSourceAccessBusinessServiceImpl.java │ │ │ │ ├── DataSourceAccessServiceImpl.java │ │ │ │ ├── DataSourceServiceImpl.java │ │ │ │ ├── DatabaseServiceImpl.java │ │ │ │ ├── DlTemplateServiceImpl.java │ │ │ │ ├── EnvironmentServiceImpl.java │ │ │ │ ├── FunctionServiceImpl.java │ │ │ │ ├── JdbcDriverServiceImpl.java │ │ │ │ ├── OperationLogServiceImpl.java │ │ │ │ ├── OperationServiceImpl.java │ │ │ │ ├── PinServiceImpl.java │ │ │ │ ├── ProcedureServiceImpl.java │ │ │ │ ├── SequenceServiceImpl.java │ │ │ │ ├── TableServiceImpl.java │ │ │ │ ├── TaskServiceImpl.java │ │ │ │ ├── TeamServiceImpl.java │ │ │ │ ├── TeamUserServiceImpl.java │ │ │ │ ├── TriggerServiceImpl.java │ │ │ │ ├── UserServiceImpl.java │ │ │ │ └── ViewServiceImpl.java │ │ │ ├── notification/ │ │ │ │ ├── BaseWebhookSender.java │ │ │ │ ├── DingTalkWebhookSender.java │ │ │ │ ├── LarkWebhookSender.java │ │ │ │ └── WeComWebhookSender.java │ │ │ └── util/ │ │ │ ├── DesUtil.java │ │ │ ├── H2Functions.java │ │ │ ├── H2Triggers.java │ │ │ ├── MetaNameUtils.java │ │ │ └── PermissionUtils.java │ │ ├── chat2db-server-domain-repository/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── server/ │ │ │ │ └── domain/ │ │ │ │ └── repository/ │ │ │ │ ├── Dbutils.java │ │ │ │ ├── MapperUtils.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── ChartDO.java │ │ │ │ │ ├── DashboardChartRelationDO.java │ │ │ │ │ ├── DashboardDO.java │ │ │ │ │ ├── DataSourceAccessDO.java │ │ │ │ │ ├── DataSourceDO.java │ │ │ │ │ ├── DbhubUserDO.java │ │ │ │ │ ├── EnvironmentDO.java │ │ │ │ │ ├── JdbcDriverDO.java │ │ │ │ │ ├── OperationLogDO.java │ │ │ │ │ ├── OperationSavedDO.java │ │ │ │ │ ├── PinTableDO.java │ │ │ │ │ ├── SystemConfigDO.java │ │ │ │ │ ├── TableCacheDO.java │ │ │ │ │ ├── TableCacheVersionDO.java │ │ │ │ │ ├── TableVectorMappingDO.java │ │ │ │ │ ├── TaskDO.java │ │ │ │ │ ├── TeamDO.java │ │ │ │ │ └── TeamUserDO.java │ │ │ │ └── mapper/ │ │ │ │ ├── ChartMapper.java │ │ │ │ ├── DashboardChartRelationMapper.java │ │ │ │ ├── DashboardMapper.java │ │ │ │ ├── DataSourceAccessCustomMapper.java │ │ │ │ ├── DataSourceAccessMapper.java │ │ │ │ ├── DataSourceCustomMapper.java │ │ │ │ ├── DataSourceMapper.java │ │ │ │ ├── DbhubUserMapper.java │ │ │ │ ├── EnvironmentMapper.java │ │ │ │ ├── JdbcDriverMapper.java │ │ │ │ ├── OperationLogMapper.java │ │ │ │ ├── OperationSavedMapper.java │ │ │ │ ├── PinTableMapper.java │ │ │ │ ├── SystemConfigMapper.java │ │ │ │ ├── TableCacheMapper.java │ │ │ │ ├── TableCacheVersionMapper.java │ │ │ │ ├── TableVectorMappingMapper.java │ │ │ │ ├── TaskMapper.java │ │ │ │ ├── TeamMapper.java │ │ │ │ ├── TeamUserCustomMapper.java │ │ │ │ └── TeamUserMapper.java │ │ │ └── resources/ │ │ │ ├── db/ │ │ │ │ ├── migration/ │ │ │ │ │ ├── V1_0_0__初始化信息.sql │ │ │ │ │ ├── V1_0_2__修改Console.sql │ │ │ │ │ ├── V1_0_3__增加SSH.sql │ │ │ │ │ ├── V1_0_4__增加报表.sql │ │ │ │ │ ├── V1_0_5__增加置顶表.sql │ │ │ │ │ ├── V1_0_6__初始化demo信息.sql │ │ │ │ │ ├── V1_0_7__自定义驱动.sql │ │ │ │ │ ├── V1_0_8__操作保存类型.sql │ │ │ │ │ ├── V2_1_0__支持环境、用户权限.sql │ │ │ │ │ ├── V2_1_10__REMOVEdEMO.sql │ │ │ │ │ ├── V2_1_1__TableCache.sql │ │ │ │ │ ├── V2_1_2__OPERATION.sql │ │ │ │ │ ├── V2_1_4__OPERATION.sql │ │ │ │ │ ├── V2_1_5__TableVector.sql │ │ │ │ │ ├── V2_1_6__TableVectorUpdate.sql │ │ │ │ │ ├── V2_1_7__DATASOURCE.sql │ │ │ │ │ ├── V2_1_8__Chart.sql │ │ │ │ │ └── V2_1_9__task.sql │ │ │ │ └── temp/ │ │ │ │ └── V2_1_0__补充.sql │ │ │ └── mapper/ │ │ │ ├── ChartMapper.xml │ │ │ ├── DashboardChartRelationMapper.xml │ │ │ ├── DashboardMapper.xml │ │ │ ├── DataSourceAccessCustomMapper.xml │ │ │ ├── DataSourceAccessMapper.xml │ │ │ ├── DataSourceCustomMapper.xml │ │ │ ├── DataSourceMapper.xml │ │ │ ├── DbhubUserMapper.xml │ │ │ ├── EnvironmentMapper.xml │ │ │ ├── JdbcDriverMapper.xml │ │ │ ├── OperationLogMapper.xml │ │ │ ├── OperationSavedMapper.xml │ │ │ ├── PinTableMapper.xml │ │ │ ├── SystemConfigMapper.xml │ │ │ ├── TableCacheMapper.xml │ │ │ ├── TableCacheVersionMapper.xml │ │ │ ├── TableVectorMappingMapper.xml │ │ │ ├── TaskMapper.xml │ │ │ ├── TeamMapper.xml │ │ │ ├── TeamUserCustomMapper.xml │ │ │ └── TeamUserMapper.xml │ │ └── pom.xml │ ├── chat2db-server-start/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── server/ │ │ │ │ └── start/ │ │ │ │ ├── Application.java │ │ │ │ ├── config/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── AsyncContextRefreshedListener.java │ │ │ │ │ │ ├── Chat2dbForestConfiguration.java │ │ │ │ │ │ ├── Chat2dbWebMvcConfigurer.java │ │ │ │ │ │ ├── JarDownloadTask.java │ │ │ │ │ │ └── WebLogConfiguration.java │ │ │ │ │ ├── i18n/ │ │ │ │ │ │ └── I18nConfig.java │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ └── CorsFilter.java │ │ │ │ │ ├── listener/ │ │ │ │ │ │ ├── DbhubTomcatConnectorCustomizer.java │ │ │ │ │ │ ├── FailedEventApplicationListener.java │ │ │ │ │ │ ├── ManageApplicationListener.java │ │ │ │ │ │ └── manage/ │ │ │ │ │ │ ├── ManageMessage.java │ │ │ │ │ │ └── MessageTypeEnum.java │ │ │ │ │ └── mybatis/ │ │ │ │ │ └── MyBatisPlusConfig.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── oauth/ │ │ │ │ │ │ ├── OauthController.java │ │ │ │ │ │ └── request/ │ │ │ │ │ │ └── LoginRequest.java │ │ │ │ │ └── thymeleaf/ │ │ │ │ │ └── ThymeleafController.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── EasyControllerExceptionHandler.java │ │ │ │ │ └── convertor/ │ │ │ │ │ ├── BindExceptionConvertor.java │ │ │ │ │ ├── BusinessExceptionConvertor.java │ │ │ │ │ ├── DefaultExceptionConvertor.java │ │ │ │ │ ├── ExceptionConvertor.java │ │ │ │ │ ├── ExceptionConvertorUtils.java │ │ │ │ │ ├── MaxUploadSizeExceededExceptionConvertor.java │ │ │ │ │ ├── MethodArgumentNotValidExceptionConvertor.java │ │ │ │ │ ├── MethodArgumentTypeMismatchExceptionConvertor.java │ │ │ │ │ └── ParamExceptionConvertor.java │ │ │ │ └── log/ │ │ │ │ ├── EasyLogSink.java │ │ │ │ ├── LogOncePerRequestFilter.java │ │ │ │ └── WebLog.java │ │ │ └── resources/ │ │ │ ├── META-INF/ │ │ │ │ └── spring.factories │ │ │ ├── application-dev.yml │ │ │ ├── application-release.yml │ │ │ ├── application-test.yml │ │ │ ├── application.yml │ │ │ ├── i18n/ │ │ │ │ ├── messages.properties │ │ │ │ ├── messages_en_US.properties │ │ │ │ └── messages_zh_CN.properties │ │ │ ├── logback-spring.xml │ │ │ └── thymeleaf/ │ │ │ └── template.html │ │ └── test/ │ │ ├── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── start/ │ │ │ └── test/ │ │ │ ├── TestApplication.java │ │ │ ├── common/ │ │ │ │ └── BaseTest.java │ │ │ ├── core/ │ │ │ │ ├── ChartServiceTest.java │ │ │ │ ├── ConfigServiceTest.java │ │ │ │ ├── ConsoleServiceTest.java │ │ │ │ ├── DashboardServiceTest.java │ │ │ │ ├── DataSourceAccessBusinessServiceTest.java │ │ │ │ ├── DataSourceAccessServiceTest.java │ │ │ │ ├── DataSourceServiceTest.java │ │ │ │ ├── DatabaseServiceTest.java │ │ │ │ ├── DlTemplateServiceTest.java │ │ │ │ ├── EnvironmentServiceTest.java │ │ │ │ ├── FunctionServiceTest.java │ │ │ │ ├── JdbcDriverServiceTest.java │ │ │ │ ├── OperationLogServiceTest.java │ │ │ │ ├── OperationServiceTest.java │ │ │ │ ├── PinServiceTest.java │ │ │ │ ├── ProcedureServiceTest.java │ │ │ │ ├── TableServiceTest.java │ │ │ │ ├── TaskServiceTest.java │ │ │ │ ├── TeamServiceTest.java │ │ │ │ ├── TeamUserServiceTest.java │ │ │ │ ├── TriggerServiceTest.java │ │ │ │ ├── UserServiceTest.java │ │ │ │ ├── ViewServiceTest.java │ │ │ │ └── WebhookServiceTest.java │ │ │ ├── dialect/ │ │ │ │ ├── DialectProperties.java │ │ │ │ ├── MariadbDialectProperties.java │ │ │ │ ├── MongodbDialectProperties.java │ │ │ │ ├── MysqlDialectProperties.java │ │ │ │ ├── OracleDialectProperties.java │ │ │ │ ├── PostgresqlDialectProperties.java │ │ │ │ └── TestUtils.java │ │ │ ├── druid/ │ │ │ │ ├── SerializationUtilsTest.java │ │ │ │ ├── SqlUtilsTest.java │ │ │ │ └── SqlUtilsTest2.java │ │ │ ├── dto/ │ │ │ │ └── TestDTO.java │ │ │ ├── mybatis/ │ │ │ │ └── MybatisGeneratorTest.java │ │ │ └── sql/ │ │ │ └── DbhubJdbcTemplateTest.java │ │ └── resources/ │ │ └── logback-test-spring.xml │ ├── chat2db-server-test/ │ │ ├── pom.xml │ │ └── src/ │ │ └── test/ │ │ ├── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── test/ │ │ │ ├── common/ │ │ │ │ └── BaseTest.java │ │ │ ├── domain/ │ │ │ │ └── data/ │ │ │ │ ├── service/ │ │ │ │ │ ├── ConfigServiceTest.java │ │ │ │ │ ├── ConsoleOperationsTest.java │ │ │ │ │ ├── DatabaseOperationsTest.java │ │ │ │ │ ├── ExampleOperationsTest.java │ │ │ │ │ ├── JdbcOperationsTest.java │ │ │ │ │ ├── SQLExecutorOperationsTest.java │ │ │ │ │ ├── TableOperationsTest.java │ │ │ │ │ └── dialect/ │ │ │ │ │ ├── ClickHouseDialectProperties.java │ │ │ │ │ ├── DialectProperties.java │ │ │ │ │ ├── H2DialectProperties.java │ │ │ │ │ ├── MysqlDialectProperties.java │ │ │ │ │ ├── OracleDialectProperties.java │ │ │ │ │ ├── PostgresqlDialectProperties.java │ │ │ │ │ ├── SQLITEDialectProperties.java │ │ │ │ │ └── SQLServerDialectProperties.java │ │ │ │ └── utils/ │ │ │ │ └── TestUtils.java │ │ │ └── temp/ │ │ │ ├── HttpTest.java │ │ │ ├── SQLParseTest.java │ │ │ ├── SqlTest.java │ │ │ ├── TempTest.java │ │ │ └── UserTest.java │ │ └── resources/ │ │ ├── h2/ │ │ │ ├── init.sql │ │ │ ├── init_close.sql │ │ │ └── init_transaction.sql │ │ └── logback-test-spring.xml │ ├── chat2db-server-tools/ │ │ ├── chat2db-server-tools-base/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── tools/ │ │ │ └── base/ │ │ │ ├── constant/ │ │ │ │ ├── EasyToolsConstant.java │ │ │ │ └── SymbolConstant.java │ │ │ ├── enums/ │ │ │ │ ├── BaseEnum.java │ │ │ │ ├── DataSourceTypeEnum.java │ │ │ │ ├── DeletedIdEnum.java │ │ │ │ ├── OperationEnum.java │ │ │ │ ├── OrderByDirectionEnum.java │ │ │ │ ├── StatusEnum.java │ │ │ │ ├── SystemEnvironmentEnum.java │ │ │ │ ├── WhiteListTypeEnum.java │ │ │ │ └── YesOrNoEnum.java │ │ │ ├── excption/ │ │ │ │ ├── BusinessException.java │ │ │ │ └── SystemException.java │ │ │ ├── handler/ │ │ │ │ └── EasyCallBackHandler.java │ │ │ └── wrapper/ │ │ │ ├── Result.java │ │ │ ├── Traceable.java │ │ │ ├── param/ │ │ │ │ ├── OrderBy.java │ │ │ │ ├── OrderCondition.java │ │ │ │ ├── PageQueryParam.java │ │ │ │ └── QueryParam.java │ │ │ ├── request/ │ │ │ │ └── PageQueryRequest.java │ │ │ └── result/ │ │ │ ├── ActionResult.java │ │ │ ├── DataResult.java │ │ │ ├── ListResult.java │ │ │ ├── PageResult.java │ │ │ └── web/ │ │ │ └── WebPageResult.java │ │ ├── chat2db-server-tools-common/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── tools/ │ │ │ └── common/ │ │ │ ├── config/ │ │ │ │ ├── Chat2dbProperties.java │ │ │ │ └── GlobalDict.java │ │ │ ├── enums/ │ │ │ │ └── ModeEnum.java │ │ │ ├── exception/ │ │ │ │ ├── ConnectionException.java │ │ │ │ ├── DataAlreadyExistsBusinessException.java │ │ │ │ ├── DataNotFoundException.java │ │ │ │ ├── NeedLoggedInBusinessException.java │ │ │ │ ├── ParamBusinessException.java │ │ │ │ ├── PermissionDeniedBusinessException.java │ │ │ │ └── RedirectBusinessException.java │ │ │ ├── model/ │ │ │ │ ├── ConfigJson.java │ │ │ │ ├── Context.java │ │ │ │ ├── EasyLambdaQueryWrapper.java │ │ │ │ ├── IntegerWrapper.java │ │ │ │ └── LoginUser.java │ │ │ └── util/ │ │ │ ├── ConfigUtils.java │ │ │ ├── ContextUtils.java │ │ │ ├── EasyBooleanUtils.java │ │ │ ├── EasyCollectionUtils.java │ │ │ ├── EasyEnumUtils.java │ │ │ ├── EasyIntegerUtils.java │ │ │ ├── EasyOptionalUtils.java │ │ │ ├── EasySqlUtils.java │ │ │ ├── EasyStringUtils.java │ │ │ ├── I18nUtils.java │ │ │ └── LogUtils.java │ │ └── pom.xml │ ├── chat2db-server-web/ │ │ ├── chat2db-server-admin-api/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── admin/ │ │ │ └── api/ │ │ │ └── controller/ │ │ │ ├── common/ │ │ │ │ ├── CommonAdminController.java │ │ │ │ ├── converter/ │ │ │ │ │ └── CommonAdminConverter.java │ │ │ │ ├── request/ │ │ │ │ │ └── TeamUserPageQueryRequest.java │ │ │ │ └── vo/ │ │ │ │ └── TeamUserListVO.java │ │ │ ├── datasource/ │ │ │ │ ├── DataSourceAccessAdminController.java │ │ │ │ ├── DataSourceAdminController.java │ │ │ │ ├── converter/ │ │ │ │ │ ├── DataSourceAccessAdminConverter.java │ │ │ │ │ └── DataSourceAdminConverter.java │ │ │ │ ├── request/ │ │ │ │ │ ├── DataSourceAccessBatchCreateRequest.java │ │ │ │ │ ├── DataSourceAccessObjectRequest.java │ │ │ │ │ ├── DataSourceAccessPageQueryRequest.java │ │ │ │ │ ├── DataSourceCloneRequest.java │ │ │ │ │ ├── DataSourceCreateRequest.java │ │ │ │ │ └── DataSourceUpdateRequest.java │ │ │ │ └── vo/ │ │ │ │ ├── DataSourceAccessObjectVO.java │ │ │ │ ├── DataSourceAccessPageQueryVO.java │ │ │ │ ├── DataSourcePageQueryVO.java │ │ │ │ └── SimpleDataSourceVO.java │ │ │ ├── team/ │ │ │ │ ├── TeamAdminController.java │ │ │ │ ├── TeamDataSourceAdminController.java │ │ │ │ ├── TeamUserAdminController.java │ │ │ │ ├── converter/ │ │ │ │ │ ├── TeamAdminConverter.java │ │ │ │ │ ├── TeamDataSourcesAdminConverter.java │ │ │ │ │ └── TeamUserAdminConverter.java │ │ │ │ ├── request/ │ │ │ │ │ ├── TeamCreateRequest.java │ │ │ │ │ ├── TeamDataSourceBatchCreateRequest.java │ │ │ │ │ ├── TeamPageCommonQueryRequest.java │ │ │ │ │ ├── TeamUpdateRequest.java │ │ │ │ │ └── TeamUserBatchCreateRequest.java │ │ │ │ └── vo/ │ │ │ │ ├── SimpleTeamVO.java │ │ │ │ ├── TeamDataSourcePageQueryVO.java │ │ │ │ ├── TeamPageQueryVO.java │ │ │ │ └── TeamUserPageQueryVO.java │ │ │ └── user/ │ │ │ ├── UserAdminController.java │ │ │ ├── UserDataSourceAdminController.java │ │ │ ├── UserTeamAdminController.java │ │ │ ├── converter/ │ │ │ │ ├── UserAdminConverter.java │ │ │ │ ├── UserDataSourcesAdminConverter.java │ │ │ │ └── UserTeamAdminConverter.java │ │ │ ├── request/ │ │ │ │ ├── UserCreateRequest.java │ │ │ │ ├── UserDataSourceBatchCreateRequest.java │ │ │ │ ├── UserPageCommonQueryRequest.java │ │ │ │ ├── UserTeamBatchCreateRequest.java │ │ │ │ └── UserUpdateRequest.java │ │ │ └── vo/ │ │ │ ├── SimpleUserVO.java │ │ │ ├── UserDataSourcePageQueryVO.java │ │ │ ├── UserPageQueryVO.java │ │ │ └── UserTeamPageQueryVO.java │ │ ├── chat2db-server-common-api/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── common/ │ │ │ └── api/ │ │ │ └── controller/ │ │ │ ├── CommonCommonController.java │ │ │ ├── converter/ │ │ │ │ └── EnvironmentCommonConverter.java │ │ │ ├── request/ │ │ │ │ ├── CommonPageQueryRequest.java │ │ │ │ └── CommonQueryRequest.java │ │ │ └── vo/ │ │ │ ├── SimpleEnvironmentVO.java │ │ │ └── SimpleUserVO.java │ │ ├── chat2db-server-web-api/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── ai/ │ │ │ │ └── chat2db/ │ │ │ │ └── server/ │ │ │ │ └── web/ │ │ │ │ └── api/ │ │ │ │ ├── aspect/ │ │ │ │ │ ├── ConnectionInfoAspect.java │ │ │ │ │ └── ConnectionInfoHandler.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── PageController.java │ │ │ │ │ ├── ai/ │ │ │ │ │ │ ├── AiConfigController.java │ │ │ │ │ │ ├── ChatController.java │ │ │ │ │ │ ├── DocParser/ │ │ │ │ │ │ │ ├── AbstractParser.java │ │ │ │ │ │ │ └── PdfParse.java │ │ │ │ │ │ ├── EmbeddingController.java │ │ │ │ │ │ ├── KnowledgeController.java │ │ │ │ │ │ ├── TextGenerationController.java │ │ │ │ │ │ ├── azure/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── AzureOpenAIClient.java │ │ │ │ │ │ │ │ └── AzureOpenAiStreamClient.java │ │ │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ │ │ └── AzureHeaderAuthorizationInterceptor.java │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ └── AzureOpenAIEventSourceListener.java │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ ├── AzureChatChoice.java │ │ │ │ │ │ │ │ ├── AzureChatCompletions.java │ │ │ │ │ │ │ │ ├── AzureChatCompletionsOptions.java │ │ │ │ │ │ │ │ ├── AzureChatMessage.java │ │ │ │ │ │ │ │ ├── AzureChatRole.java │ │ │ │ │ │ │ │ ├── AzureChoice.java │ │ │ │ │ │ │ │ ├── AzureCompletions.java │ │ │ │ │ │ │ │ ├── AzureCompletionsFinishReason.java │ │ │ │ │ │ │ │ ├── AzureCompletionsLogProbabilityModel.java │ │ │ │ │ │ │ │ ├── AzureCompletionsUsage.java │ │ │ │ │ │ │ │ └── AzureExpandableStringEnum.java │ │ │ │ │ │ │ └── util/ │ │ │ │ │ │ │ └── AzureReflectionUtils.java │ │ │ │ │ │ ├── baichuan/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── BaichuanAIClient.java │ │ │ │ │ │ │ │ └── BaichuanAIStreamClient.java │ │ │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ │ │ └── BaichuanHeaderAuthorizationInterceptor.java │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ └── BaichuanChatAIEventSourceListener.java │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ ├── BaichuanChatCompletions.java │ │ │ │ │ │ │ ├── BaichuanChatCompletionsOptions.java │ │ │ │ │ │ │ ├── BaichuanChatCompletionsUsage.java │ │ │ │ │ │ │ ├── BaichuanChatData.java │ │ │ │ │ │ │ └── BaichuanChatMessage.java │ │ │ │ │ │ ├── chat2db/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── Chat2DBAIStreamClient.java │ │ │ │ │ │ │ │ └── Chat2dbAIClient.java │ │ │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ │ │ └── Chat2dbHeaderAuthorizationInterceptor.java │ │ │ │ │ │ │ └── listener/ │ │ │ │ │ │ │ └── Chat2dbAIEventSourceListener.java │ │ │ │ │ │ ├── claude/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── ClaudeAIClient.java │ │ │ │ │ │ │ │ └── ClaudeAiStreamClient.java │ │ │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ │ │ └── ClaudeHeaderAuthorizationInterceptor.java │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ └── ClaudeAIEventSourceListener.java │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ ├── ClaudeChatCompletionsOptions.java │ │ │ │ │ │ │ ├── ClaudeChatMessage.java │ │ │ │ │ │ │ ├── ClaudeCompletionResponse.java │ │ │ │ │ │ │ └── ClaudeMessageLimit.java │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── LocalCache.java │ │ │ │ │ │ ├── converter/ │ │ │ │ │ │ │ └── ChatConverter.java │ │ │ │ │ │ ├── enums/ │ │ │ │ │ │ │ ├── GptVersionType.java │ │ │ │ │ │ │ └── PromptType.java │ │ │ │ │ │ ├── fastchat/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── FastChatAIClient.java │ │ │ │ │ │ │ │ ├── FastChatAIStreamClient.java │ │ │ │ │ │ │ │ └── FastChatOpenAiApi.java │ │ │ │ │ │ │ ├── embeddings/ │ │ │ │ │ │ │ │ ├── FastChatEmbedding.java │ │ │ │ │ │ │ │ ├── FastChatEmbeddingResponse.java │ │ │ │ │ │ │ │ └── FastChatItem.java │ │ │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ │ │ └── FastChatHeaderAuthorizationInterceptor.java │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ └── FastChatAIEventSourceListener.java │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ ├── FastChatChoice.java │ │ │ │ │ │ │ ├── FastChatCompletions.java │ │ │ │ │ │ │ ├── FastChatCompletionsFinishReason.java │ │ │ │ │ │ │ ├── FastChatCompletionsOptions.java │ │ │ │ │ │ │ ├── FastChatCompletionsUsage.java │ │ │ │ │ │ │ ├── FastChatExpandableStringEnum.java │ │ │ │ │ │ │ ├── FastChatMessage.java │ │ │ │ │ │ │ └── FastChatRole.java │ │ │ │ │ │ ├── openai/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ └── OpenAIClient.java │ │ │ │ │ │ │ └── listener/ │ │ │ │ │ │ │ └── OpenAIEventSourceListener.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ ├── ChatQueryRequest.java │ │ │ │ │ │ │ └── ChatRequest.java │ │ │ │ │ │ ├── response/ │ │ │ │ │ │ │ ├── ChatChoice.java │ │ │ │ │ │ │ └── ChatCompletionResponse.java │ │ │ │ │ │ ├── rest/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── RestAIClient.java │ │ │ │ │ │ │ │ └── RestAIStreamClient.java │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ └── RestAIEventSourceListener.java │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ ├── RestAIChatCompletions.java │ │ │ │ │ │ │ └── RestAiCompletion.java │ │ │ │ │ │ ├── tongyi/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── TongyiChatAIClient.java │ │ │ │ │ │ │ │ └── TongyiChatAIStreamClient.java │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ └── TongyiChatAIEventSourceListener.java │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ ├── TongyiChatCompletions.java │ │ │ │ │ │ │ ├── TongyiChatCompletionsOptions.java │ │ │ │ │ │ │ ├── TongyiChatCompletionsUsage.java │ │ │ │ │ │ │ ├── TongyiChatMessage.java │ │ │ │ │ │ │ └── TongyiChatOutput.java │ │ │ │ │ │ ├── wenxin/ │ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ │ ├── WenxinAIClient.java │ │ │ │ │ │ │ │ └── WenxinAIStreamClient.java │ │ │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ │ │ └── AccessTokenInterceptor.java │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ └── WenxinAIEventSourceListener.java │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── WenxinChatCompletions.java │ │ │ │ │ │ └── zhipu/ │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ ├── ZhipuChatAIClient.java │ │ │ │ │ │ │ └── ZhipuChatAIStreamClient.java │ │ │ │ │ │ ├── interceptor/ │ │ │ │ │ │ │ └── ZhipuChatHeaderAuthorizationInterceptor.java │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ └── ZhipuChatAIEventSourceListener.java │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── ZhipuChatBody.java │ │ │ │ │ │ │ ├── ZhipuChatCompletions.java │ │ │ │ │ │ │ └── ZhipuChatCompletionsOptions.java │ │ │ │ │ │ └── util/ │ │ │ │ │ │ └── ZhipuUtils.java │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── ConfigController.java │ │ │ │ │ │ └── request/ │ │ │ │ │ │ ├── AIConfigCreateRequest.java │ │ │ │ │ │ ├── AISystemConfigRequest.java │ │ │ │ │ │ └── SystemConfigRequest.java │ │ │ │ │ ├── dashboard/ │ │ │ │ │ │ ├── ChartController.java │ │ │ │ │ │ ├── DashboardController.java │ │ │ │ │ │ ├── converter/ │ │ │ │ │ │ │ ├── ChartWebConverter.java │ │ │ │ │ │ │ └── DashboardWebConverter.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ ├── ChartCreateRequest.java │ │ │ │ │ │ │ ├── ChartQueryRequest.java │ │ │ │ │ │ │ ├── ChartUpdateRequest.java │ │ │ │ │ │ │ ├── DashboardCreateRequest.java │ │ │ │ │ │ │ └── DashboardUpdateRequest.java │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ ├── ChartVO.java │ │ │ │ │ │ └── DashboardVO.java │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── source/ │ │ │ │ │ │ ├── DataSourceController.java │ │ │ │ │ │ ├── converter/ │ │ │ │ │ │ │ ├── DataSourceWebConverter.java │ │ │ │ │ │ │ └── SSHWebConverter.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ ├── ConsoleCloseRequest.java │ │ │ │ │ │ │ ├── ConsoleConnectRequest.java │ │ │ │ │ │ │ ├── DataSourceAttachRequest.java │ │ │ │ │ │ │ ├── DataSourceBaseRequest.java │ │ │ │ │ │ │ ├── DataSourceBaseRequestInfo.java │ │ │ │ │ │ │ ├── DataSourceCloneRequest.java │ │ │ │ │ │ │ ├── DataSourceCloseRequest.java │ │ │ │ │ │ │ ├── DataSourceConsoleRequestInfo.java │ │ │ │ │ │ │ ├── DataSourceCreateRequest.java │ │ │ │ │ │ │ ├── DataSourceQueryRequest.java │ │ │ │ │ │ │ ├── DataSourceTestRequest.java │ │ │ │ │ │ │ ├── DataSourceUpdateRequest.java │ │ │ │ │ │ │ └── SSHTestRequest.java │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ ├── DataSourceVO.java │ │ │ │ │ │ ├── DatabaseVO.java │ │ │ │ │ │ └── EnvVO.java │ │ │ │ │ ├── driver/ │ │ │ │ │ │ ├── JdbcDriverController.java │ │ │ │ │ │ └── request/ │ │ │ │ │ │ └── JdbcDriverRequest.java │ │ │ │ │ ├── ncx/ │ │ │ │ │ │ ├── ConverterController.java │ │ │ │ │ │ ├── cipher/ │ │ │ │ │ │ │ ├── CommonCipher.java │ │ │ │ │ │ │ ├── Navicat11Cipher.java │ │ │ │ │ │ │ └── Navicat12Cipher.java │ │ │ │ │ │ ├── dbeaver/ │ │ │ │ │ │ │ ├── DBSValueEncryptor.java │ │ │ │ │ │ │ └── DefaultValueEncryptor.java │ │ │ │ │ │ ├── enums/ │ │ │ │ │ │ │ ├── DataBaseType.java │ │ │ │ │ │ │ ├── ExportConstants.java │ │ │ │ │ │ │ └── VersionEnum.java │ │ │ │ │ │ ├── factory/ │ │ │ │ │ │ │ └── CipherFactory.java │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ ├── ConverterService.java │ │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ │ └── ConverterServiceImpl.java │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ └── UploadVO.java │ │ │ │ │ ├── operation/ │ │ │ │ │ │ ├── log/ │ │ │ │ │ │ │ ├── OperationLogController.java │ │ │ │ │ │ │ ├── converter/ │ │ │ │ │ │ │ │ └── OperationLogWebConverter.java │ │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ │ ├── OperationLogCreateRequest.java │ │ │ │ │ │ │ │ └── OperationLogQueryRequest.java │ │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ │ └── OperationLogVO.java │ │ │ │ │ │ └── saved/ │ │ │ │ │ │ ├── OperationSavedController.java │ │ │ │ │ │ ├── converter/ │ │ │ │ │ │ │ └── OperationWebConverter.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ ├── BatchTabCloseRequest.java │ │ │ │ │ │ │ ├── OperationCreateRequest.java │ │ │ │ │ │ │ ├── OperationQueryRequest.java │ │ │ │ │ │ │ └── OperationUpdateRequest.java │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ └── OperationVO.java │ │ │ │ │ ├── pin/ │ │ │ │ │ │ ├── PinController.java │ │ │ │ │ │ ├── converter/ │ │ │ │ │ │ │ └── PinWebConverter.java │ │ │ │ │ │ └── request/ │ │ │ │ │ │ └── PinTableRequest.java │ │ │ │ │ ├── rdb/ │ │ │ │ │ │ ├── DatabaseController.java │ │ │ │ │ │ ├── FunctionController.java │ │ │ │ │ │ ├── ProcedureController.java │ │ │ │ │ │ ├── RdbDdlController.java │ │ │ │ │ │ ├── RdbDmlController.java │ │ │ │ │ │ ├── RdbDmlExportController.java │ │ │ │ │ │ ├── RdbDocController.java │ │ │ │ │ │ ├── SchemaController.java │ │ │ │ │ │ ├── SequenceController.java │ │ │ │ │ │ ├── TableController.java │ │ │ │ │ │ ├── TriggerController.java │ │ │ │ │ │ ├── ViewController.java │ │ │ │ │ │ ├── converter/ │ │ │ │ │ │ │ ├── DatabaseConverter.java │ │ │ │ │ │ │ ├── FunctionConverter.java │ │ │ │ │ │ │ ├── ProcedureConverter.java │ │ │ │ │ │ │ └── RdbWebConverter.java │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ ├── BaseDataExporter.java │ │ │ │ │ │ │ ├── BaseDataImporter.java │ │ │ │ │ │ │ ├── BaseExcelExporter.java │ │ │ │ │ │ │ ├── BaseExcelImporter.java │ │ │ │ │ │ │ ├── DataExportStrategy.java │ │ │ │ │ │ │ ├── DataImportStrategy.java │ │ │ │ │ │ │ ├── csv/ │ │ │ │ │ │ │ │ ├── CsvDataExporter.java │ │ │ │ │ │ │ │ └── CsvDataImporter.java │ │ │ │ │ │ │ ├── factory/ │ │ │ │ │ │ │ │ ├── DataExportFactory.java │ │ │ │ │ │ │ │ └── DataImportFactory.java │ │ │ │ │ │ │ ├── json/ │ │ │ │ │ │ │ │ ├── JsonDataExporter.java │ │ │ │ │ │ │ │ └── JsonDataImporter.java │ │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ │ ├── DatabaseDataService.java │ │ │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ │ │ └── DatabaseDataImpl.java │ │ │ │ │ │ │ ├── sql/ │ │ │ │ │ │ │ │ └── SqlDataExporter.java │ │ │ │ │ │ │ ├── task/ │ │ │ │ │ │ │ │ ├── TaskManager.java │ │ │ │ │ │ │ │ └── TaskState.java │ │ │ │ │ │ │ ├── xls/ │ │ │ │ │ │ │ │ ├── XlsDataExporter.java │ │ │ │ │ │ │ │ └── XlsDataImporter.java │ │ │ │ │ │ │ └── xlsx/ │ │ │ │ │ │ │ ├── XlsxDataExporter.java │ │ │ │ │ │ │ └── XlsxDataImporter.java │ │ │ │ │ │ ├── doc/ │ │ │ │ │ │ │ ├── DatabaseExportService.java │ │ │ │ │ │ │ ├── adaptive/ │ │ │ │ │ │ │ │ ├── CustomCellWriteHeightConfig.java │ │ │ │ │ │ │ │ └── CustomCellWriteWidthConfig.java │ │ │ │ │ │ │ ├── conf/ │ │ │ │ │ │ │ │ └── ExportOptions.java │ │ │ │ │ │ │ ├── constant/ │ │ │ │ │ │ │ │ ├── CommonConstant.java │ │ │ │ │ │ │ │ └── PatternConstant.java │ │ │ │ │ │ │ ├── event/ │ │ │ │ │ │ │ │ └── TemplateEvent.java │ │ │ │ │ │ │ ├── export/ │ │ │ │ │ │ │ │ ├── ExportExcelService.java │ │ │ │ │ │ │ │ ├── ExportHtmlService.java │ │ │ │ │ │ │ │ ├── ExportMarkdownService.java │ │ │ │ │ │ │ │ ├── ExportPdfService.java │ │ │ │ │ │ │ │ └── ExportWordSuperService.java │ │ │ │ │ │ │ ├── merge/ │ │ │ │ │ │ │ │ └── MyMergeExcel.java │ │ │ │ │ │ │ └── style/ │ │ │ │ │ │ │ └── CustomExcelStyle.java │ │ │ │ │ │ ├── factory/ │ │ │ │ │ │ │ └── ExportServiceFactory.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ ├── ColumnRequest.java │ │ │ │ │ │ │ ├── DataExportRequest.java │ │ │ │ │ │ │ ├── DatabaseCreateRequest.java │ │ │ │ │ │ │ ├── DatabaseExportDataRequest.java │ │ │ │ │ │ │ ├── DatabaseExportRequest.java │ │ │ │ │ │ │ ├── DdlCountRequest.java │ │ │ │ │ │ │ ├── DdlExportRequest.java │ │ │ │ │ │ │ ├── DdlRequest.java │ │ │ │ │ │ │ ├── DmlRequest.java │ │ │ │ │ │ │ ├── DmlSqlCopyRequest.java │ │ │ │ │ │ │ ├── DmlTableRequest.java │ │ │ │ │ │ │ ├── FunctionDetailRequest.java │ │ │ │ │ │ │ ├── FunctionPageRequest.java │ │ │ │ │ │ │ ├── FunctionUpdateRequest.java │ │ │ │ │ │ │ ├── GroupByRequest.java │ │ │ │ │ │ │ ├── IndexRequest.java │ │ │ │ │ │ │ ├── NewTableSqlRequest.java │ │ │ │ │ │ │ ├── OrderByRequest.java │ │ │ │ │ │ │ ├── ProcedureDetailRequest.java │ │ │ │ │ │ │ ├── ProcedurePageRequest.java │ │ │ │ │ │ │ ├── ProcedureUpdateRequest.java │ │ │ │ │ │ │ ├── SchemaCreateRequest.java │ │ │ │ │ │ │ ├── SchemaQueryRequest.java │ │ │ │ │ │ │ ├── SelectResultUpdateRequest.java │ │ │ │ │ │ │ ├── SequenceBriefQueryRequest.java │ │ │ │ │ │ │ ├── SequenceDeleteRequest.java │ │ │ │ │ │ │ ├── SequenceDetailQueryRequest.java │ │ │ │ │ │ │ ├── SequenceModifySqlRequest.java │ │ │ │ │ │ │ ├── SequenceRequest.java │ │ │ │ │ │ │ ├── TableBriefQueryRequest.java │ │ │ │ │ │ │ ├── TableCreateDdlQueryRequest.java │ │ │ │ │ │ │ ├── TableDeleteRequest.java │ │ │ │ │ │ │ ├── TableDetailQueryRequest.java │ │ │ │ │ │ │ ├── TableMilvusQueryRequest.java │ │ │ │ │ │ │ ├── TableModifySqlRequest.java │ │ │ │ │ │ │ ├── TableQueryRequest.java │ │ │ │ │ │ │ ├── TableRequest.java │ │ │ │ │ │ │ ├── TableUpdateDdlQueryRequest.java │ │ │ │ │ │ │ ├── TriggerDetailRequest.java │ │ │ │ │ │ │ ├── TriggerPageRequest.java │ │ │ │ │ │ │ ├── TypeQueryRequest.java │ │ │ │ │ │ │ ├── UpdateDatabaseRequest.java │ │ │ │ │ │ │ └── UpdateSchemaRequest.java │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ ├── ColumnVO.java │ │ │ │ │ │ ├── ExecuteResultVO.java │ │ │ │ │ │ ├── IndexColumnVO.java │ │ │ │ │ │ ├── IndexVO.java │ │ │ │ │ │ ├── KeyVO.java │ │ │ │ │ │ ├── MetaSchemaVO.java │ │ │ │ │ │ ├── SchemaVO.java │ │ │ │ │ │ ├── SequenceVO.java │ │ │ │ │ │ ├── SqlVO.java │ │ │ │ │ │ ├── TableVO.java │ │ │ │ │ │ └── ViewVO.java │ │ │ │ │ ├── redis/ │ │ │ │ │ │ ├── RedisKeyManageController.java │ │ │ │ │ │ ├── RedisKeyValueManageController.java │ │ │ │ │ │ ├── request/ │ │ │ │ │ │ │ ├── KeyCreateRequest.java │ │ │ │ │ │ │ ├── KeyDeleteRequest.java │ │ │ │ │ │ │ ├── KeyQueryRequest.java │ │ │ │ │ │ │ ├── KeyUpdateRequest.java │ │ │ │ │ │ │ ├── KeyValueManageRequest.java │ │ │ │ │ │ │ └── ValueUpdateRequest.java │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ └── KeyVO.java │ │ │ │ │ ├── sql/ │ │ │ │ │ │ ├── SqlController.java │ │ │ │ │ │ └── request/ │ │ │ │ │ │ └── SqlFormatRequest.java │ │ │ │ │ ├── system/ │ │ │ │ │ │ ├── SystemController.java │ │ │ │ │ │ ├── util/ │ │ │ │ │ │ │ └── SystemUtils.java │ │ │ │ │ │ └── vo/ │ │ │ │ │ │ ├── AppVersionVO.java │ │ │ │ │ │ └── SystemVO.java │ │ │ │ │ ├── task/ │ │ │ │ │ │ ├── ExportController.java │ │ │ │ │ │ ├── TaskController.java │ │ │ │ │ │ └── biz/ │ │ │ │ │ │ └── TaskBizService.java │ │ │ │ │ └── user/ │ │ │ │ │ ├── UserController.java │ │ │ │ │ ├── converter/ │ │ │ │ │ │ └── UserWebConverter.java │ │ │ │ │ ├── request/ │ │ │ │ │ │ ├── UserCreateRequest.java │ │ │ │ │ │ ├── UserQueryRequest.java │ │ │ │ │ │ └── UserUpdateRequest.java │ │ │ │ │ └── vo/ │ │ │ │ │ └── UserVO.java │ │ │ │ ├── http/ │ │ │ │ │ ├── GatewayClientService.java │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── EsTableSchema.java │ │ │ │ │ │ ├── Knowledge.java │ │ │ │ │ │ └── TableSchema.java │ │ │ │ │ ├── request/ │ │ │ │ │ │ ├── EsTableSchemaRequest.java │ │ │ │ │ │ ├── KnowledgeRequest.java │ │ │ │ │ │ ├── SqlExecuteHistoryCreateRequest.java │ │ │ │ │ │ ├── TableSchemaRequest.java │ │ │ │ │ │ └── WhiteListRequest.java │ │ │ │ │ └── response/ │ │ │ │ │ ├── ApiKeyResponse.java │ │ │ │ │ ├── EsTableSchemaResponse.java │ │ │ │ │ ├── InviteQrCodeResponse.java │ │ │ │ │ ├── KnowledgeResponse.java │ │ │ │ │ ├── QrCodeResponse.java │ │ │ │ │ └── TableSchemaResponse.java │ │ │ │ ├── util/ │ │ │ │ │ ├── AddToTopic.java │ │ │ │ │ ├── ApplicationContextUtil.java │ │ │ │ │ ├── FileUtils.java │ │ │ │ │ ├── StringUtils.java │ │ │ │ │ └── XMLUtils.java │ │ │ │ └── ws/ │ │ │ │ ├── WsConfig.java │ │ │ │ ├── WsMessage.java │ │ │ │ ├── WsResult.java │ │ │ │ ├── WsServer.java │ │ │ │ └── WsService.java │ │ │ └── resources/ │ │ │ └── template/ │ │ │ ├── sub_template_diy.docx │ │ │ ├── template.html │ │ │ └── template_diy.docx │ │ └── pom.xml │ ├── chat2db-server-web-start/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── ai/ │ │ │ └── chat2db/ │ │ │ └── server/ │ │ │ └── web/ │ │ │ └── start/ │ │ │ ├── Application.java │ │ │ ├── config/ │ │ │ │ ├── StdinReader.java │ │ │ │ ├── config/ │ │ │ │ │ ├── AsyncContextRefreshedListener.java │ │ │ │ │ ├── Chat2dbForestConfiguration.java │ │ │ │ │ ├── Chat2dbWebMvcConfigurer.java │ │ │ │ │ ├── JarDownloadTask.java │ │ │ │ │ └── WebLogConfiguration.java │ │ │ │ ├── i18n/ │ │ │ │ │ └── I18nConfig.java │ │ │ │ ├── interceptor/ │ │ │ │ │ └── CorsFilter.java │ │ │ │ ├── listener/ │ │ │ │ │ ├── DbhubTomcatConnectorCustomizer.java │ │ │ │ │ ├── FailedEventApplicationListener.java │ │ │ │ │ ├── ManageApplicationListener.java │ │ │ │ │ └── manage/ │ │ │ │ │ ├── ManageMessage.java │ │ │ │ │ └── MessageTypeEnum.java │ │ │ │ ├── mybatis/ │ │ │ │ │ └── MyBatisPlusConfig.java │ │ │ │ └── oauth/ │ │ │ │ ├── SaLogForSlf4j.java │ │ │ │ └── SaTokenConfigure.java │ │ │ ├── controller/ │ │ │ │ ├── oauth/ │ │ │ │ │ ├── OauthController.java │ │ │ │ │ └── request/ │ │ │ │ │ └── LoginRequest.java │ │ │ │ └── thymeleaf/ │ │ │ │ └── ThymeleafController.java │ │ │ ├── exception/ │ │ │ │ ├── EasyControllerExceptionHandler.java │ │ │ │ └── convertor/ │ │ │ │ ├── BindExceptionConvertor.java │ │ │ │ ├── BusinessExceptionConvertor.java │ │ │ │ ├── DefaultExceptionConvertor.java │ │ │ │ ├── ExceptionConvertor.java │ │ │ │ ├── ExceptionConvertorUtils.java │ │ │ │ ├── MaxUploadSizeExceededExceptionConvertor.java │ │ │ │ ├── MethodArgumentNotValidExceptionConvertor.java │ │ │ │ ├── MethodArgumentTypeMismatchExceptionConvertor.java │ │ │ │ └── ParamExceptionConvertor.java │ │ │ └── log/ │ │ │ ├── EasyLogSink.java │ │ │ ├── LogOncePerRequestFilter.java │ │ │ └── WebLog.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring.factories │ │ ├── application-dev.yml │ │ ├── application-release.yml │ │ ├── application-test.yml │ │ ├── application.yml │ │ ├── i18n/ │ │ │ ├── messages.properties │ │ │ ├── messages_en_US.properties │ │ │ └── messages_zh_CN.properties │ │ ├── logback-spring.xml │ │ └── thymeleaf/ │ │ └── template.html │ ├── chat2db-spi/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── ai/ │ │ └── chat2db/ │ │ └── spi/ │ │ ├── ColumnBuilder.java │ │ ├── CommandExecutor.java │ │ ├── DBManage.java │ │ ├── MetaData.java │ │ ├── Plugin.java │ │ ├── SqlBuilder.java │ │ ├── ValueHandler.java │ │ ├── ValueProcessor.java │ │ ├── config/ │ │ │ ├── DBConfig.java │ │ │ └── DriverConfig.java │ │ ├── enums/ │ │ │ ├── CellTypeEnum.java │ │ │ ├── CollationEnum.java │ │ │ ├── DataTypeEnum.java │ │ │ ├── DmlType.java │ │ │ ├── EditStatus.java │ │ │ ├── IndexTypeEnum.java │ │ │ └── SqlTypeEnum.java │ │ ├── jdbc/ │ │ │ ├── BaseValueProcessor.java │ │ │ ├── DefaultDBManage.java │ │ │ ├── DefaultMetaService.java │ │ │ ├── DefaultSqlBuilder.java │ │ │ ├── DefaultValueHandler.java │ │ │ └── DefaultValueProcessor.java │ │ ├── model/ │ │ │ ├── AsyncCall.java │ │ │ ├── AsyncContext.java │ │ │ ├── Cell.java │ │ │ ├── Charset.java │ │ │ ├── Collation.java │ │ │ ├── ColumnType.java │ │ │ ├── Command.java │ │ │ ├── CreateTableSql.java │ │ │ ├── DataSourceConnect.java │ │ │ ├── DataType.java │ │ │ ├── Database.java │ │ │ ├── DefaultValue.java │ │ │ ├── DriverEntry.java │ │ │ ├── EngineType.java │ │ │ ├── ExecuteResult.java │ │ │ ├── Function.java │ │ │ ├── Header.java │ │ │ ├── IndexType.java │ │ │ ├── JDBCDataValue.java │ │ │ ├── KeyValue.java │ │ │ ├── MetaSchema.java │ │ │ ├── OrderBy.java │ │ │ ├── Procedure.java │ │ │ ├── QueryResult.java │ │ │ ├── ResultOperation.java │ │ │ ├── SQLDataValue.java │ │ │ ├── SSHInfo.java │ │ │ ├── SSLInfo.java │ │ │ ├── Schema.java │ │ │ ├── Sequence.java │ │ │ ├── ShowDatabaseResult.java │ │ │ ├── SimpleColumn.java │ │ │ ├── SimpleSequence.java │ │ │ ├── SimpleTable.java │ │ │ ├── Sql.java │ │ │ ├── Table.java │ │ │ ├── TableColumn.java │ │ │ ├── TableIndex.java │ │ │ ├── TableIndexColumn.java │ │ │ ├── TableMeta.java │ │ │ ├── Trigger.java │ │ │ └── Type.java │ │ ├── sql/ │ │ │ ├── Chat2DBContext.java │ │ │ ├── ConnectInfo.java │ │ │ ├── ConnectionPool.java │ │ │ ├── DocumentUtils.java │ │ │ ├── IDriverManager.java │ │ │ ├── MongExtendedJsonObjectIdConverter.java │ │ │ ├── ResultSetConsumer.java │ │ │ ├── ResultSetFunction.java │ │ │ ├── SQLExecutor.java │ │ │ └── SqlParseUtils.java │ │ ├── ssh/ │ │ │ ├── MyUserInfo.java │ │ │ └── SSHManager.java │ │ └── util/ │ │ ├── ExceptionUtils.java │ │ ├── FileUtils.java │ │ ├── Holder.java │ │ ├── JdbcJarUtils.java │ │ ├── JdbcUtils.java │ │ ├── LexerFactories.java │ │ ├── LexerFactory.java │ │ ├── LexerTokenDefinition.java │ │ ├── LexerTokenDefinitions.java │ │ ├── OBOraclePLLexerDefinition.java │ │ ├── OBOraclePLLexerFactory.java │ │ ├── OracleLexerDefinition.java │ │ ├── OracleLexerFactory.java │ │ ├── ResultSetUtils.java │ │ ├── SortUtils.java │ │ ├── SplitSqlString.java │ │ ├── SqlSplitProcessor.java │ │ ├── SqlSplitter.java │ │ ├── SqlStatementIterator.java │ │ ├── SqlUtils.java │ │ └── TableUtils.java │ ├── lombok.config │ └── pom.xml ├── docker/ │ ├── Dockerfile │ ├── docker-build.sh │ ├── docker-compose-start.sh │ ├── docker-compose.yml │ ├── docker-start.sh │ └── test/ │ ├── docker-compose.yml │ ├── redis/ │ │ ├── data/ │ │ │ └── dump.rdb │ │ └── redis.conf │ ├── start.sh │ └── stop.sh ├── document/ │ ├── git/ │ │ └── git.sh │ ├── sql/ │ │ └── mysql.sql │ └── style/ │ └── Alibaba_CodeStyle.xml └── script/ └── local-client-build.sh