Is your feature request related to a problem? Please describe.
To extend the data connection later, change the connection icon to use static resources.
Also add an icon for the DB below.
And we need to define icon size for each usage.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
@koeun222
oracle, tibero์ ๋ํ ์์ด์ฝ ์ ๋ฌ ๋ถํ๋๋ฆฝ๋๋ค.
@eltriny
์ถํ ์ถ๊ฐ๋ ์ปค๋ฅ์
์ ๋ณด api์ response sample ๋ณด๋ด๋๋ฆฝ๋๋ค.
scope : ์๋ฒ ๋, ์ต์คํ
์
name : ์ปค๋ฅ์
ํ์
๋ช
implementor : ์ปค๋ฅ์
๊ตฌ๋ถ์
iconResource1, iconResource2, iconResource3, iconResource4 : icon static resource ๊ฒฝ๋ก
-- ์ฐ์ 4๊ฐ์ง ๋ฆฌ์์ค ๊ฒฝ๋ก๋ฅผ ์ ์ํ๋๋ฐ์. ํ์ฌ ์์ด์ฝ์ ๋ช๊ฐ์ง ์ ํ์ ์ฌ์ฉ์ค์ธ๊ฐ์?
inputSpec : ์ปค๋ฅ์
์์ฑ์ ํ์๊ฐ ์ฌ๋ถ์ ๋ํ spec
-- ์ฐ์ authenticationType, database, sid, catalog 4๊ฐ์ง ์์ฑ์ ๋ํด ๋
ธ์ถํ ์ง์ ๋ํ ์ฝ๋๋ฅผ ๊ตฌํํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
[
{
"scope":"EMBEDDED",
"name":"Hive",
"inputSpec":{
"implementor":"MANDATORY",
"authenticationType":"MANDATORY",
"url":"OPTIONAL",
"options":"OPTIONAL",
"hostname":"OPTIONAL",
"port":"OPTIONAL",
"database":"NONE",
"sid":"NONE",
"catalog":"NONE",
"properties":"OPTIONAL",
"username":"OPTIONAL",
"password":"OPTIONAL"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"HIVE",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EMBEDDED",
"name":"MySQL",
"inputSpec":{
"implementor":"MANDATORY",
"authenticationType":"MANDATORY",
"url":"OPTIONAL",
"options":"OPTIONAL",
"hostname":"OPTIONAL",
"port":"OPTIONAL",
"database":"NONE",
"sid":"NONE",
"catalog":"NONE",
"properties":"OPTIONAL",
"username":"OPTIONAL",
"password":"OPTIONAL"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"MYSQL",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EMBEDDED",
"name":"Presto",
"inputSpec":{
"implementor":"MANDATORY",
"authenticationType":"MANDATORY",
"url":"OPTIONAL",
"options":"OPTIONAL",
"hostname":"OPTIONAL",
"port":"OPTIONAL",
"database":"NONE",
"sid":"NONE",
"catalog":"MANDATORY",
"properties":"OPTIONAL",
"username":"OPTIONAL",
"password":"OPTIONAL"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"PRESTO",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EMBEDDED",
"name":"PostgreSQL",
"inputSpec":{
"implementor":"MANDATORY",
"authenticationType":"MANDATORY",
"url":"OPTIONAL",
"options":"OPTIONAL",
"hostname":"OPTIONAL",
"port":"OPTIONAL",
"database":"MANDATORY",
"sid":"NONE",
"catalog":"NONE",
"properties":"OPTIONAL",
"username":"OPTIONAL",
"password":"OPTIONAL"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"POSTGRESQL",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EMBEDDED",
"name":"Druid",
"inputSpec":{
"implementor":"MANDATORY",
"authenticationType":"NONE",
"url":"OPTIONAL",
"options":"OPTIONAL",
"hostname":"OPTIONAL",
"port":"OPTIONAL",
"database":"NONE",
"sid":"NONE",
"catalog":"NONE",
"properties":"OPTIONAL",
"username":"NONE",
"password":"NONE"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"DRUID",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EXTENSION",
"name":"Tibero",
"inputSpec":{
"implementor":"MANDATORY",
"authenticationType":"MANDATORY",
"url":"OPTIONAL",
"options":"OPTIONAL",
"hostname":"OPTIONAL",
"port":"OPTIONAL",
"database":"NONE",
"sid":"MANDATORY",
"catalog":"NONE",
"properties":"OPTIONAL",
"username":"OPTIONAL",
"password":"OPTIONAL"
},
"iconResource4":"/resources/jdbc/icon4.png",
"iconResource3":"/resources/jdbc/icon3.png",
"implementor":"TIBERO",
"iconResource2":"/resources/jdbc/icon1.png",
"iconResource1":"/resources/jdbc/icon1.png"
}
]
oracle, tibero์ ๋ํ ์์ด์ฝ ์ ๋ฌ ๋ถํ๋๋ฆฝ๋๋ค.
@ufoscw ์ ์์ด์ฝ ๊ธฐ์กด์ ํผ๋ธ๋ก ์ ๋ฌํ์์์ต๋๋ค- (์ด๊ณณ์ผ๋ก ์ ๋ฌ ํ์ํ์๋ฉด ์๋ ค์ฃผ์ธ์)
์ฐธ๊ณ ๋ก DB ํ์
๊ด๋ จ ์ ๋ฌ๋ ์์ด์ฝ ์๋ ์ด๋ฏธ์ง๋ก ์ฒจ๋ถํฉ๋๋ค

@eltriny
Oracle๊ณผ Tibero ์์ด์ฝ ์ ํํ
์ ๋ฌ ๋ถํ๋๋ ค์.
@ufoscw ์์ ์ค ๋ฌธ์๋๋ฆฝ๋๋ค.
Q1. inputSpec ํ๋กํผํฐ๋ค์ value๋ ์๋์ ๊ฐ์ ํํ๋ง ์กด์ฌํ๋์?
MANDATORY = ํ์๊ฐ
OPTIONAL = ์ต์
(๋ณดํต URL ์ ํ ํด์ ์ ์ฌ์ฉ)
NONE = ์ฌ์ฉํ์ง ์์
Q2. PostgreSQL์ ๋ํด ๋ฌธ์์ ๋๋ค.
{
"scope":"EMBEDDED",
"name":"PostgreSQL",
"inputSpec":{
"implementor":"MANDATORY",
"authenticationType":"MANDATORY",
"url":"OPTIONAL",
"options":"OPTIONAL",
"hostname":"OPTIONAL",
"port":"OPTIONAL",
"database":"MANDATORY",
"sid":"NONE",
"catalog":"NONE",
"properties":"OPTIONAL",
"username":"OPTIONAL",
"password":"OPTIONAL"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"POSTGRESQL",
"iconResource2":null,
"iconResource1":null
},
์์์ database๊ฐ MANDATORY๋ก ๋์ด์๋๋ฐ ํ์ฌ ํ๋ฉด์์๋
์๋์ ๊ฐ์ด ํ๊ธฐ๋๊ณ ์์์ต๋๋ค.


์ด๋ฌ๋ฉด database๊ฐ OPTIONAL๋ก ํ๊ธฐ๋์ด์ผ ํ๋๊ฒ ์๋๊ฐ์?
Q3. DRUID์์ authenticationType๊ฐ NONE์ผ๋ก ๋์ด์๋๋ฐ์
๊ทธ๋ฌ๋ฉด ์์ฑ์์ authenticationType ๊ฐ ์์ฒด๋ฅผ ๋๊ธฐ์ง ์์์ผ๋๋์?
@brandon-wonjune
Q1 : input ์์๋ค๊ฐ์ ๊ด๊ณ๋ฅผ spec์ผ๋ก ์ ์ํ๊ธฐ์๋ ๋๋ฌด ๋ณต์กํด์ง๊ฒ ๊ฐ๋ค์.
์กฐ๊ธ ๋จ์ํ๊ฒ ์์
ํ๋๊ฒ ์ข์๊ฒ ๊ฐ์ต๋๋ค.
inputSpec ์ ์ฉ ๋์์ database, sid, catalog, username, password, authenticationType ๋ง์ผ๋ก ์ ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
host, port, url, properties๋ ํญ์ ๋
ธ์ถํ๋๋ก ํ๋ฉฐ host, port <-> url์ ์์ํ์ผ์ ๊ธฐ์กด ๋ก์ง์ ์ ์งํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
value๋ ์๋๊ฐ๋ง ์กด์ฌํ๋ฉฐ ๊ฐ๊ฐ์ ์๋ฏธ๋
MANDATORY = ํ๋ฉด ๋
ธ์ถ O, ํ์๊ฐ ์ฒดํฌ O
OPTIONAL = ํ๋ฉด ๋
ธ์ถ O, ํ์๊ฐ ์ฒดํฌ X
NONE = ํ๋ฉด ๋
ธ์ถ X, ํ์๊ฐ ์ฒดํฌ X
[
{
"scope":"EMBEDDED",
"name":"Hive",
"inputSpec":{
"authenticationType":"MANDATORY",
"database":"NONE",
"sid":"NONE",
"catalog":"NONE",
"username":"MANDATORY",
"password":"MANDATORY"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"HIVE",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EMBEDDED",
"name":"MySQL",
"inputSpec":{
"authenticationType":"MANDATORY",
"database":"NONE",
"sid":"NONE",
"catalog":"NONE",
"username":"MANDATORY",
"password":"MANDATORY"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"MYSQL",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EMBEDDED",
"name":"Presto",
"inputSpec":{
"authenticationType":"MANDATORY",
"database":"NONE",
"sid":"NONE",
"catalog":"MANDATORY",
"username":"MANDATORY",
"password":"MANDATORY"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"PRESTO",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EMBEDDED",
"name":"PostgreSQL",
"inputSpec":{
"authenticationType":"MANDATORY",
"database":"MANDATORY",
"sid":"NONE",
"catalog":"NONE",
"username":"MANDATORY",
"password":"MANDATORY"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"POSTGRESQL",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EMBEDDED",
"name":"Druid",
"inputSpec":{
"authenticationType":"NONE",
"database":"NONE",
"sid":"NONE",
"catalog":"NONE",
"username":"NONE",
"password":"NONE"
},
"iconResource4":null,
"iconResource3":null,
"implementor":"DRUID",
"iconResource2":null,
"iconResource1":null
},
{
"scope":"EXTENSION",
"name":"Tibero",
"inputSpec":{
"authenticationType":"MANDATORY",
"database":"NONE",
"sid":"MANDATORY",
"catalog":"NONE",
"username":"MANDATORY",
"password":"MANDATORY"
},
"iconResource4":"/resources/jdbc/icon4.png",
"iconResource3":"/resources/jdbc/icon3.png",
"implementor":"TIBERO",
"iconResource2":"/resources/jdbc/icon1.png",
"iconResource1":"/resources/jdbc/icon1.png"
}
]
Q2. "URL๋ง" ์ฒดํฌ์์๋ host, port, sid, catalog, database ๋ ํ์๊ฐ ์ฒดํฌ ๋ก์ง ์์ธ์ฒ๋ฆฌํด์ฃผ์ธ์. ๊ธฐ์กด ๋ก์ง ๊ทธ๋๋ก ์ ์ฉํ์๋ฉด ๋ฉ๋๋ค.
Q3. ๊ธฐ๋ณธ๊ฐ์ธ MANUAL๋ก ๋๊ธฐ๋ฉด ๋ฉ๋๋ค.
@brandon-wonjune
(GET) /api/extensions/connection
@brandon-wonjune
์ํฌ๋ฒค์น์ ์ปค๋ฅ์
์์ฑ, ์ํฌ์คํ์ด์ค์์ ์ฌ์ฉํ ์ค๋ผํด, ํฐ๋ฒ ๋ก ์ด๋ฏธ์ง ํ์ผ์ ์ ํํ
์ ๋ฌ ๋ฐ๋๋๋ค.
@brandon-wonjune
์ปค๋ฐ ๋ฉ์์ง์ ์ด์๋ฒํธ๋ #1295 ๋ก ํต์ผํ๋๋ก ํ๊ฒ ์ต๋๋ค.