├── .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 ├── public │ └── logo.ico ├── readme.md ├── src │ ├── assets │ │ ├── font │ │ │ ├── HarmonyOS_Sans_Regular.woff2 │ │ │ ├── demo.css │ │ │ ├── demo_index.html │ │ │ ├── iconfont.css │ │ │ ├── iconfont.js │ │ │ ├── iconfont.json │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ │ ├── img │ │ │ ├── add.svg │ │ │ ├── ai.svg │ │ │ ├── connection.svg │ │ │ ├── databaseImg │ │ │ │ ├── h2.png │ │ │ │ ├── mysql.png │ │ │ │ ├── other.png │ │ │ │ └── redis.png │ │ │ ├── empty.svg │ │ │ ├── login-bg.svg │ │ │ ├── theme-auto.png │ │ │ ├── theme-dark.png │ │ │ └── theme-light.png │ │ └── logo │ │ │ ├── logo.icns │ │ │ ├── logo.ico │ │ │ ├── logo.png │ │ │ └── logo.webp │ ├── 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 │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ │ └── yarn.lock │ ├── pages │ │ ├── demo │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── document.ejs │ │ ├── login │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── main │ │ │ ├── connection │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── dashboard │ │ │ │ ├── chart-item │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── chart │ │ │ │ │ ├── bar │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── line │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── pie │ │ │ │ │ │ ├── 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 │ │ ├── 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 └── yarn.lock ├── 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 │ │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── static │ │ │ └── icon │ │ │ │ ├── h2.png │ │ │ │ ├── mysql.png │ │ │ │ ├── oceanbase.png │ │ │ │ ├── oracle.png │ │ │ │ ├── postgresql.png │ │ │ │ ├── sqlite.png │ │ │ │ └── sqlserver.png │ │ │ └── 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 │ │ │ ├── SqlTeset.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-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 │ │ ├── icon │ │ ├── h2.png │ │ ├── mysql.png │ │ ├── oceanbase.png │ │ ├── oracle.png │ │ ├── postgresql.png │ │ ├── sqlite.png │ │ └── sqlserver.png │ │ ├── logback-spring.xml │ │ ├── static │ │ └── icon │ │ │ ├── h2.png │ │ │ ├── mysql.png │ │ │ ├── oceanbase.png │ │ │ ├── oracle.png │ │ │ ├── postgresql.png │ │ │ ├── sqlite.png │ │ │ └── sqlserver.png │ │ └── thymeleaf │ │ └── template.html ├── 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 │ │ │ │ │ ├── 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 │ │ │ │ │ │ ├── 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 │ │ │ │ │ │ ├── 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-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 │ │ ├── ShowDatabaseResult.java │ │ ├── SimpleColumn.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 ├── identifier.sqlite ├── 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 ├── image │ ├── img1.webp │ ├── img2.webp │ ├── img3.webp │ ├── img4.webp │ └── logo.ico ├── qrcode │ ├── hexi-weixin.png │ ├── qqqun.png │ ├── weixinqun1.png │ ├── weixinqun2.png │ └── weixinqun3.png ├── sql │ └── mysql.sql └── style │ └── Alibaba_CodeStyle.xml ├── icon.png ├── identifier.sqlite └── script └── local-client-build.sh /.gitattributes: -------------------------------------------------------------------------------- 1 | *.css linguist-language=java 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.yml: -------------------------------------------------------------------------------- 1 | name: 💣 Bug 2 | title: 'Bug: ' 3 | description: bug template 4 | labels: bug 5 | body: 6 | - type: input 7 | id: version 8 | attributes: 9 | label: Chat2DB Version 10 | validations: 11 | required: true 12 | - type: textarea 13 | id: description 14 | attributes: 15 | label: Describe the bug 16 | description: | 17 | If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem and error log. 18 | 清晰的描述遇到的问题,并建议附上错误截图及错误日志。 19 | validations: 20 | required: true -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/optimized.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "💫 Optimized" 3 | about: optimized template 4 | title: '优化: ' 5 | labels: 'optimized' 6 | --- -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/suggest.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "💌 Suggest" 3 | about: suggest template 4 | title: 'suggest: ' 5 | labels: 'suggest' 6 | --- 7 | -------------------------------------------------------------------------------- /chat2db-client/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.env.local 3 | /.umirc.local.ts 4 | /config/config.local.ts 5 | /src/.umi 6 | /src/.umi-production 7 | /src/.umi-test 8 | /src/main/node_modules 9 | /src/main/dist 10 | /dist 11 | .swc 12 | ./yarn-error.log 13 | 14 | 15 | /release 16 | /static 17 | /versions -------------------------------------------------------------------------------- /chat2db-client/.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmmirror.com/ 2 | 3 | -------------------------------------------------------------------------------- /chat2db-client/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .umi 3 | .umi-production 4 | -------------------------------------------------------------------------------- /chat2db-client/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "proseWrap": "never", 6 | "overrides": [{ "files": ".prettierrc", "options": { "parser": "json" } }], 7 | "plugins": ["prettier-plugin-organize-imports", "prettier-plugin-packagejson"] 8 | } -------------------------------------------------------------------------------- /chat2db-client/public/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/public/logo.ico -------------------------------------------------------------------------------- /chat2db-client/src/assets/font/HarmonyOS_Sans_Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/font/HarmonyOS_Sans_Regular.woff2 -------------------------------------------------------------------------------- /chat2db-client/src/assets/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/font/iconfont.ttf -------------------------------------------------------------------------------- /chat2db-client/src/assets/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/font/iconfont.woff -------------------------------------------------------------------------------- /chat2db-client/src/assets/font/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/font/iconfont.woff2 -------------------------------------------------------------------------------- /chat2db-client/src/assets/img/databaseImg/h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/img/databaseImg/h2.png -------------------------------------------------------------------------------- /chat2db-client/src/assets/img/databaseImg/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/img/databaseImg/mysql.png -------------------------------------------------------------------------------- /chat2db-client/src/assets/img/databaseImg/other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/img/databaseImg/other.png -------------------------------------------------------------------------------- /chat2db-client/src/assets/img/databaseImg/redis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/img/databaseImg/redis.png -------------------------------------------------------------------------------- /chat2db-client/src/assets/img/theme-auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/img/theme-auto.png -------------------------------------------------------------------------------- /chat2db-client/src/assets/img/theme-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/img/theme-dark.png -------------------------------------------------------------------------------- /chat2db-client/src/assets/img/theme-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/img/theme-light.png -------------------------------------------------------------------------------- /chat2db-client/src/assets/logo/logo.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/logo/logo.icns -------------------------------------------------------------------------------- /chat2db-client/src/assets/logo/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/logo/logo.ico -------------------------------------------------------------------------------- /chat2db-client/src/assets/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/logo/logo.png -------------------------------------------------------------------------------- /chat2db-client/src/assets/logo/logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/assets/logo/logo.webp -------------------------------------------------------------------------------- /chat2db-client/src/blocks/DatabaseTableEditor/BaseInfo/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../styles/var.less'; 2 | 3 | .baseInfo { 4 | padding: 20px 10px 0px; 5 | display: flex; 6 | // justify-content: center; 7 | height: 100%; 8 | } 9 | 10 | .formBox { 11 | width: 50%; 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-client/src/blocks/DatabaseTableEditor/RealTimeSQL/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../styles/var.less'; 2 | 3 | .realTimeSQL { 4 | } 5 | -------------------------------------------------------------------------------- /chat2db-client/src/blocks/DatabaseTableEditor/RealTimeSQL/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { memo } from 'react'; 2 | import styles from './index.less'; 3 | import classnames from 'classnames'; 4 | 5 | interface IProps { 6 | className?: string; 7 | } 8 | 9 | export default memo((props) => { 10 | const { className } = props; 11 | return ( 12 |
13 |
实时 SQL
14 |
实时 SQL
15 |
16 | ); 17 | }); 18 | -------------------------------------------------------------------------------- /chat2db-client/src/blocks/Setting/AiSetting/index.less: -------------------------------------------------------------------------------- 1 | .aiSqlSource { 2 | display: flex; 3 | margin-bottom: 20px; 4 | } 5 | 6 | .aiSqlSourceTitle { 7 | margin-right: 20px; 8 | min-width: 50px; 9 | } 10 | 11 | .title { 12 | font-size: 14px; 13 | margin-bottom: 12px; 14 | 15 | i { 16 | margin-left: 10px; 17 | color: var(--color-primary); 18 | } 19 | & label{ 20 | font-size: 14px !important; 21 | } 22 | } 23 | 24 | .content { 25 | margin-bottom: 15px; 26 | } 27 | 28 | .bottomButton { 29 | display: flex; 30 | justify-content: flex-end; 31 | margin-top: 20px; 32 | } -------------------------------------------------------------------------------- /chat2db-client/src/blocks/Setting/ProxySetting/index.less: -------------------------------------------------------------------------------- 1 | .title { 2 | font-size: 14px; 3 | margin-bottom: 10px; 4 | 5 | i { 6 | margin-left: 10px; 7 | color: var(--color-primary); 8 | } 9 | } 10 | 11 | .content { 12 | margin-bottom: 15px; 13 | } 14 | 15 | .bottomButton { 16 | display: flex; 17 | justify-content: flex-end; 18 | margin-top: 20px; 19 | } -------------------------------------------------------------------------------- /chat2db-client/src/blocks/Tree/functions/deleteTable.less: -------------------------------------------------------------------------------- 1 | .deleteTableFooter{ 2 | display: flex; 3 | justify-content: center; 4 | button{ 5 | margin: 0px 15px; 6 | } 7 | 8 | } 9 | 10 | .checkContainer{ 11 | margin: 15px 0px 25px; 12 | } 13 | 14 | .deleteModalContent{ 15 | display: flex; 16 | flex-direction: column; 17 | justify-content: center; 18 | font-size: 16px; 19 | font-weight: 500; 20 | text-align: center; 21 | } -------------------------------------------------------------------------------- /chat2db-client/src/blocks/Tree/functions/pinTable.ts: -------------------------------------------------------------------------------- 1 | // 置顶表格 2 | import mysqlService from '@/service/sql'; 3 | export const handelPinTable = ({ treeNodeData,loadData }) => { 4 | const api = treeNodeData.pinned ? 'deleteTablePin' : 'addTablePin'; 5 | mysqlService[api]({ 6 | dataSourceId: treeNodeData.extraParams.dataSourceId, 7 | databaseName: treeNodeData.extraParams.databaseName, 8 | schemaName: treeNodeData.extraParams.schemaName, 9 | tableName: treeNodeData.name, 10 | }).then(()=>{ 11 | loadData({ 12 | refresh: true, 13 | }) 14 | }) 15 | }; 16 | -------------------------------------------------------------------------------- /chat2db-client/src/blocks/Tree/functions/refresh.ts: -------------------------------------------------------------------------------- 1 | import { ITreeNode } from '@/typings'; 2 | 3 | export const refreshTreeNode = (props:{ 4 | treeNodeData: ITreeNode; 5 | }) => { 6 | const { treeNodeData } = props; 7 | } 8 | -------------------------------------------------------------------------------- /chat2db-client/src/blocks/Tree/functions/viewDDL.less: -------------------------------------------------------------------------------- 1 | .monacoEditorBox{ 2 | border: 1px solid var(--color-border); 3 | border-radius: 4px; 4 | height: 60vh; 5 | overflow: hidden; 6 | } -------------------------------------------------------------------------------- /chat2db-client/src/blocks/Tree/hooks/useTreeNodeFocus.ts: -------------------------------------------------------------------------------- 1 | import { useTreeStore } from '../treeStore'; 2 | 3 | export const useTreeNodeFocus = (treeId) => { 4 | const focusId = useTreeStore((state) => state.focusId); 5 | return focusId === treeId; 6 | } 7 | -------------------------------------------------------------------------------- /chat2db-client/src/components/BrandLogo/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .box { 4 | display: flex; 5 | justify-content: center; 6 | border-radius: 10%; 7 | overflow: hidden; 8 | img { 9 | display: block; 10 | height: 100%; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-client/src/components/BrandLogo/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { memo } from 'react'; 2 | import styles from './index.less'; 3 | import classnames from 'classnames'; 4 | import logo from '@/assets/logo/logo.webp'; 5 | 6 | interface IProps extends React.DetailedHTMLProps, HTMLDivElement> { 7 | className?: any; 8 | size?: number; 9 | } 10 | 11 | export default memo(({ className, size = 48, ...res }) => { 12 | return ( 13 |
14 | 15 |
16 | ); 17 | }); 18 | -------------------------------------------------------------------------------- /chat2db-client/src/components/ConnectionEdit/config/enum.ts: -------------------------------------------------------------------------------- 1 | export enum InputType { 2 | INPUT = 'input', 3 | PASSWORD = 'password', 4 | SELECT = 'select', 5 | } 6 | 7 | export enum AuthenticationType { 8 | USERANDPASSWORD = '1', 9 | NONE = '2', 10 | } 11 | 12 | export enum SSHAuthenticationType { 13 | PASSWORD = 1, 14 | KEYPAIR = 2, 15 | OPENSSH = 3 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-client/src/components/ConsoleEditor/index.less: -------------------------------------------------------------------------------- 1 | .console { 2 | position: relative; 3 | height: 100%; 4 | 5 | :global { 6 | .ant-spin-nested-loading { 7 | height: 100%; 8 | } 9 | 10 | .ant-spin-container { 11 | height: calc(100% - 40px); 12 | } 13 | } 14 | } 15 | 16 | .consoleEditor { 17 | height: 100%; 18 | } 19 | 20 | .consoleEditorWithChat { 21 | height: calc(100% - 42px); 22 | } 23 | 24 | .aiBlock { 25 | font-size: 14px; 26 | line-height: 20px; 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-client/src/components/CustomLayout/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .customLayout { 4 | display: flex; 5 | align-items: center; 6 | margin: 0px -3px; 7 | .iconPanel { 8 | display: flex; 9 | align-items: center; 10 | justify-content: center; 11 | margin: 0px 3px; 12 | border-radius: 3px; 13 | height: 20px; 14 | width: 20px; 15 | cursor: pointer; 16 | &:hover { 17 | background-color: var(--color-hover-bg); 18 | } 19 | i { 20 | font-size: 15px; 21 | color: var(--color-text-secondary); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /chat2db-client/src/components/CustomSelect/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .box { 4 | } 5 | -------------------------------------------------------------------------------- /chat2db-client/src/components/EditDialog/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .box { 4 | } 5 | -------------------------------------------------------------------------------- /chat2db-client/src/components/LayoutBasic/index.less: -------------------------------------------------------------------------------- 1 | .layoutBasic{ 2 | 3 | } -------------------------------------------------------------------------------- /chat2db-client/src/components/LayoutBasic/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './index.less' 3 | 4 | interface IProps{ 5 | className: string; 6 | } 7 | 8 | function LayoutBasic(props: IProps) { 9 | return
10 |
11 |
; 12 | } 13 | 14 | export default LayoutBasic; 15 | -------------------------------------------------------------------------------- /chat2db-client/src/components/Loading/LazyLoading/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../styles/var.less'; 2 | .box { 3 | .f-fill-absolute(); 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | background-color: var(--color-bg-100); 8 | } 9 | -------------------------------------------------------------------------------- /chat2db-client/src/components/Loading/LazyLoading/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { memo } from 'react'; 2 | import styles from './index.less'; 3 | import classnames from 'classnames'; 4 | import Loading from '@/components/Loading/Loading' 5 | 6 | interface IProps { 7 | className?: string; 8 | } 9 | 10 | export default memo(function LazyLoading({ className }) { 11 | return
12 | 13 |
14 | }) 15 | -------------------------------------------------------------------------------- /chat2db-client/src/components/Loading/LoadingContent/index.less: -------------------------------------------------------------------------------- 1 | .loadingContent { 2 | position: relative; 3 | } 4 | 5 | .stateIndicator { 6 | width: 200px; 7 | height: 200px; 8 | } 9 | 10 | .empty { 11 | height: 100%; 12 | display: flex; 13 | justify-content: center; 14 | align-items: center; 15 | img { 16 | max-width: 100%; 17 | } 18 | } 19 | 20 | .coverLoading { 21 | position: absolute; 22 | inset: 0; 23 | background-color: rgba(0, 0, 0, 0.01); 24 | display: flex; 25 | justify-content: center; 26 | align-items: center; 27 | z-index: 999; 28 | } 29 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MenuLabel/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .menuLabel { 4 | display: flex; 5 | align-items: center; 6 | .menuLabelIconBox{ 7 | width: 22px; 8 | display: flex; 9 | align-items: center; 10 | } 11 | // .menuLabelIcon { 12 | // } 13 | // .menuLabelTitle { 14 | // } 15 | .menuLabelIconBright{ 16 | color: var(--color-primary); 17 | } 18 | :global { 19 | .ant-dropdown { 20 | z-index: 1080; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-client/src/components/Modal/TriggeredModal/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MonacoEditor/index.less: -------------------------------------------------------------------------------- 1 | .editorContainer { 2 | height: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MonacoEditor/syntax-parser/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parser'; 2 | export * from './lexer'; 3 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MonacoEditor/syntax-parser/lexer/token.ts: -------------------------------------------------------------------------------- 1 | export interface IToken { 2 | type: string; 3 | value: string; 4 | position?: [number, number]; 5 | } 6 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MonacoEditor/syntax-parser/parser/index.ts: -------------------------------------------------------------------------------- 1 | export { chain, createParser } from './chain'; 2 | export { many, matchTokenType, optional, plus } from './match'; 3 | export { Scanner } from './scanner'; 4 | export * from './define'; 5 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MonacoEditor/syntax-parser/plugin/monaco-plugin/parser.worker.ts: -------------------------------------------------------------------------------- 1 | import { mysqlParser } from '../sql-parser'; 2 | 3 | // eslint-disable-next-line no-restricted-globals 4 | const ctx: Worker = self as any; 5 | 6 | ctx.onmessage = event => { 7 | ctx.postMessage(mysqlParser(event.data.text, event.data.index)); 8 | }; 9 | 10 | export default null as any; 11 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MonacoEditor/syntax-parser/plugin/sql-parser/base/reserve-keys.ts: -------------------------------------------------------------------------------- 1 | export const reserveKeys = [ 2 | 'select', 3 | 'create', 4 | 'insert', 5 | 'from', 6 | 'where', 7 | 'order', 8 | 'limit', 9 | 'by', 10 | 'sounds', 11 | 'like', 12 | 'is', 13 | 'in', 14 | 'between', 15 | 'regexp', 16 | 'isnull', 17 | 'lateral', 18 | 'left', 19 | 'right', 20 | 'inner', 21 | 'outer', 22 | 'join', 23 | ]; 24 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MonacoEditor/syntax-parser/plugin/sql-parser/index.tsx: -------------------------------------------------------------------------------- 1 | import * as reader from './base/reader'; 2 | 3 | export { reader }; 4 | export * from './base/define'; 5 | 6 | export { mysqlParser } from './mysql'; 7 | -------------------------------------------------------------------------------- /chat2db-client/src/components/MonacoEditor/syntax-parser/plugin/sql-parser/mysql/index.ts: -------------------------------------------------------------------------------- 1 | import { createParser } from '../../..'; 2 | import { IStatements } from '../base/define'; 3 | import { sqlTokenizer } from './lexer'; 4 | import { root } from './parser'; 5 | 6 | export const mysqlParser = createParser(root, sqlTokenizer, { 7 | cursorTokenExcludes: token => { 8 | return token.value === '.' || token.value === ':'; 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /chat2db-client/src/components/Popularize/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .box { 4 | width: 100%; 5 | display: flex; 6 | flex-direction: column; 7 | justify-content: center; 8 | } 9 | 10 | .title { 11 | font-size: 16px; 12 | font-weight: bold; 13 | text-align: center; 14 | } 15 | 16 | .text { 17 | p { 18 | text-align: center; 19 | font-size: 14px; 20 | margin-top: 10px; 21 | } 22 | } 23 | 24 | .wechatImg { 25 | margin: 20px auto 0px; 26 | width: 160px; 27 | height: 160px; 28 | } 29 | -------------------------------------------------------------------------------- /chat2db-client/src/components/RefreshLoadingButton/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .box { 4 | } 5 | -------------------------------------------------------------------------------- /chat2db-client/src/components/ScrollLoading/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .box{ 4 | .tips{ 5 | display: flex; 6 | justify-content: center; 7 | align-items: center; 8 | height: 50px; 9 | } 10 | // .loading{ 11 | // transform: scale(0.8); 12 | // } 13 | } -------------------------------------------------------------------------------- /chat2db-client/src/components/SearchResult/components/OperationalDataBar/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../../styles/var.less'; 2 | 3 | .box { 4 | } 5 | -------------------------------------------------------------------------------- /chat2db-client/src/components/SearchResult/components/OperationalDataBar/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { memo } from 'react'; 2 | import styles from './index.less'; 3 | import classnames from 'classnames'; 4 | 5 | interface IProps { 6 | className?: string; 7 | } 8 | 9 | export default memo((props) => { 10 | const { className } = props; 11 | return
12 | operationalDataBar 13 |
; 14 | }); 15 | -------------------------------------------------------------------------------- /chat2db-client/src/components/SearchResult/components/RightClickMenu/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../../styles/var.less'; 2 | 3 | .dropdownOverlay { 4 | :global { 5 | .ant-dropdown-menu-submenu-title{ 6 | display: flex; 7 | align-items: center; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /chat2db-client/src/components/SearchResult/components/StatusBar/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../../styles/var.less'; 2 | 3 | .statusBar { 4 | height: 26px; 5 | box-sizing: border-box; 6 | padding: 4px 8px; 7 | font-size: 12px; 8 | display: flex; 9 | justify-content: start; 10 | align-items: center; 11 | border-top: 1px solid var(--color-border-secondary); 12 | background-color: var(--color-bg-subtle); 13 | overflow: hidden; 14 | flex-shrink: 0; 15 | .f-single-line(); 16 | & > span { 17 | margin-right: 16px; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-client/src/components/SearchResult/utils.tsx: -------------------------------------------------------------------------------- 1 | import { USER_FILLED_VALUE } from './components/TableBox/index'; 2 | 3 | // 在input中把USER_FILLED_VALUE转换为null 4 | export const transformInputValue = (value: string) => { 5 | if (value === USER_FILLED_VALUE.DEFAULT) { 6 | return null; 7 | } 8 | return value; 9 | }; 10 | -------------------------------------------------------------------------------- /chat2db-client/src/components/SingleFileMonacoEditor/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .singleFileMonacoEditor { 4 | height: 18px; 5 | } 6 | -------------------------------------------------------------------------------- /chat2db-client/src/components/UploadDriver/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .box { 4 | } 5 | -------------------------------------------------------------------------------- /chat2db-client/src/components/ViewDDL/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .viewDDL { 4 | height: 100%; 5 | } 6 | -------------------------------------------------------------------------------- /chat2db-client/src/components/XXXX_FN/index.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | 3 | .box { 4 | } 5 | -------------------------------------------------------------------------------- /chat2db-client/src/components/XXXX_FN/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { memo } from 'react'; 2 | import styles from './index.less'; 3 | import classnames from 'classnames'; 4 | 5 | interface IProps { 6 | className?: string; 7 | } 8 | 9 | export default memo((props) => { 10 | const { className } = props; 11 | return
demo
; 12 | }); 13 | -------------------------------------------------------------------------------- /chat2db-client/src/constants/IntelliSense/index.ts: -------------------------------------------------------------------------------- 1 | import mysql from './mysql'; 2 | import oracle from './oracle'; 3 | import postgresql from './pgsql'; 4 | import redis from './redis'; 5 | import sqlserver from './sqlserver' 6 | 7 | export default { mysql, oracle, postgresql, redis, sqlserver }; 8 | -------------------------------------------------------------------------------- /chat2db-client/src/constants/appConfig.ts: -------------------------------------------------------------------------------- 1 | export const APP_NAME = 'Chat2DB'; 2 | export const GITHUB_URL = 'https://github.com/chat2db/Chat2DB/blob/main/CHANGELOG.md' 3 | export const WEBSITE_DOC = 'https://doc.sqlgpt.cn/changelog/' 4 | 5 | -------------------------------------------------------------------------------- /chat2db-client/src/constants/console.ts: -------------------------------------------------------------------------------- 1 | 2 | export enum ConsoleOpenedStatus { 3 | IS_OPEN = 'y', 4 | NOT_OPEN = 'n', 5 | } 6 | -------------------------------------------------------------------------------- /chat2db-client/src/constants/editTable.ts: -------------------------------------------------------------------------------- 1 | export enum EditColumnOperationType { 2 | // 新增 3 | Add = 'ADD', 4 | // 修改 5 | Modify = 'MODIFY', 6 | // 删除 7 | Delete = 'DELETE', 8 | } 9 | 10 | // nullable 11 | export enum NullableType { 12 | // 不可为空 13 | NotNull = 0, 14 | // 可为空 15 | Null = 1, 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-client/src/constants/environment.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/constants/environment.ts -------------------------------------------------------------------------------- /chat2db-client/src/constants/index.ts: -------------------------------------------------------------------------------- 1 | export * from './appConfig'; 2 | export * from './common'; 3 | export * from './database'; 4 | export * from './environment'; 5 | export * from './table'; 6 | export * from './theme'; 7 | export * from './tree'; 8 | export * from './workspace'; 9 | export * from './editTable'; 10 | export * from './console'; 11 | 12 | -------------------------------------------------------------------------------- /chat2db-client/src/constants/table.ts: -------------------------------------------------------------------------------- 1 | export enum TableDataType { 2 | BOOLEAN = 'BOOLEAN', 3 | NUMERIC = 'NUMERIC', 4 | STRING = 'STRING', 5 | DATETIME = 'DATETIME', 6 | // 暂时不适配 7 | BINARY = 'BINARY', 8 | CONTENT = 'CONTENT', 9 | STRUCT = 'STRUCT', 10 | DOCUMENT = 'DOCUMENT', 11 | ARRAY = 'ARRAY', 12 | OBJECT = 'OBJECT', 13 | REFERENCE = 'REFERENCE', 14 | ROWID = 'ROWID', 15 | ANY = 'ANY', 16 | UNKNOWN = 'UNKNOWN', 17 | CHAT2DB_ROW_NUMBER = 'CHAT2DB_ROW_NUMBER', 18 | } 19 | 20 | export enum StatusType { 21 | SUCCESS = 'success', 22 | FAIL = 'fail', 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-client/src/hooks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './useTheme'; 2 | export * from './useUpdateEffect'; 3 | export * from './useEventSource'; 4 | -------------------------------------------------------------------------------- /chat2db-client/src/hooks/useUpdateEffect.ts: -------------------------------------------------------------------------------- 1 | import { useRef, useEffect } from 'react'; 2 | 3 | /** 4 | * 第一次Effect更新不执行 5 | * @param fn 6 | * @param arr 7 | */ 8 | export function useUpdateEffect(fn: Function, arr: any[]) { 9 | const first = useRef(true); 10 | useEffect(() => { 11 | if (first.current) { 12 | first.current = false; 13 | } else { 14 | fn(); 15 | } 16 | }, arr); 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/en-us/chat.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'chat.input.remain': '{1} remaining', 3 | 'chat.input.tableSelect.placeholder': 'Please choose tables', 4 | 'chat.input.tableSelect.error.TooManyTable': 'You can only select up to 8 tables', 5 | 'chat.input.remain.dialog.tips': 6 | 'Subscribe our official WeChat account, send 推广 to get more chances to experience.', 7 | 'chat.input.syncTable.tips': 'The automatically synchronize all table structures to the AI context', 8 | 'chat.input.remain.tooltip': 'The manually selected table will be synchronized to the AI context', 9 | 'chat.input.syncTable.tempTips': '🎉Update: Automatically synchronize all table structures to the AI context', 10 | }; 11 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/en-us/dashboard.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'dashboard.title': 'Dashboard', 3 | 'dashboard.edit': 'Edit', 4 | 'dashboard.modal.editTitle': 'Edit Dashboard', 5 | 'dashboard.modal.addTitle': 'Add Dashboard', 6 | 'dashboard.modal.name.placeholder': "Please enter dashboard's name.", 7 | 'dashboard.export2image': 'Export to image', 8 | 'dashboard.delete': 'Delete', 9 | 'dashboard.editor.cascader.placeholder': 'Please select a connection pool', 10 | 'dashboard.editor.execute.noDataSource': 'Please select a data source first', 11 | 'dashboard.editor.execute.success': 'Successful, Please select Chart Configuration', 12 | }; 13 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/en-us/editTableData.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'editTableData.tips.addRow': 'Add Row', 3 | 'editTableData.tips.deleteRow': 'Delete Row', 4 | 'editTableData.tips.revert': 'Revert', 5 | 'editTableData.tips.previewPendingChanges': 'Preview Pending Changes', 6 | 'editTableData.tips.submit': 'Submit', 7 | }; 8 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/en-us/login.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'login.text.logout': 'Logout', 3 | 'login.text.welcome': 'Welcome to Chat2DB', 4 | 'login.text.tips': 'The Chat2DB account is only for team collaboration management.', 5 | 'login.text.tips.title': 'Why need login?', 6 | 'login.text.setting': 'Setting', 7 | 'login.form.user': 'UserName', 8 | 'login.form.user.placeholder': 'Please enter your username', 9 | 'login.form.password': 'Password', 10 | 'login.form.password.placeholder': 'Please enter your password', 11 | 'login.button.login': 'Login', 12 | 'login.tips.defaultPassword': 'The default user name and password are: chat2db', 13 | }; 14 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/en-us/menu.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'menu.file' : 'File' 3 | } -------------------------------------------------------------------------------- /chat2db-client/src/i18n/en-us/sqlEditor.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'sqlEditor.text.keyword': 'Keyword', 3 | 'sqlEditor.text.function': 'Function', 4 | 'sqlEditor.text.tableName': 'TableName', 5 | 'sqlEditor.text.databaseName': 'DatabaseName', 6 | 'sqlEditor.text.schemaName': 'Schema', 7 | 'sqlEditor.text.viewName': 'ViewName', 8 | 'sqlEditor.text.fieldName': 'FieldName', 9 | 10 | }; 11 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/ja-jp/chat.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'chat.input.remain': '残り {1} 回', 3 | 'chat.input.tableSelect.placeholder': 'テーブルを選択してください', 4 | 'chat.input.tableSelect.error.TooManyTable': '最大で8つのテーブルを選択できます', 5 | 'chat.input.remain.dialog.tips': '公式アカウントをフォローし、"プロモーション"を送信して体験回数を増やす', 6 | 'chat.input.syncTable.tips': 'すべてのテーブル構造をAIコンテキストに自動同期(Chat2DBAIモデルのみで使用可能、グループ内でグループオーナーに連絡し、Chat2DBAIのホワイトリストに申請)', 7 | 'chat.input.remain.tooltip': '手動で選択したテーブルの構造はAIコンテキストに同期されます', 8 | 'chat.input.syncTable.tempTips': '🎉リリース:すべてのテーブル構造をAIコンテキストに自動同期', 9 | }; 10 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/ja-jp/dashboard.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "dashboard.title": "ダッシュボード", 3 | "dashboard.edit": "編集", 4 | "dashboard.modal.editTitle": "ダッシュボードの編集", 5 | "dashboard.modal.addTitle": "ダッシュボードの追加", 6 | "dashboard.modal.name.placeholder": "ダッシュボード名を入力してください", 7 | "dashboard.delete": "削除", 8 | "dashboard.export2image": "画像への出力", 9 | "dashboard.editor.cascader.placeholder": "接続を選択してください", 10 | "dashboard.editor.execute.noDataSource": "まず、データソースを選択してください", 11 | "dashboard.editor.execute.success": "実行成功。チャートの設定を選択してください" 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/ja-jp/editTableData.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'editTableData.tips.addRow': '行を追加', 3 | 'editTableData.tips.deleteRow': '行を削除', 4 | 'editTableData.tips.revert': '取り消す', 5 | 'editTableData.tips.previewPendingChanges': '保留中の変更をプレビュー', 6 | 'editTableData.tips.submit': '変更を提出', 7 | }; 8 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/ja-jp/login.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'login.text.logout': 'ログアウト', 3 | 'login.text.welcome': 'Chat2DBをご利用いただき、ありがとうございます', 4 | 'login.text.tips': 'Chat2DBのアカウントはチームの協力と管理のためにのみ使用されます', 5 | 'login.text.tips.title': 'なぜログインが必要ですか?', 6 | 'login.text.setting': '設定', 7 | 'login.form.user': 'ユーザー名', 8 | 'login.form.user.placeholder': 'ユーザー名を入力してください', 9 | 'login.form.password': 'パスワード', 10 | 'login.form.password.placeholder': 'パスワードを入力してください', 11 | 'login.button.login': 'ログイン', 12 | 'login.tips.defaultPassword': 'デフォルトのユーザー名とパスワードは両方とも chat2db です', 13 | }; 14 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/ja-jp/menu.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'menu.file': 'File' 3 | } 4 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/ja-jp/sqlEditor.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'sqlEditor.text.keyword': 'キーワード', 3 | 'sqlEditor.text.function': '関数', 4 | 'sqlEditor.text.tableName': 'テーブル名', 5 | 'sqlEditor.text.databaseName': 'データベース名', 6 | 'sqlEditor.text.schemaName': 'スキーマ名', 7 | 'sqlEditor.text.viewName': 'ビュー名', 8 | 'sqlEditor.text.fieldName': 'フィールド名', 9 | }; 10 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/tr-tr/chat.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'chat.input.remain': 'Kalan {1}', 3 | 'chat.input.tableSelect.placeholder': 'Lütfen tabloları seçin', 4 | 'chat.input.tableSelect.error.TooManyTable': 'En fazla 8 tablo seçebilirsiniz', 5 | 'chat.input.remain.dialog.tips': 6 | 'Resmi WeChat hesabımıza abone olun, daha fazla deneyim şansı için 推广 gönderin.', 7 | 'chat.input.syncTable.tips': 'Otomatik olarak tüm tablo yapılarını AI bağlamına senkronize eder', 8 | 'chat.input.remain.tooltip': 'Manuel olarak seçilen tablo, AI bağlamına senkronize edilecektir', 9 | 'chat.input.syncTable.tempTips': '🎉Güncelleme: Otomatik olarak tüm tablo yapılarını AI bağlamına senkronize etme', 10 | }; 11 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/tr-tr/dashboard.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'dashboard.title': 'Kontrol Paneli', 3 | 'dashboard.edit': 'Düzenle', 4 | 'dashboard.modal.editTitle': 'Kontrol Panelini Düzenle', 5 | 'dashboard.modal.addTitle': 'Kontrol Paneli Ekle', 6 | 'dashboard.modal.name.placeholder': "Lütfen kontrol paneli adını girin.", 7 | 'dashboard.export2image': 'Resme Aktar', 8 | 'dashboard.delete': 'Sil', 9 | 'dashboard.editor.cascader.placeholder': 'Lütfen bir bağlantı havuzu seçin', 10 | 'dashboard.editor.execute.noDataSource': 'Lütfen önce bir veri kaynağı seçin', 11 | 'dashboard.editor.execute.success': 'Başarılı, Lütfen Grafik Yapılandırmasını Seçin', 12 | }; 13 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/tr-tr/editTableData.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'editTableData.tips.addRow': 'Satır Ekle', 3 | 'editTableData.tips.deleteRow': 'Satırı Sil', 4 | 'editTableData.tips.revert': 'Geri Al', 5 | 'editTableData.tips.previewPendingChanges': 'Bekleyen Değişiklikleri Önizle', 6 | 'editTableData.tips.submit': 'Gönder', 7 | }; 8 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/tr-tr/login.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'login.text.logout': 'Çıkış Yap', 3 | 'login.text.welcome': 'Chat2DB\'ye Hoş Geldiniz', 4 | 'login.text.tips': 'Chat2DB hesabı yalnızca takım işbirliği yönetimi içindir.', 5 | 'login.text.tips.title': 'Neden giriş yapmalı?', 6 | 'login.text.setting': 'Ayarlar', 7 | 'login.form.user': 'Kullanıcı Adı', 8 | 'login.form.user.placeholder': 'Lütfen kullanıcı adınızı girin', 9 | 'login.form.password': 'Şifre', 10 | 'login.form.password.placeholder': 'Lütfen şifrenizi girin', 11 | 'login.button.login': 'Giriş Yap', 12 | 'login.tips.defaultPassword': 'Varsayılan kullanıcı adı ve şifre: chat2db', 13 | }; 14 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/tr-tr/menu.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'menu.file' : 'Dosya' 3 | } 4 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/tr-tr/sqlEditor.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'sqlEditor.text.keyword': 'Anahtar Kelime', 3 | 'sqlEditor.text.function': 'Fonksiyon', 4 | 'sqlEditor.text.tableName': 'Tablo Adı', 5 | 'sqlEditor.text.databaseName': 'Veritabanı Adı', 6 | 'sqlEditor.text.schemaName': 'Şema', 7 | 'sqlEditor.text.viewName': 'Görünüm Adı', 8 | 'sqlEditor.text.fieldName': 'Alan Adı', 9 | }; 10 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/zh-cn/chat.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'chat.input.remain': '剩余 {1} 次', 3 | 'chat.input.tableSelect.placeholder': '请选择表', 4 | 'chat.input.tableSelect.error.TooManyTable': '最多选择8张表', 5 | 'chat.input.remain.dialog.tips': '关注公众号,发送"推广"获取更多体验次数', 6 | 'chat.input.syncTable.tips': '自动同步所有表结构给AI上下文(在群内联系群主,申请Chat2DBAI白名单后,仅在Chat2DBAI模型下可用)', 7 | 'chat.input.remain.tooltip': '手动选中的表的结构将会同步给AI上下文', 8 | 'chat.input.syncTable.tempTips': '🎉上线:自动同步所有表结构到AI上下文', 9 | }; 10 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/zh-cn/dashboard.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'dashboard.title': '仪表盘', 3 | 'dashboard.edit': '编辑', 4 | 'dashboard.modal.editTitle': '编辑仪表盘', 5 | 'dashboard.modal.addTitle': '新增仪表盘', 6 | 'dashboard.modal.name.placeholder': '请输入仪表盘名', 7 | 'dashboard.delete': '删除', 8 | 'dashboard.export2image': '导出图片', 9 | 'dashboard.editor.cascader.placeholder': '请选择连接', 10 | 'dashboard.editor.execute.noDataSource': '请先选择数据源', 11 | 'dashboard.editor.execute.success': '执行成功,请选择图表配置', 12 | }; 13 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/zh-cn/editTableData.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'editTableData.tips.addRow': '添加行', 3 | 'editTableData.tips.deleteRow': '删除行', 4 | 'editTableData.tips.revert': '撤销', 5 | 'editTableData.tips.previewPendingChanges': '预览待提交的修改', 6 | 'editTableData.tips.submit': '提交更改', 7 | }; 8 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/zh-cn/login.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'login.text.logout': '退出登录', 3 | 'login.text.welcome': '欢迎使用 Chat2DB', 4 | 'login.text.tips': 'Chat2DB 账号仅用于团队协作管理', 5 | 'login.text.tips.title': '为什么需要登录?', 6 | 'login.text.setting': '设 置', 7 | 'login.form.user': '用户名', 8 | 'login.form.user.placeholder': '请输入用户名', 9 | 'login.form.password': '密码', 10 | 'login.form.password.placeholder': '请输入密码', 11 | 'login.button.login': '登 录', 12 | 'login.tips.defaultPassword': '默认用户名和密码均为: chat2db', 13 | }; 14 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/zh-cn/menu.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'menu.file': 'File' 3 | } 4 | -------------------------------------------------------------------------------- /chat2db-client/src/i18n/zh-cn/sqlEditor.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'sqlEditor.text.keyword': '关键词', 3 | 'sqlEditor.text.function': '函数', 4 | 'sqlEditor.text.tableName': '表名', 5 | 'sqlEditor.text.databaseName': '数据库', 6 | 'sqlEditor.text.schemaName': 'Schema', 7 | 'sqlEditor.text.viewName': '视图名', 8 | 'sqlEditor.text.fieldName': '字段名', 9 | }; 10 | -------------------------------------------------------------------------------- /chat2db-client/src/layouts/init/GlobalComponent.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import MyNotification from '@/components/MyNotification'; 3 | import Modal from '@/components/Modal/BaseModal'; 4 | 5 | const GlobalComponent = () => { 6 | return <> 7 | 8 | 9 | 10 | } 11 | 12 | export default GlobalComponent; 13 | -------------------------------------------------------------------------------- /chat2db-client/src/layouts/init/initIndexedDB.ts: -------------------------------------------------------------------------------- 1 | import indexedDB from '@/indexedDB'; 2 | 3 | /** 初始化indexedDB */ 4 | const initIndexedDB = () => { 5 | indexedDB.createDB('chat2db', 1).then((db) => { 6 | window._indexedDB = { 7 | chat2db: db, 8 | }; 9 | }); 10 | }; 11 | 12 | export default initIndexedDB; 13 | -------------------------------------------------------------------------------- /chat2db-client/src/layouts/init/registerElectronApi.ts: -------------------------------------------------------------------------------- 1 | // 注册Electron关闭时,关闭服务 2 | import { useSettingStore } from '@/store/setting' 3 | const registerElectronApi = () => { 4 | window.electronApi?.registerAppMenu({ 5 | version: __APP_VERSION__, 6 | }); 7 | window.electronApi?.setBaseURL?.(window._BaseURL); 8 | window.electronApi?.setForceQuitCode?.(useSettingStore.getState().holdingService); 9 | }; 10 | 11 | export default registerElectronApi; 12 | -------------------------------------------------------------------------------- /chat2db-client/src/layouts/init/registerMessage.ts: -------------------------------------------------------------------------------- 1 | import { message } from 'antd'; 2 | 3 | export default () => { 4 | message.config({ 5 | maxCount: 1, 6 | duration: 3, 7 | }); 8 | }; 9 | -------------------------------------------------------------------------------- /chat2db-client/src/layouts/init/registerNotification.ts: -------------------------------------------------------------------------------- 1 | import { notification } from 'antd'; 2 | 3 | export default () => { 4 | notification.config({ 5 | placement: 'BottomRight', 6 | maxCount: 2, 7 | duration: null, 8 | }); 9 | }; 10 | -------------------------------------------------------------------------------- /chat2db-client/src/main/analysis.js: -------------------------------------------------------------------------------- 1 | const os = require('os'); 2 | const { readVersion } = require('./utils'); 3 | const Analytics4 = require('./ga4'); 4 | 5 | function registerAnalytics() { 6 | const analytics = new Analytics4('G-V8M4E5SF61', 'LShbzC_vRka5Sw5AWco7Tw'); 7 | const customParams = { 8 | platform: 'DESKTOP', 9 | version: readVersion(), 10 | os: os.platform(), 11 | }; 12 | analytics.setParams(customParams).event('first_enter'); 13 | } 14 | 15 | module.exports = registerAnalytics; 16 | -------------------------------------------------------------------------------- /chat2db-client/src/main/constants.js: -------------------------------------------------------------------------------- 1 | const DEV_WEB_URL = 'http://localhost:8000/'; 2 | 3 | /** jar包名 */ 4 | const JAVA_APP_NAME = 'chat2db-server-start.jar'; 5 | const JAVA_PATH = 'jre/bin/java'; 6 | 7 | module.exports = { 8 | DEV_WEB_URL, 9 | 10 | JAVA_APP_NAME, 11 | JAVA_PATH, 12 | }; 13 | -------------------------------------------------------------------------------- /chat2db-client/src/main/i18n/en/index.js: -------------------------------------------------------------------------------- 1 | const locale = { 2 | 'menu.file': 'File', 3 | 'menu.edit': 'Edit', 4 | }; 5 | 6 | module.exports = locale; 7 | -------------------------------------------------------------------------------- /chat2db-client/src/main/i18n/index.js: -------------------------------------------------------------------------------- 1 | const zhCN = require('./zh-cn'); 2 | const en = require('./en'); 3 | 4 | // TODO: 需要获取渲染进程的语言环境 5 | const isZH = false; 6 | 7 | const locale = isZH ? zhCN : en; 8 | 9 | const i18n = (key) => locale[key] || key; 10 | 11 | module.exports = i18n; 12 | -------------------------------------------------------------------------------- /chat2db-client/src/main/i18n/zh-cn/index.js: -------------------------------------------------------------------------------- 1 | const locale = { 2 | 'menu.file': '文件', 3 | 'menu.edit': '编辑', 4 | }; 5 | 6 | module.exports = locale; 7 | -------------------------------------------------------------------------------- /chat2db-client/src/main/main.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */ 2 | -------------------------------------------------------------------------------- /chat2db-client/src/main/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "main", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "build:dev": "cross-env NODE_ENV=development webpack", 9 | "build": "webpack" 10 | }, 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "electron-log": "^5.0.3", 15 | "electron-store": "^8.1.0", 16 | "node-machine-id": "^1.1.12", 17 | "uuid": "^9.0.1" 18 | }, 19 | "devDependencies": { 20 | "webpack": "^5.89.0", 21 | "webpack-cli": "^5.1.4" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-client/src/main/store.js: -------------------------------------------------------------------------------- 1 | const Store = require('electron-store'); 2 | 3 | const store = new Store(); 4 | 5 | module.exports = store; 6 | -------------------------------------------------------------------------------- /chat2db-client/src/main/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | entry: './index.js', 5 | output: { 6 | filename: 'main.js', 7 | path: path.resolve(__dirname), 8 | }, 9 | target: 'electron-main', 10 | }; 11 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/demo/index.less: -------------------------------------------------------------------------------- 1 | .introduce{ 2 | height: 18px; 3 | } -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/dashboard/chart/bar/index.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/pages/main/dashboard/chart/bar/index.less -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/dashboard/chart/line/index.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/pages/main/dashboard/chart/line/index.less -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/dashboard/chart/pie/index.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/pages/main/dashboard/chart/pie/index.less -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/dashboard/left-block/index.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/pages/main/dashboard/left-block/index.less -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/dashboard/left-block/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/pages/main/dashboard/left-block/index.tsx -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/functions/getConnection.ts: -------------------------------------------------------------------------------- 1 | import connectionService from '@/service/connection'; 2 | import { setConnectionEnvList } from '@/pages/main/store/connection'; 3 | 4 | const getConnectionEnvList = () => { 5 | connectionService.getEnvList().then((res) => { 6 | setConnectionEnvList(res); 7 | }); 8 | }; 9 | 10 | export default getConnectionEnvList; 11 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/team/datasource-management/index.less: -------------------------------------------------------------------------------- 1 | .tableTop { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | margin: 16px 0; 6 | } 7 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/team/index.less: -------------------------------------------------------------------------------- 1 | .teamWrapper { 2 | height: 100vh; 3 | padding: 14px 16px; 4 | box-sizing: border-box; 5 | } 6 | 7 | .teamTabsBox{ 8 | height: 100%; 9 | } 10 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/team/team-management/index.less: -------------------------------------------------------------------------------- 1 | .tableTop { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | margin: 16px 0; 6 | } 7 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/team/universal-add-modal/index.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/pages/main/team/universal-add-modal/index.less -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/team/universal-drawer/index.less: -------------------------------------------------------------------------------- 1 | .tableTop { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | margin: 16px 0; 6 | } 7 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/team/user-management/index.less: -------------------------------------------------------------------------------- 1 | .tableTop { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | margin: 16px 0; 6 | } 7 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/OperationLine/index.less: -------------------------------------------------------------------------------- 1 | .operationLine{ 2 | flex-shrink: 0; 3 | border-top: 1px solid var(--color-border-secondary); 4 | height: 30px; 5 | display: flex; 6 | align-items: center; 7 | justify-content: space-between; 8 | padding: 0px 4px; 9 | margin: 0px -2px; 10 | .operationLineLeft{ 11 | display: flex; 12 | align-items: center; 13 | >div{ 14 | margin: 0px 2px; 15 | } 16 | } 17 | } 18 | 19 | .searchBox{ 20 | flex-shrink: 0; 21 | padding: 4px; 22 | border-top: 1px solid var(--color-border-secondary); 23 | } -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/SQLExecute/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../../../styles/var.less'; 2 | 3 | .sqlExecute { 4 | height: 100%; 5 | } 6 | 7 | .boxRightCenter { 8 | height: 100%; 9 | } 10 | 11 | .boxRightConsole { 12 | height: 40vh; 13 | overflow: hidden; 14 | } 15 | 16 | .boxRightResult { 17 | border-top: 1px solid var(--color-border); 18 | height: 0px; 19 | flex: 1; 20 | position: relative; 21 | } 22 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/TableList/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../../../styles/var.less'; 2 | 3 | .treeContainer{ 4 | flex: 1; 5 | height: 0px; 6 | display: flex; 7 | flex-direction: column; 8 | } 9 | 10 | .treeBox{ 11 | flex: 1; 12 | height: 0px; 13 | } 14 | 15 | .leftModuleTitleShadow{ 16 | border-bottom: 1px solid var(--color-border-secondary); 17 | } 18 | 19 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/WorkspaceExtend/GlobalExtendComponents/index.less: -------------------------------------------------------------------------------- 1 | .viewDDLBox { 2 | height: 100%; 3 | display: flex; 4 | flex-direction: column; 5 | .viewDDLHeader { 6 | flex-shrink: 0; 7 | line-height: 32px; 8 | padding: 0px 10px; 9 | border-bottom: 1px solid var(--color-border); 10 | font-weight: bold; 11 | } 12 | .viewDDL { 13 | flex: 1; 14 | } 15 | } 16 | 17 | .noInformation{ 18 | height: 100%; 19 | display: flex; 20 | align-items: center; 21 | justify-content: center; 22 | } 23 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/WorkspaceExtend/WorkspaceExtendBody/index.less: -------------------------------------------------------------------------------- 1 | .WorkspaceExtendBody{ 2 | // flex: 1; 3 | } -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/WorkspaceExtend/WorkspaceExtendBody/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useMemo } from 'react'; 2 | import {extendConfig} from '../config'; 3 | import {useWorkspaceStore} from '@/pages/main/workspace/store'; 4 | 5 | 6 | export default () => { 7 | const {currentWorkspaceExtend} = useWorkspaceStore((state) => { 8 | return { 9 | currentWorkspaceExtend: state.currentWorkspaceExtend, 10 | } 11 | }); 12 | const Component = useMemo(() => { 13 | return extendConfig.find((item) => item.code === currentWorkspaceExtend)?.components 14 | }, [currentWorkspaceExtend]); 15 | 16 | return Component ? : false 17 | }; 18 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/WorkspaceExtend/WorkspaceExtendNav/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../../../../styles/var.less'; 2 | 3 | // .workspaceExtend { 4 | // display: none; 5 | // background-color: var(--color-bg-subtle); 6 | // .workspaceExtendMain { 7 | // flex: 1; 8 | // width: 0px; 9 | // border-right: 1px solid var(--color-border); 10 | // } 11 | // } 12 | 13 | .workspaceExtendNav { 14 | flex-shrink: 0; 15 | width: 38px; 16 | display: flex; 17 | flex-direction: column; 18 | align-items: center; 19 | padding: 5px 0px; 20 | } 21 | 22 | .rightBarFront { 23 | margin: 2px 0px; 24 | } 25 | 26 | .workspaceExtendActive { 27 | display: flex; 28 | } 29 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/WorkspaceExtend/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../../../styles/var.less'; 2 | 3 | .workspaceExtend { 4 | display: none; 5 | background-color: var(--color-bg-subtle); 6 | .workspaceExtendBar { 7 | flex-shrink: 0; 8 | width: 38px; 9 | display: flex; 10 | flex-direction: column; 11 | align-items: center; 12 | padding: 5px 0px; 13 | } 14 | .workspaceExtendMain { 15 | flex: 1; 16 | width: 0px; 17 | border-right: 1px solid var(--color-border); 18 | } 19 | } 20 | 21 | .rightBarFront { 22 | margin: 2px 0px; 23 | } 24 | 25 | .workspaceExtendActive { 26 | display: flex; 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/main/workspace/components/WorkspaceTabs/index.less: -------------------------------------------------------------------------------- 1 | @import '../../../../../styles/var.less'; 2 | 3 | .tabBox { 4 | height: 100%; 5 | flex: 1; 6 | width: 0px; 7 | } 8 | 9 | .ears { 10 | flex: 1; 11 | width: 0px; 12 | display: flex; 13 | justify-content: center; 14 | align-items: center; 15 | overflow: hidden; 16 | button { 17 | display: flex; 18 | align-items: center; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /chat2db-client/src/pages/test/index.less: -------------------------------------------------------------------------------- 1 | .container{ 2 | width: 100vw; 3 | height: 100vh; 4 | } -------------------------------------------------------------------------------- /chat2db-client/src/service/misc.tsx: -------------------------------------------------------------------------------- 1 | import createRequest from './base'; 2 | const testService = createRequest('/api/system', { errorLevel: false }); 3 | const systemStop = createRequest('/api/system/stop', { errorLevel: false, method: 'post' }); 4 | const testApiSmooth = createRequest('/api/system/get-version-a', { errorLevel: false, method: 'get' }); 5 | 6 | export default { 7 | testService, 8 | systemStop, 9 | testApiSmooth, 10 | }; 11 | -------------------------------------------------------------------------------- /chat2db-client/src/service/outside.ts: -------------------------------------------------------------------------------- 1 | import createRequest from './base'; 2 | 3 | const dynamicUrl = createRequest('', { 4 | dynamicUrl: true, 5 | }); 6 | 7 | export default { 8 | dynamicUrl, 9 | }; 10 | -------------------------------------------------------------------------------- /chat2db-client/src/store/common/appTitleBarConfig.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useCommonStore } from './index'; 3 | export interface IAppTitleBarConfig { 4 | appTitleBarRightComponent: React.ReactNode | null; 5 | } 6 | 7 | export const initAppTitleBarConfig = { 8 | appTitleBarRightComponent: null, 9 | }; 10 | 11 | export const setAppTitleBarRightComponent: (appTitleBarRightComponent: React.ReactNode | null) => void = ( 12 | appTitleBarRightComponent, 13 | ) => { 14 | return useCommonStore.setState({ appTitleBarRightComponent }); 15 | }; 16 | -------------------------------------------------------------------------------- /chat2db-client/src/store/common/components.ts: -------------------------------------------------------------------------------- 1 | import { useCommonStore } from './index'; 2 | import { IModalData } from '@/components/Modal/BaseModal'; 3 | 4 | export interface IComponentsContent { 5 | openModal: ((params: IModalData) => void) | null; 6 | } 7 | 8 | export const initComponentsContent = { 9 | openModal: null, 10 | }; 11 | 12 | export const injectOpenModal = (openModal: IComponentsContent['openModal']) => { 13 | return useCommonStore.setState({ openModal }); 14 | }; 15 | 16 | export const openModal = (modal: IModalData) => { 17 | return useCommonStore.getState().openModal?.(modal); 18 | }; 19 | -------------------------------------------------------------------------------- /chat2db-client/src/store/common/copyFocusedContent.ts: -------------------------------------------------------------------------------- 1 | import {useCommonStore} from './index' 2 | export interface ICopyFocusedContent { 3 | focusedContent: any[][]| any[] | string | null; 4 | } 5 | 6 | export const initCopyFocusedContent = { 7 | focusedContent: null, 8 | } 9 | 10 | export const setFocusedContent: (content: any[][] | any[] | string | null) => void = (focusedContent) => { 11 | return useCommonStore.setState({focusedContent}) 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-client/src/styles/common.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/styles/common.less -------------------------------------------------------------------------------- /chat2db-client/src/theme/common.ts: -------------------------------------------------------------------------------- 1 | export const commonToken = { 2 | fontSize1: 14, 3 | wireframe: true, 4 | borderRadius: 4, 5 | borderRadiusLG: 8, 6 | }; 7 | -------------------------------------------------------------------------------- /chat2db-client/src/theme/custom/dark.less: -------------------------------------------------------------------------------- 1 | :root [theme='dark'] { 2 | --custom-color-icon: #5C5D5E; 3 | } 4 | -------------------------------------------------------------------------------- /chat2db-client/src/theme/custom/darkDimmed.less: -------------------------------------------------------------------------------- 1 | :root [theme='darkDimmed'] { 2 | --custom-color-icon: #5C5D5E; 3 | } 4 | -------------------------------------------------------------------------------- /chat2db-client/src/theme/custom/light.less: -------------------------------------------------------------------------------- 1 | html[theme='light'] { 2 | --custom-color-icon: #383d4b; 3 | } 4 | -------------------------------------------------------------------------------- /chat2db-client/src/typings/ai.ts: -------------------------------------------------------------------------------- 1 | export enum AIType { 2 | CHAT2DBAI = 'CHAT2DBAI', 3 | ZHIPUAI = 'ZHIPUAI', 4 | BAICHUANAI='BAICHUANAI', 5 | WENXINAI='WENXINAI', 6 | TONGYIQIANWENAI='TONGYIQIANWENAI', 7 | OPENAI = 'OPENAI', 8 | AZUREAI = 'AZUREAI', 9 | RESTAI = 'RESTAI', 10 | } 11 | 12 | export interface IRemainingUse { 13 | key: string; 14 | wechatMpUrl: string; 15 | expiry: number; 16 | remainingUses: number; 17 | } 18 | 19 | export interface ILoginAndQrCode { 20 | token: string; 21 | wechatQrCodeUrl: string; 22 | apiKey: string; 23 | tip: string; 24 | } 25 | 26 | export interface IInviteQrCode { 27 | wechatQrCodeUrl: string; 28 | tip: string; 29 | } 30 | -------------------------------------------------------------------------------- /chat2db-client/src/typings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './common'; 2 | export * from './connection'; 3 | export * from './dashboard'; 4 | export * from './database'; 5 | export * from './main'; 6 | export * from './theme'; 7 | export * from './tree'; 8 | export * from './setting'; 9 | export * from './team'; 10 | export * from './workspace'; 11 | export * from './editTable'; 12 | export * from './console'; 13 | -------------------------------------------------------------------------------- /chat2db-client/src/typings/main.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export interface INavItem { 4 | key: string; 5 | icon: string; 6 | component?: React.ReactNode; 7 | openBrowser?: string; 8 | iconFontSize?: number; 9 | isLoad: boolean; 10 | name: string; 11 | } 12 | -------------------------------------------------------------------------------- /chat2db-client/src/typings/resultTable.ts: -------------------------------------------------------------------------------- 1 | import { IExecuteSqlParams } from '@/service/sql'; 2 | 3 | export enum ExportTypeEnum { 4 | CSV = 'CSV', 5 | INSERT = 'INSERT', 6 | WORD = 'WORD', 7 | EXCEL = 'EXCEL', 8 | HTML = 'HTML', 9 | MARKDOWN = 'MARKDOWN', 10 | PDF = 'PDF' 11 | } 12 | export enum ExportSizeEnum { 13 | CURRENT_PAGE = 'CURRENT_PAGE', 14 | ALL = 'ALL', 15 | } 16 | -------------------------------------------------------------------------------- /chat2db-client/src/typings/setting.ts: -------------------------------------------------------------------------------- 1 | import { AIType } from './ai'; 2 | 3 | export interface IAiConfig { 4 | aiSqlSource: AIType; 5 | apiKey?: string; 6 | apiHost?: string; 7 | httpProxyHost?: string; 8 | httpProxyPort?: string; 9 | stream?: boolean; 10 | secretKey?:string; 11 | model?: string; 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-client/src/typings/theme.ts: -------------------------------------------------------------------------------- 1 | import { ThemeType, PrimaryColorType } from '@/constants'; 2 | 3 | export interface ITheme { 4 | backgroundColor: ThemeType; 5 | primaryColor: PrimaryColorType; 6 | } 7 | -------------------------------------------------------------------------------- /chat2db-client/src/typings/user.ts: -------------------------------------------------------------------------------- 1 | export enum IRole { 2 | 'ADMIN' = 'ADMIN', 3 | 'USER' = 'USER', 4 | 'DESKTOP' = 'DESKTOP', 5 | } 6 | export interface IUser { 7 | id?: number; 8 | userName: string; 9 | nickName: string; 10 | password?: string; 11 | password2?: string; 12 | email: string; 13 | role?: IRole; 14 | } 15 | 16 | export type IUserVO = { 17 | admin: boolean; 18 | id : number; 19 | nickName: string; 20 | roleCode: string; 21 | token: string; 22 | } | null 23 | -------------------------------------------------------------------------------- /chat2db-client/src/utils/getTree.ts: -------------------------------------------------------------------------------- 1 | export const getTreeConfig = { 2 | 3 | } -------------------------------------------------------------------------------- /chat2db-client/src/utils/lodash.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-client/src/utils/lodash.ts -------------------------------------------------------------------------------- /chat2db-client/src/utils/sort.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 比较两个字符串数字的大小,包含大数情况 3 | * @param a 4 | * @param b 5 | * @returns 6 | */ 7 | export function compareStrings(a: string, b: string) { 8 | 9 | if (!a ) { 10 | return -1; 11 | } 12 | 13 | if (!b) { 14 | return 1; 15 | } 16 | 17 | // 比较字符串长度 18 | if (a.length !== b.length) { 19 | return a.length - b.length; 20 | } 21 | 22 | // 逐位比较字符的ASCII码值 23 | for (let i = 0; i < a.length; i++) { 24 | if (a[i] !== b[i]) { 25 | return a.charCodeAt(i) - b.charCodeAt(i); 26 | } 27 | } 28 | 29 | // 如果两个字符串完全相等,则返回0 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /chat2db-client/src/utils/timezone.ts: -------------------------------------------------------------------------------- 1 | export function getLinkBasedOnTimezone(): string { 2 | // 获取当前时区 3 | const timezone = new Intl.DateTimeFormat().resolvedOptions().timeZone; 4 | 5 | // 定义中国时区的链接和非中国时区的链接 6 | const chinaLink = "https://chat2db-ai.com"; 7 | const nonChinaLink = "https://chat2db.ai"; 8 | 9 | // 判断时区是否为中国的时区,这里简化为检查是否为"Asia/Shanghai"或"Asia/Chongqing" 10 | // 你也可以根据需要检查时区偏移是否为UTC+8 11 | if (timezone === "Asia/Shanghai" || timezone === "Asia/Chongqing") { 12 | return chinaLink; 13 | } else { 14 | return nonChinaLink; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./src/.umi/tsconfig.json", 3 | "compilerOptions": { 4 | "moduleResolution": "node", 5 | "jsx": "react-jsx", 6 | "noImplicitAny": false 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /chat2db-server/.easy.api.config: -------------------------------------------------------------------------------- 1 | # Configuration generated by easy-yapi plug-in 2 | # Convert date to long 3 | json.rule.convert[java.util.Date]=java.lang.Long 4 | json.rule.convert[java.sql.Timestamp]=java.lang.Long 5 | json.rule.convert[java.time.LocalDateTime]=java.lang.Long 6 | json.rule.convert[java.time.LocalDate]=java.lang.Long 7 | 8 | # Use version to modify tags 9 | api.tag=#version 10 | 11 | # ignore serialVersionUID 12 | constant.field.ignore=groovy:it.name()=="serialVersionUID" 13 | 14 | # sprnSupport for Jackson annotations 15 | json.rule.field.ignore=@com.fasterxml.jackson.annotation.JsonIgnore#value 16 | -------------------------------------------------------------------------------- /chat2db-server/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | rebel.xml 3 | rebel-remote.xml 4 | .gradle 5 | .flattened-pom.xml 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | 15 | ### IntelliJ IDEA ### 16 | .idea 17 | *.iws 18 | *.iml 19 | *.ipr 20 | 21 | ### NetBeans ### 22 | nbproject/private/ 23 | build/ 24 | nbbuild/ 25 | dist/ 26 | nbdist/ 27 | 28 | ## The code generated by front-end packaging does not need to be submitted to github 29 | /chat2db-server-start/src/main/resources/static/front/ 30 | /chat2db-server-start/src/main/resources/thymeleaf/ 31 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/clickhouse.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "CLICKHOUSE", 3 | "supportDatabase": false, 4 | "supportSchema":true, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:clickhouse://localhost:8123/", 8 | "defaultDriver": true, 9 | "custom": false, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/clickhouse-jdbc-0.3.2-patch8-http.jar" 12 | ], 13 | "jdbcDriver": "clickhouse-jdbc-0.3.2-patch8-http.jar", 14 | "jdbcDriverClass": "com.clickhouse.jdbc.ClickHouseDriver" 15 | } 16 | ], 17 | "name": "ClickHouse" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.clickhouse.ClickHousePlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/db2.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "DB2", 3 | "supportDatabase": false, 4 | "supportSchema": true, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:db2://localhost:50000/", 8 | "defaultDriver": true, 9 | "custom": false, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/db2jcc4_4.26.14.jar" 12 | ], 13 | "jdbcDriver": "db2jcc4_4.26.14.jar", 14 | "jdbcDriverClass": "com.ibm.db2.jcc.DB2Driver" 15 | } 16 | ], 17 | "name": "DB2" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-db2/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.db2.DB2Plugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/dm.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "DM", 3 | "supportDatabase": false, 4 | "supportSchema": true, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:dm://localhost:5236/", 8 | "defaultDriver": true, 9 | "custom": false, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/DmJdbcDriver18-8.1.2.141.jar" 12 | ], 13 | "jdbcDriver": "DmJdbcDriver18-8.1.2.141.jar", 14 | "jdbcDriverClass": "dm.jdbc.driver.DmDriver" 15 | } 16 | ], 17 | "name": "DM" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-dm/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.dm.DMPlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/h2.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "H2", 3 | "supportDatabase": true, 4 | "supportSchema": true, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:h2:tcp://localhost:9092/", 8 | "defaultDriver": true, 9 | "custom": false, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/h2-2.1.214.jar" 12 | ], 13 | "jdbcDriver": "h2-2.1.214.jar", 14 | "jdbcDriverClass": "org.h2.Driver" 15 | } 16 | ], 17 | "name": "H2" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-h2/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.h2.H2Plugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-hive/src/main/java/ai/chat2db/plugin/hive/hive.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "HIVE", 3 | "supportDatabase": true, 4 | "supportSchema": false, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:hive2://localhost:10000/", 8 | "defaultDriver": true, 9 | "custom": false, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/hive-jdbc-3.1.2-standalone.jar" 12 | ], 13 | "jdbcDriver": "hive-jdbc-3.1.2-standalone.jar", 14 | "jdbcDriverClass": "org.apache.hive.jdbc.HiveDriver" 15 | } 16 | ], 17 | "name": "Hive" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-hive/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.hive.HivePlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-kingbase/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.kingbase.KingBasePlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-mariadb/src/main/java/ai/chat2db/plugin/mariadb/MariaDBMetaData.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.plugin.mariadb; 2 | 3 | 4 | import ai.chat2db.plugin.mariadb.value.MariaDBValueProcessor; 5 | import ai.chat2db.plugin.mysql.MysqlMetaData; 6 | import ai.chat2db.spi.MetaData; 7 | import ai.chat2db.spi.ValueProcessor; 8 | 9 | public class MariaDBMetaData extends MysqlMetaData implements MetaData { 10 | 11 | @Override 12 | public ValueProcessor getValueProcessor() { 13 | return new MariaDBValueProcessor(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-mariadb/src/main/java/ai/chat2db/plugin/mariadb/mariadb.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "MARIADB", 3 | "supportDatabase": true, 4 | "supportSchema": false, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:mariadb://localhost:3306/", 8 | "defaultDriver": true, 9 | "custom": false, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/mariadb-java-client-3.0.8.jar" 12 | ], 13 | "jdbcDriver": "mariadb-java-client-3.0.8.jar", 14 | "jdbcDriverClass": "org.mariadb.jdbc.Driver" 15 | } 16 | ], 17 | "name": "MariaDB" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-mariadb/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.mariadb.MariaDBPlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/MongodbCommandExecutor.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.plugin.mongodb; 2 | 3 | import ai.chat2db.spi.model.Command; 4 | import ai.chat2db.spi.model.ExecuteResult; 5 | import ai.chat2db.spi.sql.SQLExecutor; 6 | 7 | import java.util.List; 8 | 9 | public class MongodbCommandExecutor extends SQLExecutor { 10 | 11 | @Override 12 | public List executeSelectTable(Command command) { 13 | String sql = "db." + command.getTableName() + ".find()"; 14 | command.setScript(sql); 15 | return execute(command); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/mongodb.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "MONGODB", 3 | "supportDatabase": false, 4 | "supportSchema": true, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:mongodb://localhost:27017", 8 | "defaultDriver":true, 9 | "custom": false, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/mongo-jdbc-standalone-1.18.jar" 12 | ], 13 | "jdbcDriver": "mongo-jdbc-standalone-1.18.jar", 14 | "jdbcDriverClass": "com.dbschema.MongoJdbcDriver" 15 | } 16 | ], 17 | "name": "Mongodb" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.mongodb.MongodbPlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-mysql/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.mysql.MysqlPlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/OceanBaseMetaData.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.plugin.oceanbase; 2 | 3 | import ai.chat2db.plugin.mysql.MysqlMetaData; 4 | import ai.chat2db.spi.MetaData; 5 | import ai.chat2db.spi.jdbc.DefaultMetaService; 6 | 7 | public class OceanBaseMetaData extends MysqlMetaData implements MetaData { 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/oceanbase.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "OCEANBASE", 3 | "supportDatabase": true, 4 | "supportSchema": false, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:oceanbase://localhost:2883/", 8 | "custom": false, 9 | "defaultDriver": true, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/oceanbase-client-2.4.2.jar" 12 | ], 13 | "jdbcDriver": "oceanbase-client-2.4.2.jar", 14 | "jdbcDriverClass": "com.oceanbase.jdbc.Driver" 15 | } 16 | ], 17 | "name": "OceanBase" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.oceanbase.OceanBasePlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-oracle/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.oracle.OraclePlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/pg.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "POSTGRESQL", 3 | "supportDatabase": true, 4 | "supportSchema": true, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:postgresql://localhost:5432/postgres", 8 | "custom": false, 9 | "defaultDriver": true, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/postgresql-42.5.1.jar" 12 | ], 13 | "jdbcDriver": "postgresql-42.5.1.jar", 14 | "jdbcDriverClass": "org.postgresql.Driver" 15 | } 16 | ], 17 | "name": "PostgreSQL" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.postgresql.PostgreSQLPlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-presto/src/main/java/ai/chat2db/plugin/presto/PrestoDBManage.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.plugin.presto; 2 | 3 | import ai.chat2db.spi.DBManage; 4 | import ai.chat2db.spi.jdbc.DefaultDBManage; 5 | 6 | public class PrestoDBManage extends DefaultDBManage implements DBManage { 7 | } 8 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-presto/src/main/java/ai/chat2db/plugin/presto/PrestoMetaData.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.plugin.presto; 2 | 3 | import ai.chat2db.spi.MetaData; 4 | import ai.chat2db.spi.jdbc.DefaultMetaService; 5 | 6 | public class PrestoMetaData extends DefaultMetaService implements MetaData { 7 | public String tableDDL(String databaseName, String schemaName,String tableName) { 8 | return ""; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-presto/src/main/java/ai/chat2db/plugin/presto/presto.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "PRESTO", 3 | "supportDatabase": true, 4 | "supportSchema": true, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:presto://localhost:8080/", 8 | "custom": false, 9 | "defaultDriver": true, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/presto-jdbc-0.245.1.jar" 12 | ], 13 | "jdbcDriver": "presto-jdbc-0.245.1.jar", 14 | "jdbcDriverClass": "com.facebook.presto.jdbc.PrestoDriver" 15 | } 16 | ], 17 | "name": "Presto" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-presto/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.presto.PrestoPlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/sqlite.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "SQLITE", 3 | "supportDatabase": true, 4 | "supportSchema": false, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:sqlite:identifier.sqlite", 8 | "custom": false, 9 | "defaultDriver": true, 10 | "downloadJdbcDriverUrls": [ 11 | "https://cdn.chat2db-ai.com/lib/sqlite-jdbc-3.39.3.0.jar" 12 | ], 13 | "jdbcDriver": "sqlite-jdbc-3.39.3.0.jar", 14 | "jdbcDriverClass": "org.sqlite.JDBC" 15 | } 16 | ], 17 | "name": "SQLite" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.sqlite.SqlitePlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.sqlserver.SqlServerPlugin -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-timeplus/src/main/java/ai/chat2db/plugin/timeplus/timeplus.json: -------------------------------------------------------------------------------- 1 | { 2 | "dbType": "TIMEPLUS", 3 | "supportDatabase": true, 4 | "supportSchema": false, 5 | "driverConfigList": [ 6 | { 7 | "url": "jdbc:timeplus://localhost:7587", 8 | "defaultDriver": true, 9 | "custom": false, 10 | "downloadJdbcDriverUrls": [ 11 | "https://timeplus.io/downloads/timeplus-native-jdbc-shaded-2.0.5.jar" 12 | ], 13 | "jdbcDriver": "timeplus-native-jdbc-shaded-2.0.5.jar", 14 | "jdbcDriverClass": "com.timeplus.jdbc.TimeplusDriver" 15 | } 16 | ], 17 | "name": "Timeplus" 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-plugins/chat2db-timeplus/src/main/resources/META-INF/services/ai.chat2db.spi.Plugin: -------------------------------------------------------------------------------- 1 | ai.chat2db.plugin.timeplus.TimeplusPlugin 2 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/README.md: -------------------------------------------------------------------------------- 1 | ## ali-dbhub-server-domain-core 2 | 写核心处理逻辑 3 | ## ali-dbhub-server-domain-data 4 | 连接各种花里胡哨数据库连接 -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/chart/ChartListQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.chart; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.NonNull; 8 | 9 | /** 10 | * query 11 | * 12 | * @author Jiaju Zhuang 13 | */ 14 | @Data 15 | @NoArgsConstructor 16 | public class ChartListQueryParam { 17 | 18 | /** 19 | * primary key 20 | */ 21 | @NonNull 22 | private List idList; 23 | 24 | /** 25 | * user id 26 | */ 27 | @NonNull 28 | private Long userId; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/chart/ChartPageQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.chart; 2 | 3 | import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @author moji 9 | * @version UserSavedDdlPageQueryParam.java, v 0.1 September 25, 2022 14:05 moji Exp $ 10 | * @date 2022/09/25 11 | */ 12 | @Data 13 | public class ChartPageQueryParam extends PageQueryParam { 14 | 15 | /** 16 | * Report ID 17 | */ 18 | private Long dashboardId; 19 | 20 | /** 21 | * search keyword 22 | */ 23 | private String searchKey; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/chart/ChartQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.chart; 2 | 3 | import lombok.Data; 4 | import lombok.NoArgsConstructor; 5 | import lombok.NonNull; 6 | 7 | /** 8 | * query 9 | * 10 | * @author Jiaju Zhuang 11 | */ 12 | @Data 13 | @NoArgsConstructor 14 | public class ChartQueryParam { 15 | 16 | /** 17 | * primary key 18 | */ 19 | @NonNull 20 | private Long id; 21 | 22 | /** 23 | * user id 24 | */ 25 | @NonNull 26 | private Long userId; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/enums/DeletedTypeEnum.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.enums; 2 | 3 | public enum DeletedTypeEnum { 4 | 5 | Y,N 6 | } 7 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/enums/TaskStatusEnum.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.enums; 2 | 3 | public enum TaskStatusEnum { 4 | 5 | INIT, PROCESSING, FINISH, ERROR 6 | } 7 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/enums/TaskTypeEnum.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.enums; 2 | 3 | public enum TaskTypeEnum { 4 | 5 | /** 6 | * download table data 7 | */ 8 | DOWNLOAD_TABLE_DATA, 9 | 10 | /** 11 | * upload table data 12 | */ 13 | UPLOAD_TABLE_DATA, 14 | 15 | /** 16 | * download table structure 17 | */ 18 | DOWNLOAD_TABLE_STRUCTURE, 19 | 20 | /** 21 | * upload table structure 22 | */ 23 | UPLOAD_TABLE_STRUCTURE, 24 | } 25 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/ConsoleConnectParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author moji 7 | * @version ConsoleConnectParam.java, v 0.1 October 30, 2022 15:53 moji Exp $ 8 | * @date 2022/10/30 9 | */ 10 | @Data 11 | public class ConsoleConnectParam { 12 | 13 | /** 14 | * Data source id 15 | */ 16 | private Long dataSourceId; 17 | 18 | /** 19 | * databaseName 20 | */ 21 | private String databaseName; 22 | 23 | /** 24 | * console id 25 | */ 26 | private Long consoleId; 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/DmlSqlCopyParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | @Data 9 | @SuperBuilder 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class DmlSqlCopyParam extends TableQueryParam{ 13 | 14 | private String type; 15 | } 16 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/EnvironmentPageQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param; 2 | 3 | import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam; 4 | import lombok.Data; 5 | 6 | /** 7 | * environment 8 | * 9 | * @author Jiaju Zhuang 10 | */ 11 | @Data 12 | public class EnvironmentPageQueryParam extends PageQueryParam { 13 | 14 | /** 15 | * search keyword 16 | */ 17 | private String searchKey; 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/MetaDataQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param; 2 | 3 | import jakarta.validation.constraints.NotNull; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.experimental.SuperBuilder; 8 | 9 | @Data 10 | @SuperBuilder 11 | @NoArgsConstructor 12 | @AllArgsConstructor 13 | public class MetaDataQueryParam { 14 | 15 | @NotNull 16 | private Long dataSourceId; 17 | 18 | 19 | /** 20 | * if true, refresh the cache 21 | */ 22 | private boolean refresh; 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/SchemaOperationParam.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.domain.api.param; 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | /** 10 | * @author jipengfei 11 | * @version : SchemaOperationParam.java 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @Builder 16 | @NoArgsConstructor 17 | public class SchemaOperationParam { 18 | String databaseName; 19 | String schemaName; 20 | String newSchemaName; 21 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/SelectResultOperation.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class SelectResultOperation { 9 | 10 | private String type; 11 | 12 | private List dataList; 13 | 14 | private List oldDataList; 15 | } 16 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/TableSelector.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * table structure selector 10 | * 11 | * @author Jiaju Zhuang 12 | */ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class TableSelector { 18 | /** 19 | * column list 20 | */ 21 | private Boolean columnList; 22 | 23 | /** 24 | * index list 25 | */ 26 | private Boolean indexList; 27 | 28 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/TaskPageParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param; 2 | 3 | import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.util.List; 8 | 9 | @Data 10 | public class TaskPageParam extends PageQueryParam implements Serializable { 11 | 12 | 13 | private Long userId; 14 | 15 | private List taskType; 16 | 17 | private String taskStatus; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/TypeQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param; 2 | 3 | import jakarta.validation.constraints.NotNull; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.experimental.SuperBuilder; 8 | 9 | 10 | @Data 11 | @SuperBuilder 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class TypeQueryParam { 15 | 16 | /** 17 | * Corresponding source id stored in the database 18 | */ 19 | @NotNull 20 | private Long dataSourceId; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/dashboard/DashboardQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.dashboard; 2 | 3 | import lombok.Data; 4 | import lombok.NoArgsConstructor; 5 | import lombok.NonNull; 6 | 7 | /** 8 | * query 9 | * 10 | * @author Jiaju Zhuang 11 | */ 12 | @Data 13 | @NoArgsConstructor 14 | public class DashboardQueryParam { 15 | 16 | /** 17 | * primary key 18 | */ 19 | @NonNull 20 | private Long id; 21 | 22 | /** 23 | * user id 24 | */ 25 | @NonNull 26 | private Long userId; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/dashboard/DashboardSelector.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.dashboard; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * selectro 10 | * 11 | * @author Jiaju Zhuang 12 | */ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class DashboardSelector { 18 | 19 | /** 20 | * Chart ID list 21 | */ 22 | private Boolean chartIds; 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/DataSourceSelector.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.datasource; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * @author moji 10 | * @version DataSourceSelector.java, v 0.1 September 23, 2022 15:28 moji Exp $ 11 | * @date 2022/09/23 12 | */ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class DataSourceSelector { 18 | 19 | /** 20 | * environment id 21 | */ 22 | private Boolean environment; 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/DatabaseExportParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.datasource; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: zgq 10 | * @date: 2024年02月27日 22:08 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Builder 16 | public class DatabaseExportParam { 17 | /** 18 | * DB name 19 | */ 20 | private String databaseName; 21 | 22 | private String schemaName; 23 | 24 | private Boolean containData; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.operation; 2 | 3 | import lombok.Data; 4 | import lombok.NoArgsConstructor; 5 | import lombok.NonNull; 6 | 7 | /** 8 | * query 9 | * 10 | * @author Jiaju Zhuang 11 | */ 12 | @Data 13 | @NoArgsConstructor 14 | public class OperationQueryParam { 15 | 16 | /** 17 | * primary key 18 | */ 19 | @NonNull 20 | private Long id; 21 | 22 | /** 23 | * user id 24 | */ 25 | @NonNull 26 | private Long userId; 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamSelector.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.team; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * select 10 | * 11 | * @author Jiaju Zhuang 12 | */ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class TeamSelector { 18 | /** 19 | * Modifier user 20 | */ 21 | private Boolean modifiedUser; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserPageQueryParam.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.team.user; 2 | 3 | import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam; 4 | import jakarta.validation.constraints.NotNull; 5 | import lombok.Data; 6 | 7 | /** 8 | * Team User 9 | * 10 | * @author Jiaju Zhuang 11 | */ 12 | @Data 13 | public class TeamUserPageQueryParam extends PageQueryParam { 14 | 15 | /** 16 | * team id 17 | */ 18 | @NotNull 19 | private Long teamId; 20 | 21 | /** 22 | * user id 23 | */ 24 | @NotNull 25 | private Long userId; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserSelector.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.team.user; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * select 10 | * 11 | * @author Jiaju Zhuang 12 | */ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class TeamUserSelector { 18 | /** 19 | * Team 20 | */ 21 | private Boolean team; 22 | 23 | /** 24 | * User 25 | */ 26 | private Boolean user; 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserSelector.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.param.user; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * select 10 | * 11 | * @author Jiaju Zhuang 12 | */ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class UserSelector { 18 | /** 19 | * Modifier user 20 | */ 21 | private Boolean modifiedUser; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceAccessBusinessService.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.service; 2 | 3 | import ai.chat2db.server.domain.api.model.DataSource; 4 | import ai.chat2db.server.tools.base.wrapper.result.ActionResult; 5 | import jakarta.validation.constraints.NotNull; 6 | 7 | /** 8 | * Data Source Access 9 | * 10 | * @author Jiaju Zhuang 11 | */ 12 | public interface DataSourceAccessBusinessService { 13 | /** 14 | * delete 15 | * 16 | * @param dataSource 17 | * @return 18 | */ 19 | ActionResult checkPermission(@NotNull DataSource dataSource); 20 | } 21 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/WebhookSender.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.api.service; 2 | 3 | import ai.chat2db.server.domain.api.param.message.MessageCreateParam; 4 | 5 | /** 6 | * @author Juechen 7 | * @version : WebhookSender.java 8 | */ 9 | public interface WebhookSender { 10 | 11 | void sendMessage(MessageCreateParam param); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/CommandConverter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.core.converter; 2 | 3 | import ai.chat2db.server.domain.api.param.DlExecuteParam; 4 | import ai.chat2db.spi.model.Command; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.Mapping; 7 | import org.mapstruct.Mappings; 8 | 9 | @Mapper(componentModel = "spring") 10 | public abstract class CommandConverter { 11 | 12 | @Mappings({ 13 | @Mapping(target = "script", source = "sql") 14 | }) 15 | public abstract Command param2model(DlExecuteParam param); 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/DriverConfigConverter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.core.converter; 2 | 3 | import ai.chat2db.server.domain.repository.entity.JdbcDriverDO; 4 | import ai.chat2db.spi.config.DriverConfig; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.mapstruct.Mapper; 7 | 8 | @Slf4j 9 | @Mapper(componentModel = "spring") 10 | public abstract class DriverConfigConverter { 11 | public abstract DriverConfig do2Config(JdbcDriverDO driverDO); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TableConverter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.core.converter; 2 | 3 | import ai.chat2db.server.domain.api.param.TableVectorParam; 4 | import ai.chat2db.server.domain.repository.entity.TableVectorMappingDO; 5 | import org.mapstruct.Mapper; 6 | 7 | @Mapper(componentModel = "spring") 8 | public abstract class TableConverter { 9 | 10 | /** 11 | * TableVectorParam to TableVectorMappingDO 12 | * 13 | * @param param 14 | * @return 15 | */ 16 | public abstract TableVectorMappingDO toTableVectorMappingDO(TableVectorParam param); 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/util/H2Functions.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.core.util; 2 | 3 | public class H2Functions { 4 | public static String keyGeneratorFunction(String tableName) { 5 | return null; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/MapperUtils.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository; 2 | 3 | import ai.chat2db.server.domain.repository.mapper.TaskMapper; 4 | 5 | public class MapperUtils { 6 | 7 | public static TaskMapper getTaskMapper() { 8 | return Dbutils.getMapper(TaskMapper.class); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/ChartMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.ChartDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Custom dashboard Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-09-09 13 | */ 14 | public interface ChartMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DashboardChartRelationMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.DashboardChartRelationDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Custom dashboard Mapper interface 9 | *

10 | * 11 | * @author ali-dbhub 12 | * @since 2023-06-09 13 | */ 14 | public interface DashboardChartRelationMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DashboardMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.DashboardDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Custom dashboard Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-09-02 13 | */ 14 | public interface DashboardMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DataSourceAccessMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.DataSourceAccessDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Data source authorization Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-08-26 13 | */ 14 | public interface DataSourceAccessMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DataSourceMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.DataSourceDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Data source connection table Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-08-26 13 | */ 14 | public interface DataSourceMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DbhubUserMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.DbhubUserDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Data source connection table Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-08-26 13 | */ 14 | public interface DbhubUserMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/EnvironmentMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.EnvironmentDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Database connection environment Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-09-09 13 | */ 14 | public interface EnvironmentMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/JdbcDriverMapper.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.domain.repository.mapper; 3 | 4 | import ai.chat2db.server.domain.repository.entity.JdbcDriverDO; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | 7 | /** 8 | * @author jipengfei 9 | * @version : SystemConfigMapper.java 10 | */ 11 | public interface JdbcDriverMapper extends BaseMapper { 12 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/OperationLogMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.OperationLogDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * My execution record table Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-10-14 13 | */ 14 | public interface OperationLogMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/OperationSavedMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.OperationSavedDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * My save table Mapper interface 9 | *

10 | * 11 | * @author ali-dbhub 12 | * @since 2022-12-28 13 | */ 14 | public interface OperationSavedMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/PinTableMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.PinTableDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | public interface PinTableMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/SystemConfigMapper.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.domain.repository.mapper; 3 | 4 | import ai.chat2db.server.domain.repository.entity.SystemConfigDO; 5 | 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 7 | 8 | /** 9 | * @author jipengfei 10 | * @version : SystemConfigMapper.java 11 | */ 12 | public interface SystemConfigMapper extends BaseMapper { 13 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/TableCacheVersionMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.TableCacheVersionDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * table cache version Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-10-11 13 | */ 14 | public interface TableCacheVersionMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/TableVectorMappingMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.TableVectorMappingDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Milvus mapping table saves records Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-10-14 13 | */ 14 | public interface TableVectorMappingMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/TeamMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.TeamDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * Team Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-08-26 13 | */ 14 | public interface TeamMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/TeamUserMapper.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.domain.repository.mapper; 2 | 3 | import ai.chat2db.server.domain.repository.entity.TeamUserDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * User team table Mapper interface 9 | *

10 | * 11 | * @author chat2db 12 | * @since 2023-08-05 13 | */ 14 | public interface TeamUserMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/migration/V1_0_2__修改Console.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `operation_saved` ADD COLUMN `db_schema_name` varchar(128) NULL COMMENT 'schema名称'; 2 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/migration/V1_0_8__操作保存类型.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `operation_saved` ADD COLUMN `operation_type` varchar(1024) NULL COMMENT '操作类型'; 2 | 3 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/migration/V2_1_10__REMOVEdEMO.sql: -------------------------------------------------------------------------------- 1 | delete from DATA_SOURCE where ALIAS ='DEMO@db.sqlgpt.cn'; 2 | 3 | delete from DASHBOARD where id =ID; 4 | 5 | delete from CHART where id<=3; 6 | 7 | delete from DASHBOARD_CHART_RELATION where CHART_ID<=3; 8 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/migration/V2_1_2__OPERATION.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `operation_log` 2 | ADD COLUMN `status` varchar(20) DEFAULT 'success' COMMENT '状态'; 3 | ALTER TABLE `operation_log` 4 | ADD COLUMN `operation_rows` bigint(20) unsigned COMMENT '操作行数'; 5 | ALTER TABLE `operation_log` 6 | ADD COLUMN `use_time` bigint(20) unsigned COMMENT '使用时长'; 7 | ALTER TABLE `operation_log` 8 | ADD COLUMN `extend_info` varchar(1024) COMMENT '扩展信息'; -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/migration/V2_1_4__OPERATION.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `operation_log` 2 | ADD COLUMN `schema_name` varchar(256) COMMENT 'schema名称'; 3 | create INDEX idx_op_data_source_id on operation_log(data_source_id) ; -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/migration/V2_1_6__TableVectorUpdate.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE table_vector_mapping ALTER COLUMN status VARCHAR(64); 2 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/migration/V2_1_7__DATASOURCE.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `data_source` ADD COLUMN `service_name` varchar(128) NULL COMMENT '服务名'; 2 | ALTER TABLE `data_source` ADD COLUMN `service_type` varchar(128) NULL COMMENT '服务类型'; 3 | 4 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/migration/V2_1_8__Chart.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `chart` ADD COLUMN `schema_name` varchar(128) NULL COMMENT 'schemaName'; 2 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/db/temp/V2_1_0__补充.sql: -------------------------------------------------------------------------------- 1 | # ALTER TABLE `operation_saved` 2 | # modify COLUMN `user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '用户id'; 3 | # 4 | # update operation_saved 5 | # set user_id= 1; 6 | # 7 | # ALTER TABLE `dashboard` 8 | # modify `user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '用户id'; 9 | # update dashboard 10 | # set user_id= 1; 11 | # 12 | # 13 | # ALTER TABLE `chart` 14 | # modify `user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '用户id'; 15 | # update chart 16 | # set user_id= 1; 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/ChartMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DashboardChartRelationMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DashboardMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DataSourceAccessMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DataSourceMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DbhubUserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/EnvironmentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/JdbcDriverMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/OperationLogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/OperationSavedMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/PinTableMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/SystemConfigMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/TableCacheVersionMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/TableVectorMappingMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/TeamMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/TeamUserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/config/config/WebLogConfiguration.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.start.config.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.zalando.logbook.BodyFilter; 6 | 7 | /** 8 | * log config 9 | * 10 | * @author Jiaju Zhuang 11 | */ 12 | @Configuration 13 | public class WebLogConfiguration { 14 | 15 | @Bean 16 | public BodyFilter bodyFilter() { 17 | return BodyFilter.none(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/exception/convertor/ExceptionConvertor.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.start.exception.convertor; 2 | 3 | import ai.chat2db.server.tools.base.wrapper.result.ActionResult; 4 | 5 | /** 6 | * exception converter 7 | * 8 | * @author Shi Yi 9 | */ 10 | public interface ExceptionConvertor { 11 | 12 | /** 13 | * Conversion exception 14 | * 15 | * @param exception 16 | * @return 17 | */ 18 | ActionResult convert(T exception); 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-start/src/main/resources/META-INF/spring.factories -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | # port 2 | server: 3 | port: 10821 4 | 5 | chat2db: 6 | gateway: 7 | base-url: http://test.sqlgpt.cn/gateway 8 | model-base-url: http://test.sqlgpt.cn/gateway 9 | management: 10 | endpoints: 11 | web: 12 | exposure: 13 | include: startup -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/application-release.yml: -------------------------------------------------------------------------------- 1 | #spring: 2 | # datasource: 3 | # # Configure the relative path of the built-in database 4 | # url: jdbc:h2:~/.chat2db/db/chat2db;MODE=MYSQL;FILE_LOCK=NO 5 | # driver-class-name: org.h2.Driver 6 | # port 7 | server: 8 | port: 10824 9 | 10 | chat2db: 11 | gateway: 12 | base-url: http://test.sqlgpt.cn/gateway 13 | model-base-url: http://test.sqlgpt.cn/gateway -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/application-test.yml: -------------------------------------------------------------------------------- 1 | # port 2 | server: 3 | port: 10822 4 | 5 | chat2db: 6 | gateway: 7 | base-url: http://test.sqlgpt.cn/gateway 8 | model-base-url: http://test.sqlgpt.cn/gateway -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/static/icon/h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-start/src/main/resources/static/icon/h2.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/static/icon/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-start/src/main/resources/static/icon/mysql.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/static/icon/oceanbase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-start/src/main/resources/static/icon/oceanbase.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/static/icon/oracle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-start/src/main/resources/static/icon/oracle.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/static/icon/postgresql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-start/src/main/resources/static/icon/postgresql.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/static/icon/sqlite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-start/src/main/resources/static/icon/sqlite.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/static/icon/sqlserver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-start/src/main/resources/static/icon/sqlserver.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/main/resources/thymeleaf/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Chat2DB 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/common/BaseTest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.start.test.common; 2 | 3 | import ai.chat2db.server.start.Application; 4 | 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.boot.test.context.SpringBootTest; 7 | 8 | /** 9 | * Basic test class 10 | * 11 | * @author Jiaju Zhuang 12 | **/ 13 | @SpringBootTest(classes = {Application.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 14 | @Slf4j 15 | public abstract class BaseTest { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/dto/TestDTO.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.start.test.dto; 2 | 3 | import java.io.Serial; 4 | import java.io.Serializable; 5 | 6 | import ai.chat2db.server.tools.base.constant.EasyToolsConstant; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | import lombok.experimental.SuperBuilder; 11 | 12 | @Data 13 | @SuperBuilder 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class TestDTO implements Serializable { 17 | 18 | @Serial 19 | private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID; 20 | 21 | private String name; 22 | } 23 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-test/src/test/java/ai/chat2db/server/test/temp/HttpTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-test/src/test/java/ai/chat2db/server/test/temp/HttpTest.java -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-test/src/test/java/ai/chat2db/server/test/temp/TempTest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.test.temp; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | @Slf4j 6 | public class TempTest { 7 | 8 | 9 | } 10 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-test/src/test/java/ai/chat2db/server/test/temp/UserTest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.test.temp; 2 | 3 | import ai.chat2db.server.test.common.BaseTest; 4 | 5 | import cn.hutool.crypto.digest.DigestUtil; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.junit.jupiter.api.Test; 8 | 9 | @Slf4j 10 | public class UserTest extends BaseTest { 11 | 12 | @Test 13 | public void test() { 14 | log.info("password:{}", DigestUtil.bcrypt("dbhub")); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-test/src/test/resources/h2/init.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE if exists test_query; 2 | 3 | CREATE TABLE `test_query` 4 | ( 5 | `id` bigint PRIMARY KEY AUTO_INCREMENT NOT NULL COMMENT '主键', 6 | `name` VARCHAR(100) COMMENT '名字', 7 | `date` datetime COMMENT '时间', 8 | `number` int COMMENT '数字' 9 | ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='测试表'; 10 | 11 | 12 | INSERT INTO `test_query` (name,date,number) VALUES ('姓名','2022-01-01',123); -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-test/src/test/resources/h2/init_close.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE if exists test_close; 2 | 3 | CREATE TABLE `test_close` 4 | ( 5 | `id` bigint PRIMARY KEY AUTO_INCREMENT NOT NULL COMMENT '主键', 6 | `name` VARCHAR(100) COMMENT '名字', 7 | `date` datetime COMMENT '时间', 8 | `number` int COMMENT '数字' 9 | ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='测试表'; 10 | 11 | 12 | INSERT INTO `test_close` (name,date,number) VALUES ('姓名','2022-01-01',123); -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-test/src/test/resources/h2/init_transaction.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE if exists test_transaction; 2 | 3 | CREATE TABLE `test_transaction` 4 | ( 5 | `id` bigint PRIMARY KEY AUTO_INCREMENT NOT NULL COMMENT '主键', 6 | `name` VARCHAR(100) COMMENT '名字', 7 | `date` datetime COMMENT '时间', 8 | `number` int COMMENT '数字' 9 | ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='测试表'; 10 | 11 | 12 | INSERT INTO `test_transaction` (name,date,number) VALUES ('姓名','2022-01-01',123); -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-test/src/test/resources/logback-test-spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ${CONSOLE_LOG_PATTERN} 8 | utf8 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-tools/chat2db-server-tools-base/src/main/java/ai/chat2db/server/tools/base/enums/OrderByDirectionEnum.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.tools.base.enums; 2 | 3 | /** 4 | * Enumeration of sorting directions 5 | * 6 | * @author Shi Yi 7 | */ 8 | public enum OrderByDirectionEnum implements BaseEnum { 9 | 10 | /** 11 | * asc 12 | */ 13 | ASC, 14 | /** 15 | * desc 16 | */ 17 | DESC; 18 | 19 | @Override 20 | public String getCode() { 21 | return this.name(); 22 | } 23 | 24 | @Override 25 | public String getDescription() { 26 | return this.name(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-tools/chat2db-server-tools-base/src/main/java/ai/chat2db/server/tools/base/wrapper/Traceable.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.tools.base.wrapper; 2 | 3 | /** 4 | * Is it possible to track 5 | * 6 | * @author Shi Yi 7 | */ 8 | public interface Traceable { 9 | /** 10 | * Get traceId 11 | * 12 | * @return traceId 13 | */ 14 | String getTraceId(); 15 | 16 | /** 17 | * Set traceId 18 | * 19 | * @param traceId 20 | */ 21 | void setTraceId(String traceId); 22 | } 23 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-tools/chat2db-server-tools-base/src/main/java/ai/chat2db/server/tools/base/wrapper/param/OrderCondition.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.tools.base.wrapper.param; 2 | 3 | /** 4 | * Sorting conditions 5 | * 6 | * @author Shi Yi 7 | */ 8 | public interface OrderCondition { 9 | 10 | /** 11 | * Return column name 12 | * 13 | * @return 14 | */ 15 | OrderBy getOrderBy(); 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/java/ai/chat2db/server/web/start/config/config/WebLogConfiguration.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.start.config.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.zalando.logbook.BodyFilter; 6 | 7 | /** 8 | * log config 9 | * 10 | * @author Jiaju Zhuang 11 | */ 12 | @Configuration 13 | public class WebLogConfiguration { 14 | 15 | @Bean 16 | public BodyFilter bodyFilter() { 17 | return BodyFilter.none(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/java/ai/chat2db/server/web/start/exception/convertor/ExceptionConvertor.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.start.exception.convertor; 2 | 3 | import ai.chat2db.server.tools.base.wrapper.result.ActionResult; 4 | 5 | /** 6 | * exception converter 7 | * 8 | * @author Shi Yi 9 | */ 10 | public interface ExceptionConvertor { 11 | 12 | /** 13 | * Conversion exception 14 | * 15 | * @param exception 16 | * @return 17 | */ 18 | ActionResult convert(T exception); 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/META-INF/spring.factories -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | #spring: 2 | # datasource: 3 | # # Configure the relative path of the built-in database 4 | # url: jdbc:h2:~/.chat2db/db/chat2db_dev;FILE_LOCK=NO;MODE=MYSQL 5 | # driver-class-name: org.h2.Driver 6 | # The port number 7 | server: 8 | port: 10821 9 | 10 | chat2db: 11 | gateway: 12 | base-url: http://test.sqlgpt.cn/gateway 13 | model-base-url: http://test.sqlgpt.cn/gateway -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/application-release.yml: -------------------------------------------------------------------------------- 1 | #spring: 2 | # datasource: 3 | # # Configure the relative path of the built-in database 4 | # url: jdbc:h2:~/.chat2db/db/chat2db;MODE=MYSQL;FILE_LOCK=NO 5 | # driver-class-name: org.h2.Driver 6 | # The port number 7 | server: 8 | port: 10824 9 | 10 | chat2db: 11 | gateway: 12 | base-url: http://test.sqlgpt.cn/gateway 13 | model-base-url: http://test.sqlgpt.cn/gateway -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/application-test.yml: -------------------------------------------------------------------------------- 1 | 2 | # port 3 | server: 4 | port: 10822 5 | 6 | chat2db: 7 | gateway: 8 | base-url: http://test.sqlgpt.cn/gateway 9 | model-base-url: http://test.sqlgpt.cn/gateway -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/icon/h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/icon/h2.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/icon/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/icon/mysql.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/icon/oceanbase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/icon/oceanbase.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/icon/oracle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/icon/oracle.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/icon/postgresql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/icon/postgresql.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/icon/sqlite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/icon/sqlite.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/icon/sqlserver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/icon/sqlserver.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/h2.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/mysql.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/oceanbase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/oceanbase.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/oracle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/oracle.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/postgresql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/postgresql.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/sqlite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/sqlite.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/sqlserver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web-start/src/main/resources/static/icon/sqlserver.png -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web-start/src/main/resources/thymeleaf/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Chat2DB 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/request/DataSourceCloneRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.admin.api.controller.datasource.request; 2 | 3 | 4 | import lombok.Data; 5 | 6 | /** 7 | * @author moji 8 | * @version ConnectionCloneRequest.java, v 0.1 September 16, 2022 14:23 moji Exp $ 9 | * @date 2022/09/16 10 | */ 11 | @Data 12 | public class DataSourceCloneRequest { 13 | 14 | /** 15 | * primary key id 16 | */ 17 | private Long id; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamUserPageQueryVO.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.admin.api.controller.team.vo; 3 | 4 | import ai.chat2db.server.admin.api.controller.user.vo.SimpleUserVO; 5 | import lombok.Data; 6 | 7 | /** 8 | * Pagination query 9 | * 10 | * @author Jiaju Zhuang 11 | */ 12 | @Data 13 | public class TeamUserPageQueryVO { 14 | /** 15 | * primary key 16 | */ 17 | private Long id; 18 | 19 | /** 20 | * team id 21 | */ 22 | private Long teamId; 23 | 24 | /** 25 | * user 26 | */ 27 | private SimpleUserVO user; 28 | } 29 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserTeamPageQueryVO.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.admin.api.controller.user.vo; 2 | 3 | import ai.chat2db.server.admin.api.controller.team.vo.SimpleTeamVO; 4 | import lombok.Data; 5 | 6 | /** 7 | * Pagination query 8 | * 9 | * @author Jiaju Zhuang 10 | */ 11 | @Data 12 | public class UserTeamPageQueryVO { 13 | /** 14 | * primary key 15 | */ 16 | private Long id; 17 | 18 | /** 19 | * user id 20 | */ 21 | private Long userId; 22 | 23 | /** 24 | * team 25 | */ 26 | private SimpleTeamVO team; 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-common-api/src/main/java/ai/chat2db/server/common/api/controller/request/CommonPageQueryRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.common.api.controller.request; 2 | 3 | import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest; 4 | import lombok.Data; 5 | 6 | /** 7 | * Common pagination query 8 | * 9 | * @author Jiaju Zhuang 10 | */ 11 | @Data 12 | public class CommonPageQueryRequest extends PageQueryRequest { 13 | 14 | 15 | /** 16 | * searchKey 17 | */ 18 | private String searchKey; 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-common-api/src/main/java/ai/chat2db/server/common/api/controller/request/CommonQueryRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.common.api.controller.request; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * Common query 7 | * 8 | * @author Jiaju Zhuang 9 | */ 10 | @Data 11 | public class CommonQueryRequest { 12 | 13 | /** 14 | * searchKey 15 | */ 16 | private String searchKey; 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/aspect/ConnectionInfoAspect.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.aspect; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * @author jipengfei 11 | * @version : ConnectionInfoAspect.java 12 | */ 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.TYPE) 15 | @Documented 16 | public @interface ConnectionInfoAspect { 17 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/DocParser/AbstractParser.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ai.DocParser; 2 | 3 | import java.io.InputStream; 4 | import java.util.List; 5 | 6 | /** 7 | * @author CYY 8 | * @date March 20, 2023 8:13 am 9 | * @description 10 | */ 11 | public abstract class AbstractParser { 12 | public abstract List parse(InputStream inputStream) throws Exception; 13 | } 14 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/claude/model/ClaudeChatMessage.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ai.claude.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class ClaudeChatMessage { 7 | 8 | private String conversation_uuid; 9 | 10 | private String organization_uuid; 11 | 12 | private String text; 13 | 14 | private ClaudeChatCompletionsOptions completion; 15 | } 16 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/claude/model/ClaudeMessageLimit.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ai.claude.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class ClaudeMessageLimit { 7 | 8 | private String type; 9 | } 10 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/fastchat/embeddings/FastChatItem.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ai.fastchat.embeddings; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.math.BigDecimal; 7 | import java.util.List; 8 | 9 | @Data 10 | public class FastChatItem implements Serializable { 11 | private String object; 12 | private List embedding; 13 | private Integer index; 14 | } 15 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/request/ChatRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ai.request; 2 | 3 | import java.util.List; 4 | 5 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 6 | 7 | import lombok.Data; 8 | 9 | /** 10 | * Chat query input parameters 11 | * 12 | * @author moji 13 | * @version ChatQueryRequest.java, v 0.1 April 2, 2023 13:28 moji Exp $ 14 | * @date 2023/04/02 15 | */ 16 | @Data 17 | public class ChatRequest { 18 | 19 | private String prompt; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/tongyi/model/TongyiChatMessage.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ai.tongyi.model; 2 | 3 | 4 | import ai.chat2db.server.web.api.controller.ai.fastchat.model.FastChatMessage; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | public class TongyiChatMessage { 11 | 12 | private List messages; 13 | } 14 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/config/request/SystemConfigRequest.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.web.api.controller.config.request; 3 | 4 | import lombok.Data; 5 | 6 | /** 7 | * @author jipengfei 8 | * @version : SystemConfigRequest.java 9 | */ 10 | @Data 11 | public class SystemConfigRequest { 12 | 13 | private String code; 14 | 15 | private String content; 16 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/dashboard/request/ChartQueryRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.dashboard.request; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @author moji 9 | * @version ChartQueryRequest.java, v 0.1 June 9, 2023 17:46 moji Exp $ 10 | * @date 2023/06/09 11 | */ 12 | @Data 13 | public class ChartQueryRequest { 14 | 15 | /** 16 | * Chart ID list 17 | */ 18 | private List ids; 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/request/ConsoleCloseRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.data.source.request; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author moji 7 | * @version ConsoleContentRequest.java, v 0.1 October 30, 2022 15:52 moji Exp $ 8 | * @date 2022/10/30 9 | */ 10 | @Data 11 | public class ConsoleCloseRequest extends DataSourceBaseRequest implements DataSourceConsoleRequestInfo{ 12 | 13 | /** 14 | * console id 15 | */ 16 | private Long consoleId; 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/request/ConsoleConnectRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.data.source.request; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author moji 7 | * @version ConsoleContentRequest.java, v 0.1 October 30, 2022 15:52 moji Exp $ 8 | * @date 2022/10/30 9 | */ 10 | @Data 11 | public class ConsoleConnectRequest extends DataSourceBaseRequest implements DataSourceConsoleRequestInfo { 12 | 13 | /** 14 | * console id 15 | */ 16 | private Long consoleId; 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/request/DataSourceBaseRequestInfo.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.web.api.controller.data.source.request; 3 | 4 | /** 5 | * @author jipengfei 6 | * @version : DataSourceBaseRequestInfo.java 7 | */ 8 | public interface DataSourceBaseRequestInfo { 9 | 10 | /** 11 | * Get datasoure id 12 | * @return 13 | */ 14 | Long getDataSourceId(); 15 | 16 | /** 17 | * get datasoure name 18 | * @return 19 | */ 20 | String getDatabaseName(); 21 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/request/DataSourceCloneRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.data.source.request; 2 | 3 | 4 | import lombok.Data; 5 | 6 | /** 7 | * @author moji 8 | * @version ConnectionCloneRequest.java, v 0.1 September 16, 2022 14:23 moji Exp $ 9 | * @date 2022/09/16 10 | */ 11 | @Data 12 | public class DataSourceCloneRequest { 13 | 14 | /** 15 | * primary key id 16 | */ 17 | private Long id; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/request/DataSourceCloseRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.data.source.request; 2 | 3 | 4 | import jakarta.validation.constraints.NotNull; 5 | 6 | import lombok.Data; 7 | 8 | /** 9 | * @author moji 10 | * @version ConnectionCreateRequest.java, v 0.1 September 16, 2022 14:23 moji Exp $ 11 | * @date 2022/09/16 12 | */ 13 | @Data 14 | public class DataSourceCloseRequest { 15 | 16 | /** 17 | * primary key id 18 | */ 19 | @NotNull 20 | private Long id; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/request/DataSourceConsoleRequestInfo.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.web.api.controller.data.source.request; 3 | 4 | /** 5 | * @author jipengfei 6 | * @version : DataSourceConsoleRequestInfo.java 7 | */ 8 | public interface DataSourceConsoleRequestInfo extends DataSourceBaseRequestInfo{ 9 | 10 | /** 11 | * 12 | * @return 13 | */ 14 | Long getConsoleId(); 15 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DatabaseVO.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.data.source.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author moji 7 | * @version DatabaseVO.java, v 0.1 September 16, 2022 17:24 moji Exp $ 8 | * @date 2022/09/16 9 | */ 10 | @Data 11 | public class DatabaseVO { 12 | 13 | /** 14 | * DB name 15 | */ 16 | private String name; 17 | 18 | /** 19 | * DB description 20 | */ 21 | private String description; 22 | 23 | /** 24 | * The number of tables or keys under DB 25 | */ 26 | private Integer count; 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/EnvVO.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.data.source.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author moji 7 | * @version EnvVO.java, v 0.1 September 18, 2022 14:06 moji Exp $ 8 | * @date 2022/09/18 9 | */ 10 | @Data 11 | public class EnvVO { 12 | 13 | /** 14 | * environment code 15 | */ 16 | private String code; 17 | 18 | /** 19 | * environment name 20 | */ 21 | private String name; 22 | } 23 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/driver/request/JdbcDriverRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.driver.request; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class JdbcDriverRequest { 9 | String jdbcDriverClass; 10 | String dbType; 11 | 12 | List jdbcDriver; 13 | } 14 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ncx/enums/VersionEnum.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ncx.enums; 2 | 3 | /** 4 | * navicat version enumeration (version distinguishes navicat encryption algorithm) 5 | * 6 | * @author lzy 7 | */ 8 | public enum VersionEnum { 9 | /** 10 | * navicat11 11 | */ 12 | native11, 13 | /** 14 | * navicat12+ 15 | */ 16 | navicat12more 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ncx/service/ConverterService.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ncx.service; 2 | 3 | import ai.chat2db.server.web.api.controller.ncx.vo.UploadVO; 4 | 5 | import java.io.File; 6 | import java.io.InputStream; 7 | 8 | /** 9 | * ConverterService 10 | * 11 | * @author lzy 12 | **/ 13 | public interface ConverterService { 14 | 15 | UploadVO uploadFile(File file); 16 | 17 | UploadVO dbpUploadFile(File file); 18 | 19 | UploadVO datagripUploadFile(String text); 20 | } 21 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ncx/vo/UploadVO.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.ncx.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * UploadVO 10 | * 11 | * @author lzy 12 | **/ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class UploadVO { 18 | private String result; 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/request/BatchTabCloseRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.operation.saved.request; 2 | 3 | import java.util.List; 4 | 5 | import jakarta.validation.constraints.NotNull; 6 | import lombok.Data; 7 | 8 | /** 9 | * close tab 10 | * @author Jiaju Zhuang 11 | */ 12 | @Data 13 | public class BatchTabCloseRequest { 14 | 15 | /** 16 | * primary key 17 | */ 18 | @NotNull 19 | private List idList; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/pin/converter/PinWebConverter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.pin.converter; 2 | 3 | import ai.chat2db.server.domain.api.param.PinTableParam; 4 | import ai.chat2db.server.web.api.controller.pin.request.PinTableRequest; 5 | import org.mapstruct.Mapper; 6 | 7 | @Mapper(componentModel = "spring") 8 | public abstract class PinWebConverter { 9 | 10 | 11 | public abstract PinTableParam req2param(PinTableRequest request); 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/converter/FunctionConverter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.converter; 2 | 3 | import ai.chat2db.server.web.api.controller.rdb.request.FunctionUpdateRequest; 4 | import ai.chat2db.spi.model.Function; 5 | import org.mapstruct.Mapper; 6 | 7 | /** 8 | * @author Juechen 9 | * @version : FunctionConverter.java 10 | */ 11 | @Mapper(componentModel = "spring") 12 | public abstract class FunctionConverter { 13 | public abstract Function request2param(FunctionUpdateRequest request); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/converter/ProcedureConverter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.converter; 2 | 3 | import ai.chat2db.server.web.api.controller.rdb.request.ProcedureUpdateRequest; 4 | import ai.chat2db.spi.model.Procedure; 5 | import org.mapstruct.Mapper; 6 | 7 | /** 8 | * @author: zgq 9 | * @date: February 24, 2024 13:39 10 | */ 11 | @Mapper(componentModel = "spring") 12 | public abstract class ProcedureConverter { 13 | 14 | public abstract Procedure request2param(ProcedureUpdateRequest request); 15 | } 16 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/BaseDataImporter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data; 2 | 3 | /** 4 | * @author: zgq 5 | * @date: 2024年06月04日 10:52 6 | */ 7 | public abstract class BaseDataImporter implements DataImportStrategy{ 8 | } 9 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/BaseExcelImporter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data; 2 | 3 | /** 4 | * 功能描述 5 | * 6 | * @author: zgq 7 | * @date: 2024年06月04日 10:57 8 | */ 9 | public abstract class BaseExcelImporter extends BaseDataImporter{ 10 | } 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/DataExportStrategy.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data; 2 | 3 | import ai.chat2db.server.domain.api.param.datasource.DatabaseExportDataParam; 4 | 5 | import java.io.File; 6 | import java.io.IOException; 7 | import java.sql.SQLException; 8 | 9 | public interface DataExportStrategy { 10 | 11 | 12 | void doExport(DatabaseExportDataParam databaseExportDataParam, File file) throws IOException, SQLException; 13 | } 14 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/DataImportStrategy.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data; 2 | 3 | public interface DataImportStrategy { 4 | } 5 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/csv/CsvDataImporter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data.csv; 2 | 3 | import ai.chat2db.server.web.api.controller.rdb.data.BaseExcelImporter; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * @author: zgq 8 | * @date: 2024年06月04日 10:04 9 | */ 10 | @Component("csvImporter") 11 | public class CsvDataImporter extends BaseExcelImporter { 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/json/JsonDataImporter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data.json; 2 | 3 | import ai.chat2db.server.web.api.controller.rdb.data.BaseDataImporter; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * @author: zgq 8 | * @date: 2024年06月04日 10:33 9 | */ 10 | @Component("jsonImporter") 11 | public class JsonDataImporter extends BaseDataImporter { 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/service/DatabaseDataService.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data.service; 2 | 3 | import ai.chat2db.server.domain.api.param.datasource.DatabaseExportDataParam; 4 | import ai.chat2db.server.tools.base.wrapper.result.DataResult; 5 | 6 | /** 7 | * @author: zgq 8 | * @date: 2024年06月08日 10:32 9 | */ 10 | public interface DatabaseDataService { 11 | 12 | DataResult doExportAsync(DatabaseExportDataParam databaseExportDataParam); 13 | } 14 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/xls/XlsDataImporter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data.xls; 2 | 3 | import ai.chat2db.server.web.api.controller.rdb.data.BaseExcelImporter; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * @author: zgq 8 | * @date: 2024年06月04日 10:34 9 | */ 10 | @Component("xlsImporter") 11 | public class XlsDataImporter extends BaseExcelImporter { 12 | 13 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/data/xlsx/XlsxDataImporter.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.data.xlsx; 2 | 3 | import ai.chat2db.server.web.api.controller.rdb.data.BaseExcelImporter; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * @author: zgq 8 | * @date: 2024年06月04日 10:34 9 | */ 10 | @Component("xlsxImporter") 11 | public class XlsxDataImporter extends BaseExcelImporter { 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/doc/conf/ExportOptions.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.doc.conf; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * Build options 7 | * 8 | * @author lzy 9 | */ 10 | @Data 11 | public class ExportOptions { 12 | /** 13 | * Whether to export multiple sheets 14 | */ 15 | private Boolean isExportMoreSheet = Boolean.FALSE; 16 | /** 17 | * Whether to export the index 18 | */ 19 | private Boolean isExportIndex = Boolean.FALSE; 20 | 21 | /** 22 | * Export file suffix 23 | **/ 24 | private String fileSuffix; 25 | } 26 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/doc/constant/CommonConstant.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.doc.constant; 2 | 3 | /** 4 | * CommonConstant 5 | * 6 | * @author lzy 7 | **/ 8 | public final class CommonConstant { 9 | /** 10 | * Table head 11 | **/ 12 | public static String[] INDEX_HEAD_NAMES = {}; 13 | public static String[] COLUMN_HEAD_NAMES = {}; 14 | } 15 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/doc/event/TemplateEvent.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.doc.event; 2 | 3 | import org.springframework.context.ApplicationEvent; 4 | 5 | /** 6 | * TemplateEvent 7 | * 8 | * @author lzy 9 | **/ 10 | public class TemplateEvent extends ApplicationEvent { 11 | public TemplateEvent(String key) { 12 | super(key); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/DatabaseCreateRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class DatabaseCreateRequest extends DataSourceBaseRequest { 8 | 9 | private String name; 10 | 11 | private String comment; 12 | 13 | private String charset; 14 | 15 | private String collation; 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/DatabaseExportRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: zgq 10 | * @date: February 27, 2024 22:03 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class DatabaseExportRequest extends DataSourceBaseRequest { 16 | private Boolean containData; 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/DmlSqlCopyRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 4 | import jakarta.validation.constraints.NotNull; 5 | import lombok.Data; 6 | 7 | @Data 8 | public class DmlSqlCopyRequest extends DataSourceBaseRequest { 9 | 10 | @NotNull 11 | private String tableName; 12 | 13 | private String type; 14 | } 15 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/FunctionUpdateRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author Juechen 10 | * @version : FunctionUpdateRequest.java 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class FunctionUpdateRequest extends DataSourceBaseRequest { 16 | 17 | private String functionName; 18 | private String functionBody; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/NewTableSqlRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 4 | import jakarta.validation.constraints.NotNull; 5 | import lombok.Data; 6 | 7 | @Data 8 | public class NewTableSqlRequest extends DataSourceBaseRequest { 9 | 10 | /** 11 | * new table structure 12 | */ 13 | @NotNull 14 | private TableRequest newTable; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ProcedureUpdateRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author: zgq 10 | * @date: February 24, 2024 13:21 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class ProcedureUpdateRequest extends DataSourceBaseRequest { 16 | 17 | private String procedureName; 18 | private String procedureBody; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/SchemaCreateRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 4 | import com.fasterxml.jackson.annotation.JsonAlias; 5 | import lombok.Data; 6 | 7 | @Data 8 | public class SchemaCreateRequest extends DataSourceBaseRequest { 9 | 10 | /** 11 | * Data name 12 | */ 13 | @JsonAlias({"TABLE_SCHEM"}) 14 | private String name; 15 | 16 | 17 | private String comment; 18 | 19 | 20 | private String owner; 21 | } 22 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/SchemaQueryRequest.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.web.api.controller.rdb.request; 3 | 4 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 5 | 6 | import lombok.Data; 7 | 8 | /** 9 | * @author jipengfei 10 | * @version : SchemaQueryRequest.java 11 | */ 12 | @Data 13 | public class SchemaQueryRequest extends DataSourceBaseRequest { 14 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/TableCreateDdlQueryRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import jakarta.validation.constraints.NotNull; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @author moji 9 | * @version TableCreateDdlQueryRequest.java, v 0.1 September 16, 2022 14:23 moji Exp $ 10 | * @date 2022/09/16 11 | */ 12 | @Data 13 | public class TableCreateDdlQueryRequest { 14 | 15 | /** 16 | * DB type 17 | * @see ai.chat2db.server.domain.support.enums.DbTypeEnum 18 | */ 19 | @NotNull 20 | private String dbType; 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/TableMilvusQueryRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | 4 | import lombok.Data; 5 | 6 | @Data 7 | public class TableMilvusQueryRequest extends TableBriefQueryRequest { 8 | 9 | private String apikey; 10 | } 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/TableUpdateDdlQueryRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import jakarta.validation.constraints.NotNull; 4 | 5 | import lombok.Data; 6 | 7 | /** 8 | * @author moji 9 | * @version TableUpdateDdlQueryRequest.java, v 0.1 September 16, 2022 14:23 moji Exp $ 10 | * @date 2022/09/16 11 | */ 12 | @Data 13 | public class TableUpdateDdlQueryRequest { 14 | 15 | /** 16 | * DB type 17 | * @see ai.chat2db.server.domain.support.enums.DbTypeEnum 18 | */ 19 | @NotNull 20 | private String dbType; 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/TypeQueryRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.request; 2 | 3 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequestInfo; 4 | import jakarta.validation.constraints.NotNull; 5 | import lombok.Data; 6 | 7 | @Data 8 | public class TypeQueryRequest implements DataSourceBaseRequestInfo { 9 | 10 | @NotNull 11 | private Long dataSourceId; 12 | /** 13 | * DB name 14 | */ 15 | private String databaseName; 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/UpdateDatabaseRequest.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.web.api.controller.rdb.request; 3 | 4 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 5 | 6 | import lombok.Data; 7 | 8 | /** 9 | * @author jipengfei 10 | * @version : UpdateDatasourceRequest.java 11 | */ 12 | @Data 13 | public class UpdateDatabaseRequest extends DataSourceBaseRequest { 14 | 15 | private String newDatabaseName; 16 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/UpdateSchemaRequest.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.web.api.controller.rdb.request; 3 | 4 | import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest; 5 | 6 | import lombok.Data; 7 | 8 | /** 9 | * @author jipengfei 10 | * @version : UpdateSchemaRequest.java 11 | */ 12 | @Data 13 | public class UpdateSchemaRequest extends DataSourceBaseRequest { 14 | 15 | private String newSchemaName; 16 | 17 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/MetaSchemaVO.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.vo; 2 | 3 | import ai.chat2db.spi.model.Database; 4 | import ai.chat2db.spi.model.Schema; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | @Data 9 | public class MetaSchemaVO { 10 | /** 11 | * database list 12 | */ 13 | private List databases; 14 | 15 | /** 16 | * schema list 17 | */ 18 | private List schemas; 19 | } 20 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/SchemaVO.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.server.web.api.controller.rdb.vo; 3 | 4 | import lombok.Data; 5 | 6 | /** 7 | * @author jipengfei 8 | * @version : SchemaVO.java 9 | */ 10 | @Data 11 | public class SchemaVO { 12 | /** 13 | * Data name 14 | */ 15 | private String name; 16 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/SqlVO.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.rdb.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * sql object 10 | * 11 | * @author Jiaju Zhuang 12 | */ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class SqlVO { 18 | 19 | /** 20 | * sql 21 | */ 22 | private String sql; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ViewVO.java: -------------------------------------------------------------------------------- 1 | //package ai.chat2db.server.web.api.controller.rdb.vo; 2 | // 3 | //public class ViewVO extends TableVO{ 4 | // 5 | // /** 6 | // * view script 7 | // */ 8 | // private String script; 9 | //} 10 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/sql/request/SqlFormatRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.sql.request; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | @Data 9 | @SuperBuilder 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class SqlFormatRequest { 13 | 14 | private String sql; 15 | 16 | private String dbType; 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/system/vo/SystemVO.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.controller.system.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | /** 9 | * system 10 | * 11 | * @author Jiaju Zhuang 12 | */ 13 | @Data 14 | @SuperBuilder 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class SystemVO { 18 | /** 19 | * The unique ID of the system 20 | */ 21 | private String systemUuid; 22 | } 23 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/http/model/EsTableSchema.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.http.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | @Data 9 | @SuperBuilder 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class EsTableSchema { 13 | 14 | private String dataSourceId; 15 | 16 | private String databaseName; 17 | 18 | private String apiKey; 19 | 20 | private String schemaName; 21 | 22 | private String tableName; 23 | 24 | private String tableSchemaContent; 25 | } 26 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/http/request/KnowledgeRequest.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.http.request; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.List; 10 | 11 | @Data 12 | @SuperBuilder 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class KnowledgeRequest { 16 | 17 | private List> contentVector; 18 | 19 | private List sentenceList; 20 | } 21 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/http/response/EsTableSchemaResponse.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.http.response; 2 | 3 | import ai.chat2db.server.web.api.http.model.EsTableSchema; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.experimental.SuperBuilder; 8 | 9 | import java.util.List; 10 | 11 | @Data 12 | @SuperBuilder 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class EsTableSchemaResponse { 16 | 17 | private List tableSchemas; 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/http/response/InviteQrCodeResponse.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.http.response; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class InviteQrCodeResponse { 7 | 8 | private String wechatQrCodeUrl; 9 | 10 | private String tip; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/http/response/KnowledgeResponse.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.http.response; 2 | 3 | import ai.chat2db.server.web.api.http.model.Knowledge; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.experimental.SuperBuilder; 8 | 9 | import java.util.List; 10 | 11 | @Data 12 | @SuperBuilder 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class KnowledgeResponse { 16 | 17 | private List knowledgeList; 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/http/response/TableSchemaResponse.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.http.response; 2 | 3 | import ai.chat2db.server.web.api.http.model.TableSchema; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.experimental.SuperBuilder; 8 | 9 | import java.util.List; 10 | 11 | @Data 12 | @SuperBuilder 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class TableSchemaResponse { 16 | 17 | private List tableSchemas; 18 | } 19 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/ws/WsConfig.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.ws; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.socket.server.standard.ServerEndpointExporter; 6 | 7 | @Configuration 8 | public class WsConfig { 9 | 10 | @Bean 11 | public ServerEndpointExporter serverEndpointExporter() { 12 | return new ServerEndpointExporter(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/ws/WsResult.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.server.web.api.ws; 2 | 3 | 4 | import ai.chat2db.server.tools.base.wrapper.Result; 5 | import lombok.Data; 6 | 7 | @Data 8 | public class WsResult { 9 | /** 10 | * message id 11 | */ 12 | private String uuid; 13 | 14 | /** 15 | * message content 16 | */ 17 | private Result message; 18 | 19 | /** 20 | * message type 21 | */ 22 | private String actionType; 23 | } 24 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/resources/template/sub_template_diy.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/resources/template/sub_template_diy.docx -------------------------------------------------------------------------------- /chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/resources/template/template_diy.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/resources/template/template_diy.docx -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/ColumnBuilder.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi; 2 | 3 | import ai.chat2db.spi.model.TableColumn; 4 | 5 | public interface ColumnBuilder { 6 | 7 | /** 8 | * Generate column sql 9 | * @param column 10 | * @return 11 | */ 12 | String buildCreateColumnSql(TableColumn column); 13 | 14 | 15 | /** 16 | * Build modify column sql 17 | * @param tableColumn 18 | * @return 19 | */ 20 | String buildModifyColumn(TableColumn tableColumn); 21 | } 22 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/Plugin.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.spi; 3 | 4 | import ai.chat2db.spi.config.DBConfig; 5 | 6 | /** 7 | * @author jipengfei 8 | * @version : Plugin.java 9 | */ 10 | public interface Plugin { 11 | 12 | /** 13 | * Get DB configuration information. 14 | * 15 | * @return 16 | */ 17 | DBConfig getDBConfig(); 18 | 19 | /** 20 | * Query db metadata information. 21 | * 22 | * @return 23 | */ 24 | MetaData getMetaData(); 25 | 26 | /** 27 | * 28 | * @return 29 | */ 30 | DBManage getDBManage(); 31 | 32 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/ValueHandler.java: -------------------------------------------------------------------------------- 1 | //package ai.chat2db.spi; 2 | // 3 | //import java.sql.ResultSet; 4 | //import java.sql.SQLException; 5 | // 6 | //public interface ValueHandler { 7 | // 8 | // /** 9 | // * Process column values in the result set 10 | // * @param rs 11 | // * @param index 12 | // * @param limitSize 13 | // * @return 14 | // * @throws SQLException 15 | // */ 16 | // String getString(ResultSet rs, int index, boolean limitSize)throws SQLException; 17 | //} 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/enums/DmlType.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.enums; 2 | 3 | public enum DmlType { 4 | INSERT, UPDATE, DELETE, SELECT 5 | } 6 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/enums/EditStatus.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.enums; 2 | 3 | public enum EditStatus { 4 | 5 | DELETE, 6 | 7 | ADD, 8 | 9 | MODIFY; 10 | } 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/AsyncCall.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import java.util.Map; 4 | 5 | public interface AsyncCall { 6 | 7 | void update(Map map); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/Charset.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class Charset implements Serializable { 11 | private static final long serialVersionUID = 1L; 12 | 13 | private String charsetName; 14 | 15 | private String defaultCollationName; 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/Collation.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class Collation implements Serializable { 11 | private static final long serialVersionUID = 1L; 12 | 13 | private String collationName; 14 | } 15 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/CreateTableSql.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.spi.model; 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.experimental.SuperBuilder; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @author jipengfei 13 | * @version : CreateTableSql.java 14 | */ 15 | @Data 16 | @SuperBuilder 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class CreateTableSql implements Serializable { 20 | private static final long serialVersionUID = 1L; 21 | 22 | public String tableName; 23 | 24 | public String sql; 25 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/DefaultValue.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class DefaultValue implements Serializable { 11 | private static final long serialVersionUID = 1L; 12 | 13 | private String defaultValue; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/IndexType.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class IndexType implements Serializable { 11 | private static final long serialVersionUID = 1L; 12 | 13 | /** 14 | * 15 | */ 16 | private String typeName; 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/OrderBy.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class OrderBy implements Serializable { 9 | private static final long serialVersionUID = 1L; 10 | 11 | /** 12 | * sort field 13 | */ 14 | private String columnName; 15 | 16 | /** 17 | * sort by 18 | */ 19 | private boolean asc; 20 | } 21 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/QueryResult.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | @Data 10 | public class QueryResult implements Serializable { 11 | 12 | private String tableName; 13 | private List
headerList; 14 | private List operations; 15 | private Map extra; 16 | } 17 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/ResultOperation.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.List; 7 | 8 | @Data 9 | public class ResultOperation implements Serializable { 10 | private static final long serialVersionUID = 1L; 11 | 12 | private String type; 13 | 14 | private List dataList; 15 | 16 | private List oldDataList; 17 | } 18 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/SSLInfo.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.spi.model; 3 | 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * @author jipengfei 10 | * @version : SSLInfo.java 11 | */ 12 | @Data 13 | public class SSLInfo implements Serializable { 14 | private static final long serialVersionUID = 1L; 15 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/ShowDatabaseResult.java: -------------------------------------------------------------------------------- 1 | 2 | package ai.chat2db.spi.model; 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.experimental.SuperBuilder; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @author jipengfei 13 | * @version : ShowDatabaseResult.java 14 | */ 15 | @Data 16 | @SuperBuilder 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class ShowDatabaseResult implements Serializable { 20 | private static final long serialVersionUID = 1L; 21 | String database; 22 | } -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/Sql.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * sql object 12 | * 13 | * @author Jiaju Zhuang 14 | */ 15 | @Data 16 | @SuperBuilder 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class Sql implements Serializable { 20 | private static final long serialVersionUID = 1L; 21 | 22 | /** 23 | * sql 24 | */ 25 | private String sql; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/TableMeta.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.model; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.util.List; 8 | 9 | @Data 10 | @Builder 11 | public class TableMeta implements Serializable { 12 | private static final long serialVersionUID = 1L; 13 | 14 | private List columnTypes; 15 | 16 | 17 | private List charsets; 18 | 19 | 20 | private List collations; 21 | 22 | 23 | private List indexTypes; 24 | 25 | private List defaultValues; 26 | 27 | private List engineTypes; 28 | } 29 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/sql/MongExtendedJsonObjectIdConverter.java: -------------------------------------------------------------------------------- 1 | //package ai.chat2db.spi.sql; 2 | // 3 | //import org.bson.json.Converter; 4 | //import org.bson.json.StrictJsonWriter; 5 | //import org.bson.types.ObjectId; 6 | // 7 | //public class MongExtendedJsonObjectIdConverter implements Converter { 8 | // @Override 9 | // public void convert(final ObjectId value, final StrictJsonWriter writer) { 10 | // writer.writeStartObject(); 11 | // writer.writeString("", value.toHexString()); 12 | // writer.writeEndObject(); 13 | // } 14 | //} 15 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/sql/ResultSetConsumer.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.sql; 2 | 3 | import java.sql.ResultSet; 4 | import java.sql.SQLException; 5 | 6 | @FunctionalInterface 7 | public interface ResultSetConsumer { 8 | 9 | void accept(ResultSet resultSet) throws SQLException; 10 | } 11 | -------------------------------------------------------------------------------- /chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/sql/ResultSetFunction.java: -------------------------------------------------------------------------------- 1 | package ai.chat2db.spi.sql; 2 | 3 | import java.sql.ResultSet; 4 | import java.sql.SQLException; 5 | 6 | public interface ResultSetFunction { 7 | 8 | R apply(ResultSet t) throws SQLException; 9 | } 10 | -------------------------------------------------------------------------------- /chat2db-server/identifier.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/chat2db-server/identifier.sqlite -------------------------------------------------------------------------------- /chat2db-server/lombok.config: -------------------------------------------------------------------------------- 1 | # Convert toString and call the previous layer 2 | lombok.toString.callSuper = CALL 3 | # Globally configure the callSuper attribute of equalsAndHashCode to true 4 | lombok.equalsAndHashCode.callSuper=call -------------------------------------------------------------------------------- /docker/docker-build.sh: -------------------------------------------------------------------------------- 1 | # First package it out chat2db-server/chat2db-server-start/target/chat2db-server-start.jar 2 | # Packing 3 | docker build -t chat2db/chat2db:test -f docker/Dockerfile . -------------------------------------------------------------------------------- /docker/docker-compose-start.sh: -------------------------------------------------------------------------------- 1 | docker-compose -f docker-compose.yml up -d -------------------------------------------------------------------------------- /docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | chat2db: 4 | image: chat2db/chat2db:latest 5 | container_name: chat2db-latest 6 | volumes: 7 | - ~/.chat2db-docker:/root/.chat2db 8 | ports: 9 | - "10824:10824" -------------------------------------------------------------------------------- /docker/docker-start.sh: -------------------------------------------------------------------------------- 1 | docker run --name=chat2db -p 10824:10824 -v ~/.chat2db-docker:/root/.chat2db chat2db/chat2db:latest -------------------------------------------------------------------------------- /docker/test/redis/data/dump.rdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/docker/test/redis/data/dump.rdb -------------------------------------------------------------------------------- /docker/test/start.sh: -------------------------------------------------------------------------------- 1 | docker-compose -f docker-compose.yml up -d -------------------------------------------------------------------------------- /docker/test/stop.sh: -------------------------------------------------------------------------------- 1 | docker-compose -f docker-compose.yml down -------------------------------------------------------------------------------- /document/git/git.sh: -------------------------------------------------------------------------------- 1 | # https://www.zhangbj.com/p/1437.html 2 | # -r represents recursion 3 | # 4 | git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch chat2db-client/static' --prune-empty --tag-name-filter cat -- --all 5 | git push origin developing --force 6 | git push origin delete_git --force 7 | -------------------------------------------------------------------------------- /document/image/img1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/image/img1.webp -------------------------------------------------------------------------------- /document/image/img2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/image/img2.webp -------------------------------------------------------------------------------- /document/image/img3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/image/img3.webp -------------------------------------------------------------------------------- /document/image/img4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/image/img4.webp -------------------------------------------------------------------------------- /document/image/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/image/logo.ico -------------------------------------------------------------------------------- /document/qrcode/hexi-weixin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/qrcode/hexi-weixin.png -------------------------------------------------------------------------------- /document/qrcode/qqqun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/qrcode/qqqun.png -------------------------------------------------------------------------------- /document/qrcode/weixinqun1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/qrcode/weixinqun1.png -------------------------------------------------------------------------------- /document/qrcode/weixinqun2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/qrcode/weixinqun2.png -------------------------------------------------------------------------------- /document/qrcode/weixinqun3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/document/qrcode/weixinqun3.png -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/icon.png -------------------------------------------------------------------------------- /identifier.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodePhiliaX/Chat2DB/708c49a18d7d511117129e92307995db14922d5e/identifier.sqlite --------------------------------------------------------------------------------