@Id ListDatabaseSchemasV2 @Description list schemas of database source instance. @Tags database @Security ApiKeyAuth @Param database_type query string true "database_type" @Param host query string true "database host" @Param port query int true "database port" @Param user query string true "database
(c echo.Context)
| 42 | // @Success 200 {object} models.ListSchemasRespV2 |
| 43 | // @Router /v2/database/schemas [get] |
| 44 | func ListDatabaseSchemasV2(c echo.Context) error { |
| 45 | logger := handler.NewLogger().Named("ListDatabaseSchemasV2") |
| 46 | reqParam := new(models.ListDatabaseSchemasReqV2) |
| 47 | err := handler.BindAndValidate(logger, c, reqParam) |
| 48 | if err != nil { |
| 49 | return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(err)) |
| 50 | } |
| 51 | |
| 52 | replicateDoDb := make([]*models.SchemaItem, 0) |
| 53 | switch reqParam.DatabaseType { |
| 54 | case DB_TYPE_MYSQL: |
| 55 | replicateDoDb, err = listMySQLSchema(logger, reqParam) |
| 56 | if err != nil { |
| 57 | return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("list %s schema failed : %v", DB_TYPE_MYSQL, err))) |
| 58 | } |
| 59 | case DB_TYPE_ORACLE: |
| 60 | replicateDoDb, err = listOracleSchema(logger, reqParam) |
| 61 | if err != nil { |
| 62 | return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("list %s schema failed : %v", DB_TYPE_ORACLE, err))) |
| 63 | } |
| 64 | } |
| 65 | |
| 66 | return c.JSON(http.StatusOK, &models.ListSchemasRespV2{ |
| 67 | Schemas: replicateDoDb, |
| 68 | BaseResp: models.BuildBaseResp(nil), |
| 69 | }) |
| 70 | } |
| 71 | |
| 72 | func listMySQLSchema(logger hclog.Logger, reqParam *models.ListDatabaseSchemasReqV2) ([]*models.SchemaItem, error) { |
| 73 | uri, err := buildMysqlUri(reqParam.Host, reqParam.User, reqParam.Password, |
nothing calls this directly
no test coverage detected