Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dlink
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhaowei
dlink
Commits
d4d49b58
Unverified
Commit
d4d49b58
authored
Sep 04, 2022
by
aiwenmo
Committed by
GitHub
Sep 04, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Feature-989][metadata] Add StarRocks datasource (#990)
Co-authored-by:
wenmo
<
32723967+wenmo@users.noreply.github.com
>
parent
6985b446
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
533 additions
and
37 deletions
+533
-37
package.xml
dlink-assembly/src/main/assembly/package.xml
+8
-0
pom.xml
dlink-core/pom.xml
+5
-3
Dialect.java
dlink-core/src/main/java/com/dlink/config/Dialect.java
+3
-2
DorisDriver.java
.../src/main/java/com/dlink/metadata/driver/DorisDriver.java
+0
-1
pom.xml
dlink-metadata/dlink-metadata-starrocks/pom.xml
+50
-0
StarRocksConstant.java
...n/java/com/dlink/metadata/constant/StarRocksConstant.java
+40
-0
StarRocksTypeConvert.java
...java/com/dlink/metadata/convert/StarRocksTypeConvert.java
+129
-0
StarRocksDriver.java
.../main/java/com/dlink/metadata/driver/StarRocksDriver.java
+109
-0
StarRocksQuery.java
...rc/main/java/com/dlink/metadata/query/StarRocksQuery.java
+124
-0
com.dlink.metadata.driver.Driver
...ources/META-INF/services/com.dlink.metadata.driver.Driver
+1
-0
pom.xml
dlink-metadata/pom.xml
+1
-0
starrocks.jpg
dlink-web/public/database/starrocks.jpg
+0
-0
SimpleTaskForm.tsx
...omponents/Studio/StudioTree/components/SimpleTaskForm.tsx
+1
-0
conf.ts
dlink-web/src/components/Studio/conf.ts
+5
-1
icon.tsx
dlink-web/src/components/Studio/icon.tsx
+37
-16
DB.ts
dlink-web/src/pages/DataBase/DB.ts
+3
-0
index.tsx
dlink-web/src/pages/DataBase/index.tsx
+12
-14
pom.xml
pom.xml
+5
-0
No files found.
dlink-assembly/src/main/assembly/package.xml
View file @
d4d49b58
...
...
@@ -216,6 +216,14 @@
<include>
dlink-metadata-sqlserver-${project.version}.jar
</include>
</includes>
</fileSet>
<fileSet>
<directory>
${project.parent.basedir}/dlink-metadata/dlink-metadata-starrocks/target
</directory>
<outputDirectory>
lib
</outputDirectory>
<includes>
<include>
dlink-metadata-starrocks-${project.version}.jar
</include>
</includes>
</fileSet>
<fileSet>
<directory>
${project.parent.basedir}/dlink-alert/dlink-alert-dingtalk/target
</directory>
...
...
dlink-core/pom.xml
View file @
d4d49b58
...
...
@@ -162,17 +162,19 @@
<artifactId>
dlink-metadata-phoenix
</artifactId>
<scope>
${scope.runtime}
</scope>
</dependency>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-metadata-starrocks
</artifactId>
<scope>
${scope.runtime}
</scope>
</dependency>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-connector-phoenix-1.13
</artifactId>
<scope>
${scope.runtime}
</scope>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
</dependency>
</dependencies>
</project>
dlink-core/src/main/java/com/dlink/config/Dialect.java
View file @
d4d49b58
...
...
@@ -30,8 +30,8 @@ import com.dlink.assertion.Asserts;
public
enum
Dialect
{
FLINKSQL
(
"FlinkSql"
),
FLINKJAR
(
"FlinkJar"
),
FLINKSQLENV
(
"FlinkSqlEnv"
),
SQL
(
"Sql"
),
JAVA
(
"Java"
),
MYSQL
(
"Mysql"
),
ORACLE
(
"Oracle"
),
SQLSERVER
(
"SqlServer"
),
POSTGRESQL
(
"Post
G
reSql"
),
CLICKHOUSE
(
"ClickHouse"
),
DORIS
(
"Doris"
),
PHOENIX
(
"Phoenix"
),
HIVE
(
"Hive"
);
MYSQL
(
"Mysql"
),
ORACLE
(
"Oracle"
),
SQLSERVER
(
"SqlServer"
),
POSTGRESQL
(
"Post
g
reSql"
),
CLICKHOUSE
(
"ClickHouse"
),
DORIS
(
"Doris"
),
PHOENIX
(
"Phoenix"
),
HIVE
(
"Hive"
)
,
STARROCKS
(
"StarRocks"
)
;
private
String
value
;
...
...
@@ -76,6 +76,7 @@ public enum Dialect {
case
DORIS:
case
PHOENIX:
case
HIVE:
case
STARROCKS:
return
true
;
default
:
return
false
;
...
...
dlink-metadata/dlink-metadata-doris/src/main/java/com/dlink/metadata/driver/DorisDriver.java
View file @
d4d49b58
...
...
@@ -103,7 +103,6 @@ public class DorisDriver extends AbstractJdbcDriver {
map
.
put
(
"INT"
,
"INT"
);
map
.
put
(
"VARCHAR"
,
"STRING"
);
map
.
put
(
"TEXY"
,
"STRING"
);
map
.
put
(
"INT"
,
"INT"
);
map
.
put
(
"DATETIME"
,
"TIMESTAMP"
);
return
map
;
}
...
...
dlink-metadata/dlink-metadata-starrocks/pom.xml
0 → 100644
View file @
d4d49b58
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to You under the Apache License, Version 2.0
~ (the "License"); you may not use this file except in compliance with
~ the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
dlink-metadata
</artifactId>
<groupId>
com.dlink
</groupId>
<version>
0.6.7-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
dlink-metadata-starrocks
</artifactId>
<properties>
<maven.compiler.source>
8
</maven.compiler.source>
<maven.compiler.target>
8
</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-metadata-base
</artifactId>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<!-- <scope>test</scope>-->
</dependency>
</dependencies>
</project>
\ No newline at end of file
dlink-metadata/dlink-metadata-starrocks/src/main/java/com/dlink/metadata/constant/StarRocksConstant.java
0 → 100644
View file @
d4d49b58
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
com
.
dlink
.
metadata
.
constant
;
/**
* StarRocksConstant
**/
public
interface
StarRocksConstant
{
/**
* 查询所有database
*/
String
QUERY_ALL_DATABASE
=
" show databases "
;
/**
* 查询所有schema下的所有表
*/
String
QUERY_TABLE_BY_SCHEMA
=
" select TABLE_NAME AS `NAME`,TABLE_SCHEMA AS `SCHEMA`,TABLE_COMMENT AS COMMENT, '' as TYPE, '' as CATALOG, "
+
"'' as ENGINE , '' as OPTIONS , 0 as `ROWS`, null as CREATE_TIME, null as UPDATE_TIME from information_schema.tables where TABLE_SCHEMA = '%s' "
;
/**
* 查询指定schema.table下的所有列信息
*/
String
QUERY_COLUMNS_BY_TABLE_AND_SCHEMA
=
" show full columns from `%s`.`%s` "
;
}
dlink-metadata/dlink-metadata-starrocks/src/main/java/com/dlink/metadata/convert/StarRocksTypeConvert.java
0 → 100644
View file @
d4d49b58
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
com
.
dlink
.
metadata
.
convert
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.model.Column
;
import
com.dlink.model.ColumnType
;
public
class
StarRocksTypeConvert
implements
ITypeConvert
{
@Override
public
ColumnType
convert
(
Column
column
)
{
ColumnType
columnType
=
ColumnType
.
STRING
;
if
(
Asserts
.
isNull
(
column
))
{
return
columnType
;
}
String
t
=
column
.
getType
().
toLowerCase
();
boolean
isNullable
=
!
column
.
isKeyFlag
()
&&
column
.
isNullable
();
if
(
t
.
contains
(
"char"
))
{
columnType
=
ColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"boolean"
))
{
if
(
isNullable
)
{
columnType
=
ColumnType
.
JAVA_LANG_BOOLEAN
;
}
else
{
columnType
=
ColumnType
.
BOOLEAN
;
}
}
else
if
(
t
.
contains
(
"tinyint"
))
{
if
(
isNullable
)
{
columnType
=
ColumnType
.
JAVA_LANG_BYTE
;
}
else
{
columnType
=
ColumnType
.
BYTE
;
}
}
else
if
(
t
.
contains
(
"smallint"
))
{
if
(
isNullable
)
{
columnType
=
ColumnType
.
JAVA_LANG_SHORT
;
}
else
{
columnType
=
ColumnType
.
SHORT
;
}
}
else
if
(
t
.
contains
(
"bigint"
))
{
if
(
isNullable
)
{
columnType
=
ColumnType
.
JAVA_LANG_LONG
;
}
else
{
columnType
=
ColumnType
.
LONG
;
}
}
else
if
(
t
.
contains
(
"largeint"
))
{
columnType
=
ColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"int"
))
{
if
(
isNullable
)
{
columnType
=
ColumnType
.
INTEGER
;
}
else
{
columnType
=
ColumnType
.
INT
;
}
}
else
if
(
t
.
contains
(
"float"
))
{
if
(
isNullable
)
{
columnType
=
ColumnType
.
JAVA_LANG_FLOAT
;
}
else
{
columnType
=
ColumnType
.
FLOAT
;
}
}
else
if
(
t
.
contains
(
"double"
))
{
if
(
isNullable
)
{
columnType
=
ColumnType
.
JAVA_LANG_DOUBLE
;
}
else
{
columnType
=
ColumnType
.
DOUBLE
;
}
}
else
if
(
t
.
contains
(
"date"
))
{
columnType
=
ColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"datetime"
))
{
columnType
=
ColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"decimal"
))
{
columnType
=
ColumnType
.
DECIMAL
;
}
else
if
(
t
.
contains
(
"time"
))
{
if
(
isNullable
)
{
columnType
=
ColumnType
.
JAVA_LANG_DOUBLE
;
}
else
{
columnType
=
ColumnType
.
DOUBLE
;
}
}
return
columnType
;
}
@Override
public
String
convertToDB
(
ColumnType
columnType
)
{
switch
(
columnType
)
{
case
STRING:
return
"varchar"
;
case
BOOLEAN:
case
JAVA_LANG_BOOLEAN:
return
"boolean"
;
case
BYTE:
case
JAVA_LANG_BYTE:
return
"tinyint"
;
case
SHORT:
case
JAVA_LANG_SHORT:
return
"smallint"
;
case
LONG:
case
JAVA_LANG_LONG:
return
"bigint"
;
case
FLOAT:
case
JAVA_LANG_FLOAT:
return
"float"
;
case
DOUBLE:
case
JAVA_LANG_DOUBLE:
return
"double"
;
case
DECIMAL:
return
"decimal"
;
case
INT:
case
INTEGER:
return
"int"
;
default
:
return
"varchar"
;
}
}
}
dlink-metadata/dlink-metadata-starrocks/src/main/java/com/dlink/metadata/driver/StarRocksDriver.java
0 → 100644
View file @
d4d49b58
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.metadata.convert.ITypeConvert
;
import
com.dlink.metadata.convert.StarRocksTypeConvert
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.metadata.query.StarRocksQuery
;
import
com.dlink.metadata.result.JdbcSelectResult
;
import
com.dlink.utils.LogUtil
;
import
com.dlink.utils.SqlUtil
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
StarRocksDriver
extends
AbstractJdbcDriver
{
@Override
public
IDBQuery
getDBQuery
()
{
return
new
StarRocksQuery
();
}
@Override
public
ITypeConvert
getTypeConvert
()
{
return
new
StarRocksTypeConvert
();
}
@Override
String
getDriverClass
()
{
return
"com.mysql.cj.jdbc.Driver"
;
}
@Override
public
String
getType
()
{
return
"StarRocks"
;
}
@Override
public
String
getName
()
{
return
"StarRocks"
;
}
@Override
public
JdbcSelectResult
executeSql
(
String
sql
,
Integer
limit
)
{
String
[]
statements
=
SqlUtil
.
getStatements
(
SqlUtil
.
removeNote
(
sql
));
List
<
Object
>
resList
=
new
ArrayList
<>();
JdbcSelectResult
result
=
JdbcSelectResult
.
buildResult
();
for
(
String
item
:
statements
)
{
String
type
=
item
.
toUpperCase
();
if
(
type
.
startsWith
(
"SELECT"
)
||
type
.
startsWith
(
"SHOW"
)
||
type
.
startsWith
(
"DESC"
))
{
result
=
query
(
item
,
limit
);
}
else
if
(
type
.
startsWith
(
"INSERT"
)
||
type
.
startsWith
(
"UPDATE"
)
||
type
.
startsWith
(
"DELETE"
))
{
try
{
resList
.
add
(
executeUpdate
(
item
));
result
.
setStatusList
(
resList
);
}
catch
(
Exception
e
)
{
resList
.
add
(
0
);
result
.
setStatusList
(
resList
);
result
.
error
(
LogUtil
.
getError
(
e
));
return
result
;
}
}
else
{
try
{
execute
(
item
);
resList
.
add
(
1
);
result
.
setStatusList
(
resList
);
}
catch
(
Exception
e
)
{
resList
.
add
(
0
);
result
.
setStatusList
(
resList
);
result
.
error
(
LogUtil
.
getError
(
e
));
return
result
;
}
}
}
result
.
success
();
return
result
;
}
@Override
public
Map
<
String
,
String
>
getFlinkColumnTypeConversion
()
{
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"BOOLEAN"
,
"BOOLEAN"
);
map
.
put
(
"TINYINT"
,
"TINYINT"
);
map
.
put
(
"SMALLINT"
,
"SMALLINT"
);
map
.
put
(
"INT"
,
"INT"
);
map
.
put
(
"VARCHAR"
,
"STRING"
);
map
.
put
(
"TEXY"
,
"STRING"
);
map
.
put
(
"DATETIME"
,
"TIMESTAMP"
);
return
map
;
}
}
dlink-metadata/dlink-metadata-starrocks/src/main/java/com/dlink/metadata/query/StarRocksQuery.java
0 → 100644
View file @
d4d49b58
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
com
.
dlink
.
metadata
.
query
;
import
com.dlink.metadata.constant.StarRocksConstant
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
/**
* StarRocksQuery
**/
public
class
StarRocksQuery
extends
AbstractDBQuery
{
@Override
public
String
schemaAllSql
()
{
return
StarRocksConstant
.
QUERY_ALL_DATABASE
;
}
@Override
public
String
tablesSql
(
String
schemaName
)
{
return
String
.
format
(
StarRocksConstant
.
QUERY_TABLE_BY_SCHEMA
,
schemaName
);
}
@Override
public
String
columnsSql
(
String
schemaName
,
String
tableName
)
{
return
String
.
format
(
StarRocksConstant
.
QUERY_COLUMNS_BY_TABLE_AND_SCHEMA
,
schemaName
,
tableName
);
}
@Override
public
String
schemaName
()
{
return
"Database"
;
}
@Override
public
String
tableName
()
{
return
"NAME"
;
}
@Override
public
String
tableComment
()
{
return
"COMMENT"
;
}
@Override
public
String
columnName
()
{
return
"Field"
;
}
@Override
public
String
columnType
()
{
return
"Type"
;
}
@Override
public
String
columnComment
()
{
return
"Comment"
;
}
@Override
public
String
columnKey
()
{
return
"Key"
;
}
public
boolean
isKeyIdentity
(
ResultSet
results
)
throws
SQLException
{
return
"auto_increment"
.
equals
(
results
.
getString
(
"Extra"
));
}
@Override
public
String
isNullable
()
{
return
"Null"
;
}
@Override
public
String
characterSet
()
{
return
"Default"
;
}
@Override
public
String
collation
()
{
return
"Default"
;
}
@Override
public
String
columnPosition
()
{
return
"Default"
;
}
@Override
public
String
precision
()
{
return
"Default"
;
}
@Override
public
String
scale
()
{
return
"Default"
;
}
@Override
public
String
autoIncrement
()
{
return
"Default"
;
}
@Override
public
String
isPK
()
{
return
"YES"
;
}
}
dlink-metadata/dlink-metadata-starrocks/src/main/resources/META-INF/services/com.dlink.metadata.driver.Driver
0 → 100644
View file @
d4d49b58
com.dlink.metadata.driver.StarRocksDriver
\ No newline at end of file
dlink-metadata/pom.xml
View file @
d4d49b58
...
...
@@ -38,6 +38,7 @@
<module>
dlink-metadata-doris
</module>
<module>
dlink-metadata-phoenix
</module>
<module>
dlink-metadata-hive
</module>
<module>
dlink-metadata-starrocks
</module>
</modules>
...
...
dlink-web/public/database/starrocks.jpg
0 → 100644
View file @
d4d49b58
69.7 KB
dlink-web/src/components/Studio/StudioTree/components/SimpleTaskForm.tsx
View file @
d4d49b58
...
...
@@ -82,6 +82,7 @@ const SimpleTaskForm: React.FC<UpdateFormProps> = (props) => {
<
Option
value=
{
DIALECT
.
DORIS
}
>
{
DIALECT
.
DORIS
}
</
Option
>
<
Option
value=
{
DIALECT
.
HIVE
}
>
{
DIALECT
.
HIVE
}
</
Option
>
<
Option
value=
{
DIALECT
.
PHOENIX
}
>
{
DIALECT
.
PHOENIX
}
</
Option
>
<
Option
value=
{
DIALECT
.
STARROCKS
}
>
{
DIALECT
.
STARROCKS
}
</
Option
>
<
Option
value=
{
DIALECT
.
JAVA
}
>
{
DIALECT
.
JAVA
}
</
Option
>
<
Option
value=
{
DIALECT
.
SQL
}
>
{
DIALECT
.
SQL
}
</
Option
>
</
Select
>
...
...
dlink-web/src/components/Studio/conf.ts
View file @
d4d49b58
...
...
@@ -36,11 +36,12 @@ export const DIALECT = {
MYSQL
:
'Mysql'
,
ORACLE
:
'Oracle'
,
SQLSERVER
:
'SqlServer'
,
POSTGRESQL
:
'Post
G
reSql'
,
POSTGRESQL
:
'Post
g
reSql'
,
CLICKHOUSE
:
'ClickHouse'
,
DORIS
:
'Doris'
,
HIVE
:
'Hive'
,
PHOENIX
:
'Phoenix'
,
STARROCKS
:
'StarRocks'
,
JAVA
:
'Java'
,
};
...
...
@@ -61,6 +62,7 @@ export const isSql = (dialect: string) => {
case
DIALECT
.
PHOENIX
:
case
DIALECT
.
DORIS
:
case
DIALECT
.
HIVE
:
case
DIALECT
.
STARROCKS
:
return
true
;
default
:
return
false
;
...
...
@@ -82,6 +84,7 @@ export const isExecuteSql = (dialect: string) => {
case
DIALECT
.
PHOENIX
:
case
DIALECT
.
FLINKSQL
:
case
DIALECT
.
HIVE
:
case
DIALECT
.
STARROCKS
:
return
true
;
default
:
return
false
;
...
...
@@ -104,6 +107,7 @@ export const isTask = (dialect: string) => {
case
DIALECT
.
FLINKSQL
:
case
DIALECT
.
FLINKJAR
:
case
DIALECT
.
HIVE
:
case
DIALECT
.
STARROCKS
:
return
true
;
default
:
return
false
;
...
...
dlink-web/src/components/Studio/icon.tsx
View file @
d4d49b58
...
...
@@ -23,32 +23,34 @@ import {DIALECT} from "@/components/Studio/conf";
const
svgSize
=
'20px'
;
export
const
getIcon
=
(
type
:
string
)
=>
{
switch
(
type
){
export
const
getIcon
=
(
type
:
string
)
=>
{
switch
(
type
)
{
case
DIALECT
.
SQL
:
return
(<
Icon
component=
{
SqlSvg
}
/>);
return
(<
Icon
component=
{
SqlSvg
}
/>);
case
DIALECT
.
FLINKJAR
:
return
(<
Icon
component=
{
FlinkJarSvg
}
/>);
return
(<
Icon
component=
{
FlinkJarSvg
}
/>);
case
DIALECT
.
MYSQL
:
return
(<
Icon
component=
{
MysqlSvg
}
/>);
return
(<
Icon
component=
{
MysqlSvg
}
/>);
case
DIALECT
.
ORACLE
:
return
(<
Icon
component=
{
OracleSvg
}
/>);
return
(<
Icon
component=
{
OracleSvg
}
/>);
case
DIALECT
.
SQLSERVER
:
return
(<
Icon
component=
{
SqlServerSvg
}
/>);
return
(<
Icon
component=
{
SqlServerSvg
}
/>);
case
DIALECT
.
POSTGRESQL
:
return
(<
Icon
component=
{
PostGreSqlSvg
}
/>);
return
(<
Icon
component=
{
PostGreSqlSvg
}
/>);
case
DIALECT
.
CLICKHOUSE
:
return
(<
Icon
component=
{
ClickHouseSvg
}
/>);
return
(<
Icon
component=
{
ClickHouseSvg
}
/>);
case
DIALECT
.
DORIS
:
return
(<
Icon
component=
{
DorisSvg
}
/>);
return
(<
Icon
component=
{
DorisSvg
}
/>);
case
DIALECT
.
HIVE
:
return
(<
Icon
component=
{
HiveSvg
}
/>);
return
(<
Icon
component=
{
HiveSvg
}
/>);
case
DIALECT
.
PHOENIX
:
return
(<
Icon
component=
{
PhoenixSvg
}
/>);
return
(<
Icon
component=
{
PhoenixSvg
}
/>);
case
DIALECT
.
STARROCKS
:
return
(<
Icon
component=
{
StarRocksSvg
}
/>);
case
DIALECT
.
JAVA
:
return
(<
Icon
component=
{
JavaSvg
}
/>);
return
(<
Icon
component=
{
JavaSvg
}
/>);
default
:
return
(<
Icon
component=
{
FlinkSQLSvg
}
/>);
return
(<
Icon
component=
{
FlinkSQLSvg
}
/>);
}
};
...
...
@@ -287,8 +289,15 @@ export const ClickHouseSvg = () => (
</
svg
>
);
export
const
PhoenixSvg
=
()
=>
(
<
svg
t=
"987654321"
className=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p
-
id=
"9314"
width=
{
svgSize
}
height=
{
svgSize
}
><
path
d=
"M896 1024H128C57.6 1024 0 966.4 0 896V128C0 57.6 57.6 0 128 0h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128z"
fill=
"#FFFFFF"
p
-
id=
"1695"
></
path
><
path
d=
"M726.4 216.533c39.467-129.066 55.467-141.866 55.467-141.866s-107.734 38.4-141.867 147.2C605.867 331.733 663.467 464 675.2 508.8c10.667 44.8 76.8 304-145.067 318.933C369.067 838.4 323.2 670.933 339.2 596.267c4.267-19.2 21.333-90.667 52.267-141.867C422.4 403.2 435.2 324.267 435.2 324.267s25.6 5.333 37.333-14.934c0 0-23.466 0-8.533-11.733 13.867-11.733 8.533-25.6 8.533-25.6s-25.6 17.067-52.266 3.2c-25.6-13.867-84.267-52.267-124.8 8.533 0 0-43.734 7.467-64 35.2 0 0 43.733-17.066 64-5.333 21.333 11.733 54.4 37.333 20.266 118.4C281.6 513.067 190.933 577.067 240 724.267c49.067 147.2 160 205.866 304 205.866S792.533 784 792.533 641.067c0-142.934-105.6-295.467-66.133-424.534zM487.467 541.867c-51.2-43.734-52.267-150.4-52.267-150.4-17.067 120.533-8.533 194.133 72.533 240C588.8 678.4 612.267 736 612.267 736c3.2-32-72.534-150.4-124.8-194.133z m145.066 179.2s32-109.867 0-208c-28.8-87.467-53.333-117.334-52.266-179.2 1.066-61.867 29.866-182.4 45.866-197.334 0 0-100.266 89.6-101.333 185.6-1.067 96 39.467 141.867 64 182.4 24.533 40.534 57.6 110.934 43.733 216.534zM522.667 214.4s-80 118.4-60.8 228.267C464 461.867 476.8 498.133 528 552.533c51.2 54.4 92.8 148.267 96 167.467 0 0-2.133-104.533-40.533-173.867C545.067 476.8 478.933 388.267 502.4 294.4c4.267-23.467 20.267-80 20.267-80z"
fill=
"#EC4C2E"
p
-
id=
"1696"
></
path
></
svg
>
<
svg
t=
"987654321"
className=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p
-
id=
"9314"
width=
{
svgSize
}
height=
{
svgSize
}
>
<
path
d=
"M896 1024H128C57.6 1024 0 966.4 0 896V128C0 57.6 57.6 0 128 0h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128z"
fill=
"#FFFFFF"
p
-
id=
"1695"
></
path
>
<
path
d=
"M726.4 216.533c39.467-129.066 55.467-141.866 55.467-141.866s-107.734 38.4-141.867 147.2C605.867 331.733 663.467 464 675.2 508.8c10.667 44.8 76.8 304-145.067 318.933C369.067 838.4 323.2 670.933 339.2 596.267c4.267-19.2 21.333-90.667 52.267-141.867C422.4 403.2 435.2 324.267 435.2 324.267s25.6 5.333 37.333-14.934c0 0-23.466 0-8.533-11.733 13.867-11.733 8.533-25.6 8.533-25.6s-25.6 17.067-52.266 3.2c-25.6-13.867-84.267-52.267-124.8 8.533 0 0-43.734 7.467-64 35.2 0 0 43.733-17.066 64-5.333 21.333 11.733 54.4 37.333 20.266 118.4C281.6 513.067 190.933 577.067 240 724.267c49.067 147.2 160 205.866 304 205.866S792.533 784 792.533 641.067c0-142.934-105.6-295.467-66.133-424.534zM487.467 541.867c-51.2-43.734-52.267-150.4-52.267-150.4-17.067 120.533-8.533 194.133 72.533 240C588.8 678.4 612.267 736 612.267 736c3.2-32-72.534-150.4-124.8-194.133z m145.066 179.2s32-109.867 0-208c-28.8-87.467-53.333-117.334-52.266-179.2 1.066-61.867 29.866-182.4 45.866-197.334 0 0-100.266 89.6-101.333 185.6-1.067 96 39.467 141.867 64 182.4 24.533 40.534 57.6 110.934 43.733 216.534zM522.667 214.4s-80 118.4-60.8 228.267C464 461.867 476.8 498.133 528 552.533c51.2 54.4 92.8 148.267 96 167.467 0 0-2.133-104.533-40.533-173.867C545.067 476.8 478.933 388.267 502.4 294.4c4.267-23.467 20.267-80 20.267-80z"
fill=
"#EC4C2E"
p
-
id=
"1696"
></
path
>
</
svg
>
);
export
const
DorisSvg
=
()
=>
(
<
svg
t=
"1640789853861"
className=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
...
...
@@ -304,6 +313,18 @@ export const DorisSvg = () => (
fill=
"#5168AC"
p
-
id=
"13681"
></
path
>
</
svg
>
);
export
const
StarRocksSvg
=
()
=>
(
<
svg
xmlns=
"http://www.w3.org/2000/svg"
viewBox=
"0 0 54 60.45"
width=
{
svgSize
}
height=
{
svgSize
}
>
<
path
fill=
"#fabf00"
d=
"M16.17,26.33c-4-3.27-8.36-6.88-10.69-8.81L3.85,16.18c-1.13-.93-2-2.58-.1-3.71C4.58,12,18.78,3.83,24,.8A5.94,5.94,0,0,1,30,.8L40,6.59a1.18,1.18,0,0,1,0,2.05L16.52,22.11A2.57,2.57,0,0,0,16.17,26.33Z"
/>
<
path
fill=
"#337e8d"
d=
"M22,35.88,12.48,50.45a2.37,2.37,0,0,1-3.17.75L3,47.55A6,6,0,0,1,0,42.4V18.08a5.94,5.94,0,0,1,2.39-4.76c-1.7,1.31-1,2.78.1,3.72L21.57,32.75A2.38,2.38,0,0,1,22,35.88Z"
/>
<
path
fill=
"#337e8d"
d=
"M37.83,34.11l10.69,8.81,1.63,1.34c1.13.94,2,2.59.1,3.72-.83.49-15,8.64-20.27,11.67a6,6,0,0,1-5.95,0L14,53.86a1.19,1.19,0,0,1,0-2.06L37.48,38.34A2.58,2.58,0,0,0,37.83,34.11Z"
/>
<
path
fill=
"#337e8d"
d=
"M32,24.57,41.52,10a2.37,2.37,0,0,1,3.17-.75L51,12.9a5.94,5.94,0,0,1,3,5.15V42.37a5.94,5.94,0,0,1-2.39,4.76c1.7-1.31,1-2.78-.1-3.72L32.43,27.69A2.37,2.37,0,0,1,32,24.57Z"
/>
</
svg
>
);
export
const
HiveSvg
=
()
=>
(
<
svg
t=
"1647425762735"
className=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
...
...
dlink-web/src/pages/DataBase/DB.ts
View file @
d4d49b58
...
...
@@ -45,6 +45,9 @@ export function getDBImage(type: string) {
case
'hive'
:
imageUrl
+=
'hive.png'
;
break
;
case
'starrocks'
:
imageUrl
+=
'starrocks.jpg'
;
break
;
default
:
imageUrl
+=
'db.jpg'
;
}
...
...
dlink-web/src/pages/DataBase/index.tsx
View file @
d4d49b58
...
...
@@ -19,19 +19,17 @@
import
React
,
{
useRef
,
useState
}
from
"react"
;
import
{
PageContainer
,
FooterToolbar
}
from
'@ant-design/pro-layout'
;
import
{
PageContainer
}
from
'@ant-design/pro-layout'
;
import
{
DownOutlined
,
HeartOutlined
,
PlusOutlined
,
UserOutlined
,
SettingOutlined
,
CheckCircleOutlined
,
DeleteOutlined
,
EditOutlined
,
EllipsisOutlined
,
CheckCircleOutlined
,
ExclamationCircleOutlined
,
DeleteOutlined
ExclamationCircleOutlined
,
HeartOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
Progress
,
Tag
,
Button
,
Space
,
Badge
,
Typography
,
Image
,
Row
,
Col
,
Card
,
Avatar
,
Modal
}
from
'antd'
;
import
{
Button
,
Card
,
Image
,
Modal
,
Space
,
Tag
,
Typography
}
from
'antd'
;
import
ProList
from
'@ant-design/pro-list'
;
import
{
handleRemove
,
queryData
}
from
"@/components/Common/crud"
;
import
{
getDBImage
}
from
"@/pages/DataBase/DB"
;
...
...
@@ -53,7 +51,7 @@ const cardBodyStyle = {
};
const
DataBaseTableList
:
React
.
FC
<
{}
>
=
(
props
:
any
)
=>
{
const
{
dispatch
}
=
props
;
const
{
dispatch
}
=
props
;
const
[
chooseDBModalVisible
,
handleDBFormModalVisible
]
=
useState
<
boolean
>
(
false
);
const
[
values
,
setValues
]
=
useState
<
any
>
({});
const
actionRef
=
useRef
<
ActionType
>
();
...
...
@@ -95,7 +93,8 @@ const DataBaseTableList: React.FC<{}> = (props: any) => {
return
[
<
Button
type=
"primary"
onClick=
{
()
=>
{
setValues
({});
handleDBFormModalVisible
(
true
);}
}
>
handleDBFormModalVisible
(
true
);
}
}
>
<
PlusOutlined
/>
新建
</
Button
>,
];
...
...
@@ -109,7 +108,6 @@ const DataBaseTableList: React.FC<{}> = (props: any) => {
renderItem=
{
(
row
)
=>
{
return
(
<
Card
style=
{
{
width
:
300
}
}
hoverable=
{
true
}
bodyStyle=
{
cardBodyStyle
}
...
...
@@ -117,14 +115,14 @@ const DataBaseTableList: React.FC<{}> = (props: any) => {
<
div
className=
{
styles
.
cardImage
}
>
<
Image
preview=
{
false
}
style=
{
{
padding
:
'20px'
}
}
style=
{
{
padding
:
'20px
60px
'
}
}
src=
{
getDBImage
(
row
.
type
)
}
fallback=
"data:image/png;base64,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"
/>
</
div
>
}
actions=
{
[
<
HeartOutlined
key=
"setting"
onClick=
{
()
=>
{
<
HeartOutlined
key=
"setting"
onClick=
{
()
=>
{
onCheckHeartBeat
(
row
);
}
}
/>,
<
EditOutlined
key=
"edit"
onClick=
{
()
=>
{
...
...
pom.xml
View file @
d4d49b58
...
...
@@ -336,6 +336,11 @@
<artifactId>
dlink-metadata-phoenix
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-metadata-starrocks
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-gateway
</artifactId>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment