Skip to content

Commit

Permalink
feature(imports) support jwt config for get all reasource in meta
Browse files Browse the repository at this point in the history
  • Loading branch information
vani-rf committed Feb 10, 2025
1 parent d3ac663 commit 7175d9d
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 40 deletions.
1 change: 1 addition & 0 deletions config.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ type Config struct {
Environment string `mapstructure:"ENVIRONMENT"`
GoogleProjectId string `mapstructure:"GOOGLE_PROJECT_ID"`
GoogleSaPath string `mapstructure:"GOOGLE_SA_PATH"`
JwtToken string `mapstructure:"JWT_TOKEN"`
MaxServerRequestBodySize int `mapstructure:"MAX_SERVER_REQUEST_BODY_SIZE"`
Mode Mode `mapstructure:"MODE"`
PgMetaUrl string `mapstructure:"PG_META_URL"`
Expand Down
2 changes: 1 addition & 1 deletion pkg/client/net/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ func SendRequest(method string, url string, body []byte, timeout time.Duration,
}
}

Logger.Trace("net.request", "url", url)
Logger.Trace("net.request", "timeout", reqTimeout)
Logger.Trace("net.request", "headers", req.Header)
Logger.Trace("net.request", "body", string(body))

resp, err := GetClient().Do(req)
Expand Down
38 changes: 38 additions & 0 deletions pkg/connector/pgmeta/common.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package pgmeta

import (
"encoding/json"
"fmt"
"net/http"

"github.com/sev-2/raiden/pkg/client/net"
"github.com/sev-2/raiden/pkg/logger"
)

var MetaLogger = logger.HcLog().Named("connector.meta")

func DefaultAuthInterceptor(accessToken string) func(req *http.Request) error {
return func(req *http.Request) error {
if accessToken != "" {
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", accessToken))
}

Check warning on line 18 in pkg/connector/pgmeta/common.go

View check run for this annotation

Codecov / codecov/patch

pkg/connector/pgmeta/common.go#L17-L18

Added lines #L17 - L18 were not covered by tests
return nil
}
}

// ----- Execute Query -----
type ExecuteQueryParam struct {
Query string `json:"query"`
Variables any `json:"variables"`
}

