MCPcopy Create free account
hub / github.com/actiontech/dtle / ListDatabaseColumnsV2

Function ListDatabaseColumnsV2

api/handler/v2/database.go:185–231  ·  view source on GitHub ↗

@Id ListDatabaseColumnsV2 @Description list columns of database source instance. @Tags database @Security ApiKeyAuth @Param host query string true "database host" @Param port query int true "database port" @Param user query string true "database user" @Param password query string true "database pass

(c echo.Context)

Source from the content-addressed store, hash-verified

183// @Success 200 {object} models.ListColumnsRespV2
184// @Router /v2/database/columns [get]
185func ListDatabaseColumnsV2(c echo.Context) error {
186 logger := handler.NewLogger().Named("ListDatabaseColumnsV2")
187 reqParam := new(models.ListColumnsReqV2)
188 err := handler.BindAndValidate(logger, c, reqParam)
189 if err != nil {
190 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(err))
191 }
192
193 columns := make([]string, 0)
194 switch reqParam.DatabaseType {
195 case DB_TYPE_MYSQL:
196 columns, err = listMySQLColumns(logger, reqParam)
197 if err != nil {
198 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("list %s columns failed : %v", DB_TYPE_MYSQL, err)))
199 }
200 case DB_TYPE_ORACLE:
201 if reqParam.IsPasswordEncrypted && reqParam.Password != "" {
202 realPwd, err := handler.DecryptPassword(reqParam.Password, g.RsaPrivateKey)
203 if nil != err {
204 return c.JSON(http.StatusOK, &models.ConnectionRespV2{
205 BaseResp: models.BuildBaseResp(err),
206 })
207 }
208 reqParam.Password = realPwd
209 }
210 oracleDb, err := config.NewDB(context.TODO(), &config.OracleConfig{
211 User: reqParam.User,
212 Password: reqParam.Password,
213 Host: reqParam.Host,
214 Port: reqParam.Port,
215 ServiceName: reqParam.ServiceName,
216 })
217 if err != nil {
218 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("list %s columns failed : %v", DB_TYPE_ORACLE, err)))
219 }
220 defer oracleDb.Close()
221 columns, err = oracleDb.GetColumns(reqParam.Schema, reqParam.Table)
222 if err != nil {
223 return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("list %s columns failed : %v", DB_TYPE_ORACLE, err)))
224 }
225 }
226
227 return c.JSON(http.StatusOK, &models.ListColumnsRespV2{
228 Columns: columns,
229 BaseResp: models.BuildBaseResp(nil),
230 })
231}
232
233func listMySQLColumns(logger hclog.Logger, reqParam *models.ListColumnsReqV2) ([]string, error) {
234 uri, err := buildMysqlUri(reqParam.Host, reqParam.User, reqParam.Password,

Callers

nothing calls this directly

Calls 8

NewLoggerFunction · 0.92
BindAndValidateFunction · 0.92
BuildBaseRespFunction · 0.92
DecryptPasswordFunction · 0.92
NewDBFunction · 0.92
listMySQLColumnsFunction · 0.85
GetColumnsMethod · 0.80
CloseMethod · 0.45

Tested by

no test coverage detected