Skip to content

Commit 9028690

Browse files
Fix: tests
1 parent 0c811ef commit 9028690

File tree

6 files changed

+45
-17
lines changed

6 files changed

+45
-17
lines changed

config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ type Contract struct {
4040
// Database
4141
type Database struct {
4242
Path string `yaml:"path"`
43-
Kind string `yaml:"kind" validate:"required,oneof=sqlite postgres mysql clickhouse"`
43+
Kind string `yaml:"kind" validate:"required,oneof=sqlite postgres mysql clickhouse elasticsearch"`
4444
Host string `yaml:"host" validate:"required_with=Port User Database"`
4545
Port int `yaml:"port" validate:"required_with=Host User Database,gt=-1,lt=65535"`
4646
User string `yaml:"user" validate:"required_with=Host Port Database"`

config/consts.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ package config
22

33
// Supported database kinds
44
const (
5-
DBKindSqlite = "sqlite"
6-
DBKindPostgres = "postgres"
7-
DBKindMysql = "mysql"
8-
DBKindClickhouse = "clickhouse"
5+
DBKindSqlite = "sqlite"
6+
DBKindPostgres = "postgres"
7+
DBKindMysql = "mysql"
8+
DBKindClickhouse = "clickhouse"
9+
DBKindElasticSearch = "elasticsearch"
910
)

hasura/api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ func (api *API) AddSource(ctx context.Context, hasura *config.Hasura, cfg config
130130
"name": hasura.Source,
131131
"configuration": Configuration{
132132
ConnectionInfo: ConnectionInfo{
133-
DatabaseUrl: fmt.Sprintf("postgresql://%s:%s@%s:%d/%s", cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.Database),
133+
DatabaseUrl: DatabaseUrl(fmt.Sprintf("postgresql://%s:%s@%s:%d/%s", cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.Database)),
134134
UsePreparedStatements: true,
135135
IsolationLevel: "read-committed",
136136
},

hasura/hasura.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ func Create(ctx context.Context, hasura *config.Hasura, cfg config.Database, vie
5151

5252
if hasura.AddSource {
5353
log.Info().Msg("Adding source...")
54-
err := api.AddSource(ctx, hasura, cfg)
55-
if err != nil {
54+
if err := api.AddSource(ctx, hasura, cfg); err != nil {
5655
return err
5756
}
5857
}
@@ -69,24 +68,24 @@ func Create(ctx context.Context, hasura *config.Hasura, cfg config.Database, vie
6968
}
7069

7170
// Find our source in the existing metadata
72-
var selected_source *Source = nil
71+
var selectedSource *Source = nil
7372
for idx := range export.Sources {
7473
if export.Sources[idx].Name == hasura.Source {
75-
selected_source = &export.Sources[idx]
74+
selectedSource = &export.Sources[idx]
7675
break
7776
}
7877
}
79-
if selected_source == nil {
78+
if selectedSource == nil {
8079
return errors.Errorf("Source '%s' not found on exported metadata", hasura.Source)
8180
}
8281

8382
log.Info().Msg("Merging metadata...")
8483
// Clear tables
8584
// TODO: maybe instead replace tables by name.
86-
selected_source.Tables = make([]Table, 0)
85+
selectedSource.Tables = make([]Table, 0)
8786
// Insert generated tables
8887
for _, table := range metadata.Sources[0].Tables {
89-
selected_source.Tables = append(selected_source.Tables, table)
88+
selectedSource.Tables = append(selectedSource.Tables, table)
9089
}
9190

9291
if err := createQueryCollections(&export); err != nil {

hasura/hasura_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,13 @@ func TestGenerate(t *testing.T) {
142142
hasura: config.Hasura{
143143
EnableAggregations: true,
144144
RowsLimit: 5,
145+
Source: "mysql",
145146
},
146147
models: []interface{}{
147148
&testTable{}, &testTable2{}, &testTable3{}, &testTable4{},
148149
},
149150
},
150-
want: `{"tables":[{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"limit":5,"allow_aggregations":true,"columns":["field_1","field_2"],"filter":{}},"role":"user"}],"table":{"name":"test_table","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"limit":5,"allow_aggregations":true,"columns":["field_1","field_2"],"filter":{}},"role":"user"}],"table":{"name":"fake_name","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"limit":5,"allow_aggregations":true,"columns":["field_2"],"filter":{}},"role":"user"}],"table":{"name":"test_table_3","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"limit":5,"allow_aggregations":true,"columns":["field_2","field_3"],"filter":{}},"role":"user"}],"table":{"name":"test_table_4","schema":"public"}}],"version":2}`,
151+
want: `{"version":3,"sources":[{"name":"mysql","kind":"","tables":[{"object_relationships":[],"array_relationships":[],"select_permissions":[{"role":"user","permission":{"columns":["field_1","field_2"],"limit":5,"allow_aggregations":true,"filter":{}}}],"configuration":{"comment":null,"custom_root_fields":null,"custom_column_names":null},"table":{"schema":"public","name":"test_table"}},{"object_relationships":[],"array_relationships":[],"select_permissions":[{"role":"user","permission":{"columns":["field_1","field_2"],"limit":5,"allow_aggregations":true,"filter":{}}}],"configuration":{"comment":null,"custom_root_fields":null,"custom_column_names":null},"table":{"schema":"public","name":"fake_name"}},{"object_relationships":[],"array_relationships":[],"select_permissions":[{"role":"user","permission":{"columns":["field_2"],"limit":5,"allow_aggregations":true,"filter":{}}}],"configuration":{"comment":null,"custom_root_fields":null,"custom_column_names":null},"table":{"schema":"public","name":"test_table_3"}},{"object_relationships":[],"array_relationships":[],"select_permissions":[{"role":"user","permission":{"columns":["field_2","field_3"],"limit":5,"allow_aggregations":true,"filter":{}}}],"configuration":{"comment":null,"custom_root_fields":null,"custom_column_names":null},"table":{"schema":"public","name":"test_table_4"}}],"configuration":{"connection_info":{"use_prepared_statements":false,"isolation_level":""}}}]}`,
151152
},
152153
}
153154
for _, tt := range tests {
@@ -162,7 +163,7 @@ func TestGenerate(t *testing.T) {
162163
t.Errorf("MarshalToString() error = %v", err)
163164
return
164165
}
165-
assert.JSONEq(t, tt.want, gotStr)
166+
assert.Equal(t, tt.want, gotStr)
166167
})
167168
}
168169
}

hasura/requests.go

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type Metadata struct {
2626
Version int `json:"version"`
2727
Sources []Source `json:"sources"`
2828
QueryCollections []QueryCollection `json:"query_collections,omitempty"`
29-
RestEndpoints []interface{} `json:"rest_endpoints"`
29+
RestEndpoints []interface{} `json:"rest_endpoints,omitempty"`
3030
}
3131

3232
func newMetadata(version int, sources []Source) *Metadata {
@@ -36,14 +36,41 @@ func newMetadata(version int, sources []Source) *Metadata {
3636
}
3737
}
3838

39+
// Configuration -
3940
type Configuration struct {
4041
ConnectionInfo ConnectionInfo `json:"connection_info"`
4142
}
4243

44+
// ConnectionInfo -
4345
type ConnectionInfo struct {
4446
UsePreparedStatements bool `json:"use_prepared_statements"`
4547
IsolationLevel string `json:"isolation_level"`
46-
DatabaseUrl interface{} `json:"database_url"`
48+
DatabaseUrl DatabaseUrl `json:"database_url,omitempty"`
49+
}
50+
51+
// DatabaseUrl -
52+
type DatabaseUrl string
53+
54+
// DatabaseUrlFromEnv -
55+
type DatabaseUrlFromEnv struct {
56+
FromEnv string `json:"from_env"`
57+
}
58+
59+
// UnmarshalJSON -
60+
func (d *DatabaseUrl) UnmarshalJSON(data []byte) error {
61+
var s string
62+
if err := json.Unmarshal(data, &s); err == nil {
63+
*d = DatabaseUrl(s)
64+
return nil
65+
}
66+
67+
var fromEnv DatabaseUrlFromEnv
68+
if err := json.Unmarshal(data, &fromEnv); err != nil {
69+
return err
70+
}
71+
72+
*d = DatabaseUrl(fromEnv.FromEnv)
73+
return nil
4774
}
4875

4976
// Source -

0 commit comments

Comments
 (0)