func ExecuteQuery[T any](baseUrl, query string, variables any, reqInterceptor net.RequestInterceptor, resInterceptor net.ResponseInterceptor) (result T, err error) {
url := fmt.Sprintf("%s/query", baseUrl)
p := ExecuteQueryParam{Query: query, Variables: variables}
pByte, err := json.Marshal(p)
if err != nil {
MetaLogger.Error("error execute query", "query", query)
return result, err
}

Check warning on line 36 in pkg/connector/pgmeta/common.go

View check run for this annotation

Codecov / codecov/patch

pkg/connector/pgmeta/common.go#L34-L36

Added lines #L34 - L36 were not covered by tests
return net.Post[T](url, pByte, net.DefaultTimeout, reqInterceptor, resInterceptor)
}
2 changes: 1 addition & 1 deletion pkg/connector/pgmeta/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (

func GetIndexes(cfg *raiden.Config, schema string) ([]objects.Index, error) {
MetaLogger.Trace("start fetching indexes from meta")
rs, err := ExecuteQuery[[]objects.Index](cfg.PgMetaUrl, sql.GenerateGetIndexQuery(schema), nil, nil, nil)
rs, err := ExecuteQuery[[]objects.Index](cfg.PgMetaUrl, sql.GenerateGetIndexQuery(schema), nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
err = fmt.Errorf("get indexes error : %s", err)
return []objects.Index{}, err
Expand Down
53 changes: 18 additions & 35 deletions pkg/connector/pgmeta/table.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package pgmeta

import (
"encoding/json"
"errors"
"fmt"
"net/http"
Expand All @@ -11,31 +10,11 @@ import (

"github.com/sev-2/raiden"
"github.com/sev-2/raiden/pkg/client/net"
"github.com/sev-2/raiden/pkg/logger"
"github.com/sev-2/raiden/pkg/supabase/objects"
"github.com/sev-2/raiden/pkg/supabase/query"
"github.com/sev-2/raiden/pkg/supabase/query/sql"
)

var MetaLogger = logger.HcLog().Named("connector.meta")

// ----- Execute Query -----
type ExecuteQueryParam struct {
Query string `json:"query"`
Variables any `json:"variables"`
}

func ExecuteQuery[T any](baseUrl, query string, variables any, reqInterceptor net.RequestInterceptor, resInterceptor net.ResponseInterceptor) (result T, err error) {
url := fmt.Sprintf("%s/query", baseUrl)
p := ExecuteQueryParam{Query: query, Variables: variables}
pByte, err := json.Marshal(p)
if err != nil {
MetaLogger.Error("error execute query", "query", query)
return result, err
}
return net.Post[T](url, pByte, net.DefaultTimeout, reqInterceptor, resInterceptor)
}

func GetTables(cfg *raiden.Config, includedSchemas []string, includeColumns bool) ([]objects.Table, error) {
MetaLogger.Trace("start fetching tables from meta")
url := fmt.Sprintf("%s/tables", cfg.PgMetaUrl)
Expand All @@ -49,6 +28,10 @@ func GetTables(cfg *raiden.Config, includedSchemas []string, includeColumns bool
req.URL.Query().Set("include_columns", strconv.FormatBool(includeColumns))
}

if len(cfg.JwtToken) > 0 {
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", cfg.JwtToken))
}

Check warning on line 33 in pkg/connector/pgmeta/table.go

View check run for this annotation

Codecov / codecov/patch

pkg/connector/pgmeta/table.go#L32-L33

Added lines #L32 - L33 were not covered by tests

return nil
}

Expand All @@ -68,7 +51,7 @@ func GetTableByName(cfg *raiden.Config, name, schema string, includeColumn bool)
return result, err
}

rs, err := ExecuteQuery[[]objects.Table](cfg.PgMetaUrl, q, nil, nil, nil)
rs, err := ExecuteQuery[[]objects.Table](cfg.PgMetaUrl, q, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
err = fmt.Errorf("get tables error : %s", err)
return
Expand All @@ -95,7 +78,7 @@ func CreateTable(cfg *raiden.Config, newTable objects.Table) (result objects.Tab
}

// execute update
_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return result, fmt.Errorf("create new table %s error : %s", newTable.Name, err)
}
Expand All @@ -107,7 +90,7 @@ func UpdateTable(cfg *raiden.Config, newTable objects.Table, updateItem objects.
MetaLogger.Trace("start update table", "name", newTable.Name)
sql := query.BuildUpdateTableQuery(newTable, updateItem)
// execute update
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("update tables error : %s", err)
}
Expand Down Expand Up @@ -142,7 +125,7 @@ func DeleteTable(cfg *raiden.Config, table objects.Table, cascade bool) error {
MetaLogger.Trace("start delete table", "name", table.Name)
sql := query.BuildDeleteTableQuery(table, true)
// execute delete
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("delete table %s error : %s", table.Name, err)
}
Expand All @@ -155,7 +138,7 @@ func GetTableRelationshipActions(cfg *raiden.Config, schema string) ([]objects.T
MetaLogger.Trace("start fetching table relationships from pg-meta")
q := sql.GenerateGetTableRelationshipActionsQuery(schema)

rs, err := ExecuteQuery[[]objects.TablesRelationshipAction](cfg.PgMetaUrl, q, nil, nil, nil)
rs, err := ExecuteQuery[[]objects.TablesRelationshipAction](cfg.PgMetaUrl, q, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return rs, fmt.Errorf("get tables relation from pg-meta error : %s", err)
}
Expand Down Expand Up @@ -265,7 +248,7 @@ func CreateColumn(cfg *raiden.Config, column objects.Column, isPrimary bool) err
}

// Execute SQL Query
_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("create column %s.%s error : %s", column.Table, column.Name, err)
}
Expand All @@ -279,7 +262,7 @@ func UpdateColumn(cfg *raiden.Config, oldColumn, newColumn objects.Column, updat
sql := query.BuildUpdateColumnQuery(oldColumn, newColumn, updateItem)

// Execute SQL Query
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("update column %s.%s error : %s", newColumn.Table, newColumn.Name, err)
}
Expand All @@ -290,7 +273,7 @@ func UpdateColumn(cfg *raiden.Config, oldColumn, newColumn objects.Column, updat
func DeleteColumn(cfg *raiden.Config, column objects.Column) error {
MetaLogger.Trace("start delete column", "table", column.Table, "name", column.Name)
sql := query.BuildDeleteColumnQuery(column)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("delete column %s.%s error : %s", column.Table, column.Name, err)
}
Expand Down Expand Up @@ -397,7 +380,7 @@ func createForeignKey(cfg *raiden.Config, relation *objects.TablesRelationship)
return err
}

_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("create foreign key %s.%s error : %s", relation.SourceTableName, relation.SourceColumnName, err)
}
Expand All @@ -406,7 +389,7 @@ func createForeignKey(cfg *raiden.Config, relation *objects.TablesRelationship)
if indexSql, err := query.BuildFKIndexQuery(objects.UpdateRelationCreate, relation); err != nil {
return err
} else if len(indexSql) > 0 {
_, err = ExecuteQuery[any](cfg.PgMetaUrl, indexSql, nil, nil, nil)
_, err = ExecuteQuery[any](cfg.PgMetaUrl, indexSql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("create foreign index %s.%s error : %s", relation.SourceTableName, relation.SourceColumnName, err)
}
Expand All @@ -429,7 +412,7 @@ func updateForeignKey(cfg *raiden.Config, relation *objects.TablesRelationship)
}

sql := deleteSql + createSql
_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("update foreign key %s.%s error : %s", relation.SourceTableName, relation.SourceColumnName, err)
}
Expand All @@ -439,7 +422,7 @@ func updateForeignKey(cfg *raiden.Config, relation *objects.TablesRelationship)
if indexSql, err := query.BuildFKIndexQuery(objects.UpdateRelationCreate, relation); err != nil {
return err
} else if len(indexSql) > 0 {
_, err = ExecuteQuery[any](cfg.PgMetaUrl, indexSql, nil, nil, nil)
_, err = ExecuteQuery[any](cfg.PgMetaUrl, indexSql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("create foreign index %s.%s error : %s", relation.SourceTableName, relation.SourceColumnName, err)
}
Expand All @@ -458,7 +441,7 @@ func deleteForeignKey(cfg *raiden.Config, relation *objects.TablesRelationship)
return err
}

