diff --git a/hasura/api.go b/hasura/api.go index 170becb..55aae6d 100644 --- a/hasura/api.go +++ b/hasura/api.go @@ -130,7 +130,7 @@ func (api *API) AddSource(ctx context.Context, hasura *config.Hasura, cfg config "name": hasura.Source, "configuration": Configuration{ ConnectionInfo: ConnectionInfo{ - DatabaseUrl: DatabaseUrl(fmt.Sprintf("postgresql://%s:%s@%s:%d/%s", cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.Database)), + DatabaseUrl: fmt.Sprintf("postgresql://%s:%s@%s:%d/%s", cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.Database), UsePreparedStatements: true, IsolationLevel: "read-committed", }, diff --git a/hasura/hasura.go b/hasura/hasura.go index c46c063..14369cb 100644 --- a/hasura/hasura.go +++ b/hasura/hasura.go @@ -340,3 +340,33 @@ func mergeQueries(a []Query, b []Query) []Query { } return b } + +func ReadCustomConfigs(ctx context.Context, database config.Database, hasuraConfigDir string) ([]Request, error) { + files, err := ioutil.ReadDir(hasuraConfigDir) + if err != nil { + return nil, err + } + + custom_configs := make([]Request, 0) + for i := range files { + if files[i].IsDir() || strings.HasPrefix(files[i].Name(), ".") { + continue + } + + path := fmt.Sprintf("%s/%s", hasuraConfigDir, files[i].Name()) + raw, err := ioutil.ReadFile(path) + if err != nil { + return nil, err + } + + conf := Request{} + + err = json.Unmarshal([]byte(raw), &conf) + if err != nil { + return nil, err + } + custom_configs = append(custom_configs, conf) + } + + return custom_configs, nil +}