71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package get
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"strings"
|
|
|
|
"github.com/go-errors/errors"
|
|
"github.com/spf13/afero"
|
|
"github.com/supabase/cli/internal/migration/list"
|
|
"github.com/supabase/cli/internal/utils"
|
|
)
|
|
|
|
func Run(ctx context.Context, projectRef string, fsys afero.Fs) error {
|
|
// 1. get current config
|
|
{
|
|
config, err := GetCurrentPostgresConfig(ctx, projectRef)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = PrintOutPostgresConfigOverrides(config)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func PrintOutPostgresConfigOverrides(config map[string]interface{}) error {
|
|
fmt.Println("- Custom Postgres Config -")
|
|
markdownTable := []string{
|
|
"|Parameter|Value|\n|-|-|\n",
|
|
}
|
|
|
|
for k, v := range config {
|
|
markdownTable = append(markdownTable, fmt.Sprintf(
|
|
"|`%s`|`%+v`|\n",
|
|
k, v,
|
|
))
|
|
}
|
|
|
|
if err := list.RenderTable(strings.Join(markdownTable, "")); err != nil {
|
|
return err
|
|
}
|
|
fmt.Println("- End of Custom Postgres Config -")
|
|
return nil
|
|
}
|
|
|
|
func GetCurrentPostgresConfig(ctx context.Context, projectRef string) (map[string]interface{}, error) {
|
|
resp, err := utils.GetSupabase().V1GetPostgresConfig(ctx, projectRef)
|
|
if err != nil {
|
|
return nil, errors.Errorf("failed to retrieve Postgres config overrides: %w", err)
|
|
}
|
|
if resp.StatusCode != 200 {
|
|
return nil, errors.Errorf("error in retrieving Postgres config overrides: %s", resp.Status)
|
|
}
|
|
contents, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return nil, errors.Errorf("failed to read response body: %w", err)
|
|
}
|
|
|
|
var config map[string]interface{}
|
|
err = json.Unmarshal(contents, &config)
|
|
if err != nil {
|
|
return nil, errors.Errorf("failed to unmarshal response body: %w. Contents were %s", err, contents)
|
|
}
|
|
return config, nil
|
|
}
|