_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err = ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("delete foreign key %s.%s error : %s", relation.SourceTableName, relation.SourceColumnName, err)
}
Expand All @@ -468,7 +451,7 @@ func deleteForeignKey(cfg *raiden.Config, relation *objects.TablesRelationship)
if indexSql, err := query.BuildFKIndexQuery(objects.UpdateRelationDelete, relation); err != nil {
return err
} else if len(indexSql) > 0 {
_, err = ExecuteQuery[any](cfg.PgMetaUrl, indexSql, nil, nil, nil)
_, err = ExecuteQuery[any](cfg.PgMetaUrl, indexSql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("delete foreign index %s.%s error : %s", relation.SourceTableName, relation.SourceColumnName, err)
}
Expand Down
10 changes: 7 additions & 3 deletions pkg/connector/pgmeta/type.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ func GetTypes(cfg *raiden.Config, includedSchemas []string) ([]objects.Type, err
req.URL.Query().Set("included_schemas", strings.Join(includedSchemas, ","))
}

if len(cfg.JwtToken) > 0 {
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", cfg.JwtToken))
}

Check warning on line 26 in pkg/connector/pgmeta/type.go

View check run for this annotation

Codecov / codecov/patch

pkg/connector/pgmeta/type.go#L25-L26

Added lines #L25 - L26 were not covered by tests

return nil
}

Expand All @@ -35,7 +39,7 @@ func GetTypes(cfg *raiden.Config, includedSchemas []string) ([]objects.Type, err
func GetTypeByName(cfg *raiden.Config, includedSchema []string, name string) (result objects.Type, err error) {
MetaLogger.Trace("start fetching type by name from meta")
sql := sql.GenerateTypeQuery(includedSchema, name) + " limit 1"
rs, err := ExecuteQuery[[]objects.Type](cfg.PgMetaUrl, sql, nil, nil, nil)
rs, err := ExecuteQuery[[]objects.Type](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
err = fmt.Errorf("get type error : %s", err)
return
Expand All @@ -53,7 +57,7 @@ func CreateType(cfg *raiden.Config, t objects.Type) (objects.Type, error) {
MetaLogger.Trace("start create type", "name", t.Name)
// Execute SQL Query
sql, _ := query.BuildTypeQuery(query.TypeActionCreate, &t)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, nil, nil)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, sql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return objects.Type{}, fmt.Errorf("create new type %s error : %s", t.Name, err)
}
Expand All @@ -78,7 +82,7 @@ func DeleteType(cfg *raiden.Config, t objects.Type) error {
func UpdateType(cfg *raiden.Config, t objects.Type) error {
MetaLogger.Trace("start update type", "name", t.Name)
updateSql, _ := query.BuildTypeQuery(query.TypeActionUpdate, &t)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, updateSql, nil, nil, nil)
_, err := ExecuteQuery[any](cfg.PgMetaUrl, updateSql, nil, DefaultAuthInterceptor(cfg.JwtToken), nil)
if err != nil {
return fmt.Errorf("update type %s error : %s", t.Name, err)
}
Expand Down
1 change: 1 addition & 0 deletions pkg/generator/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ SUPABASE_PUBLIC_URL: {{ .SupabasePublicUrl }}
{{- if eq .Mode "svc"}}
POSTGREST_URL: {{ .PostgRestUrl }}
PG_META_URL: {{ .PgMetaUrl }}
JWT_TOKEN: {{ .JwtToken }}
{{- end}}
SERVER_HOST: {{ .ServerHost }}
SERVER_PORT: {{ .ServerPort }}
Expand Down

0 comments on commit 7175d9d

Please sign in to comment.