Skip to content

Commit 8ede13d

Browse files
committed
refactor to use the new schema from openAPI
Signed-off-by: Amr-Shams <amr.shams2015.as@gmail.com>
1 parent 3bc91c8 commit 8ede13d

File tree

7 files changed

+232
-216
lines changed

7 files changed

+232
-216
lines changed

go.mod

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ replace (
88
// github.com/docker/libcompose => github.com/docker/libcompose v0.4.1-0.20190808084053-143e0f3f1ab9
99
github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5
1010
github.com/jaguilar/vt100 => github.com/tonistiigi/vt100 v0.0.0-20190402012908-ad4c4a574305
11-
12-
//github.com/meshery/schemas v0.8.34 => ../schemas
11+
github.com/meshery/schemas => ../schemas
1312
)
1413

1514
require (
@@ -204,7 +203,7 @@ require (
204203
github.com/lestrrat-go/httprc/v3 v3.0.2 // indirect
205204
github.com/lestrrat-go/jwx/v3 v3.0.12 // indirect
206205
github.com/lestrrat-go/option/v2 v2.0.0 // indirect
207-
github.com/lib/pq v1.10.9 // indirect
206+
github.com/lib/pq v1.11.1 // indirect
208207
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
209208
github.com/mattn/go-colorable v0.1.14 // indirect
210209
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -309,3 +308,5 @@ require (
309308
)
310309

311310
replace github.com/meshery/meshkit => ../meshkit
311+
312+
replace github.com/meshery/schemas => ../schemas

go.sum

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,9 @@ github.com/lestrrat-go/jwx/v3 v3.0.12 h1:p25r68Y4KrbBdYjIsQweYxq794CtGCzcrc5dGzJ
409409
github.com/lestrrat-go/jwx/v3 v3.0.12/go.mod h1:HiUSaNmMLXgZ08OmGBaPVvoZQgJVOQphSrGr5zMamS8=
410410
github.com/lestrrat-go/option/v2 v2.0.0 h1:XxrcaJESE1fokHy3FpaQ/cXW8ZsIdWcdFzzLOcID3Ss=
411411
github.com/lestrrat-go/option/v2 v2.0.0/go.mod h1:oSySsmzMoR0iRzCDCaUfsCzxQHUEuhOViQObyy7S6Vg=
412-
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
413412
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
413+
github.com/lib/pq v1.11.1 h1:wuChtj2hfsGmmx3nf1m7xC2XpK6OtelS2shMY+bGMtI=
414+
github.com/lib/pq v1.11.1/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA=
414415
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
415416
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
416417
github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY=
@@ -428,8 +429,6 @@ github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuE
428429
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
429430
github.com/meshery/meshery-operator v0.8.11 h1:eDo2Sw0jjVrXsvvhF8LenADM58pK+7Z68ROPVIejTPc=
430431
github.com/meshery/meshery-operator v0.8.11/go.mod h1:hQEtFKKa5Fr/Mskk6bV5ip3bQ0+3F0u1voYS3XisBp4=
431-
github.com/meshery/schemas v0.8.113 h1:gQMKIJSKGTT6PuJje0XTxuHfCv9ERVLX9IrG1JyFAM8=
432-
github.com/meshery/schemas v0.8.113/go.mod h1:UwoDPg3j/2BMfytdgaalpemRKUxB9HhFsUZqJA01/G4=
433432
github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
434433
github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk=
435434
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=

models/meshmodel/registry/registry.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import (
1212
"github.com/meshery/meshkit/models/meshmodel/entity"
1313
regv1alpha3 "github.com/meshery/meshkit/models/meshmodel/registry/v1alpha3"
1414
regv1beta1 "github.com/meshery/meshkit/models/meshmodel/registry/v1beta1"
15-
"github.com/meshery/schemas/models/v1alpha3/relationship"
15+
schemarelationship "github.com/meshery/schemas/models/v1alpha3/relationship"
1616
"github.com/meshery/schemas/models/v1beta1/category"
17-
"github.com/meshery/schemas/models/v1beta1/component"
17+
schemacomponent "github.com/meshery/schemas/models/v1beta1/component"
1818
"github.com/meshery/schemas/models/v1beta1/connection"
1919
"github.com/meshery/schemas/models/v1beta1/model"
2020
"golang.org/x/text/cases"
@@ -97,8 +97,8 @@ func NewRegistryManager(db *database.Handler) (*RegistryManager, error) {
9797
err := rm.db.AutoMigrate(
9898
&Registry{},
9999
&connection.Connection{},
100-
&component.ComponentDefinition{},
101-
&relationship.RelationshipDefinition{},
100+
&schemacomponent.ComponentDefinition{},
101+
&schemarelationship.RelationshipDefinition{},
102102
&models.PolicyDefinition{},
103103
&model.ModelDefinition{},
104104
&category.CategoryDefinition{},
@@ -110,25 +110,25 @@ func NewRegistryManager(db *database.Handler) (*RegistryManager, error) {
110110
}
111111

112112
func (rm *RegistryManager) GetComponentSummary(
113-
f *regv1beta1.ComponentSummaryFilter,
114-
) (*regv1beta1.ComponentSummary, error) {
115-
return f.GetSummary(rm.db)
113+
f *schemacomponent.ComponentSummaryFilter,
114+
) (*schemacomponent.ComponentSummary, error) {
115+
return regv1beta1.GetSummary(f, rm.db)
116116
}
117117

118118
func (rm *RegistryManager) GetRelationshipSummary(
119-
f *regv1alpha3.RelationshipSummaryFilter,
120-
) (*regv1alpha3.RelationshipSummary, error) {
121-
return f.GetSummary(rm.db)
119+
f *schemarelationship.RelationshipSummaryFilter,
120+
) (*schemarelationship.RelationshipSummary, error) {
121+
return regv1alpha3.GetSummary(f, rm.db)
122122
}
123123

124124
func (rm *RegistryManager) Cleanup() {
125125
_ = rm.db.Migrator().DropTable(
126126
&Registry{},
127127
&connection.Connection{},
128-
&component.ComponentDefinition{},
128+
&schemacomponent.ComponentDefinition{},
129129
&model.ModelDefinition{},
130130
&category.CategoryDefinition{},
131-
&relationship.RelationshipDefinition{},
131+
&schemarelationship.RelationshipDefinition{},
132132
)
133133
}
134134
func (rm *RegistryManager) RegisterEntity(h connection.Connection, en entity.Entity) (bool, bool, error) {

models/meshmodel/registry/v1alpha3/relationship_summary.go

Lines changed: 82 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -5,142 +5,142 @@ import (
55
"slices"
66

77
"github.com/meshery/meshkit/database"
8-
"github.com/meshery/schemas/models/v1alpha3/relationship"
8+
relationship "github.com/meshery/schemas/models/v1alpha3/relationship"
99

1010
"gorm.io/gorm"
1111
)
1212

13-
type RelationshipSummaryFilter struct {
14-
Kind string
15-
Greedy bool
16-
SubType string
17-
RelationshipType string
18-
Version string
19-
ModelName string
20-
Status string
21-
Include []RelationshipSummaryDimension
22-
}
23-
24-
type RelationshipSummaryDimension string
25-
26-
const (
27-
RelationshipSummaryByModel RelationshipSummaryDimension = "by_model"
28-
RelationshipSummaryByKind RelationshipSummaryDimension = "by_kind"
29-
RelationshipSummaryByType RelationshipSummaryDimension = "by_type"
30-
RelationshipSummaryBySubType RelationshipSummaryDimension = "by_subtype"
31-
)
32-
33-
type RelationshipGroupEntry struct {
34-
Key string
35-
Count int
36-
}
37-
38-
func (r RelationshipGroupEntry) KeyValue() string {
39-
return r.Key
40-
}
41-
func (r RelationshipGroupEntry) CountValue() int {
42-
return r.Count
43-
}
44-
45-
type RelationshipSummary struct {
46-
Total int64
47-
ByModel []RelationshipGroupEntry
48-
ByKind []RelationshipGroupEntry
49-
ByType []RelationshipGroupEntry
50-
BySubType []RelationshipGroupEntry
51-
}
52-
53-
func (relationshipFilter *RelationshipSummaryFilter) Validate() error {
54-
for _, dim := range relationshipFilter.Include {
55-
switch dim {
56-
case RelationshipSummaryByModel, RelationshipSummaryByKind, RelationshipSummaryByType, RelationshipSummaryBySubType:
57-
// valid
58-
default:
59-
return fmt.Errorf("unknown include dimension %s", dim)
60-
}
61-
}
62-
return nil
63-
}
64-
65-
func (relationshipFilter *RelationshipSummaryFilter) GetSummary(db *database.Handler) (*RelationshipSummary, error) {
66-
if err := relationshipFilter.Validate(); err != nil {
13+
func GetSummary(relationshipFilter *relationship.RelationshipSummaryFilter, db *database.Handler) (*relationship.RelationshipSummary, error) {
14+
if err := validate(relationshipFilter); err != nil {
6715
return nil, err
6816
}
69-
summary := &RelationshipSummary{}
7017

71-
base := db.Model(&relationship.RelationshipDefinition{}).
18+
summary := &relationship.RelationshipSummary{}
19+
20+
base := db.Table("relationship_definition_dbs").
7221
Joins("JOIN model_dbs ON relationship_definition_dbs.model_id = model_dbs.id").
7322
Joins("JOIN category_dbs ON model_dbs.category_id = category_dbs.id")
7423

7524
status := "enabled"
7625

77-
if relationshipFilter.Status != "" {
78-
status = relationshipFilter.Status
26+
if relationshipFilter.Status != nil {
27+
status = *relationshipFilter.Status
7928
}
8029

8130
base = base.Where("model_dbs.status = ?", status)
8231

83-
if relationshipFilter.Kind != "" {
84-
if relationshipFilter.Greedy {
85-
base = base.Where("relationship_definition_dbs.kind LIKE ?", "%"+relationshipFilter.Kind+"%")
32+
if relationshipFilter.Kind != nil {
33+
greedy := relationshipFilter.Greedy != nil && *relationshipFilter.Greedy
34+
if greedy {
35+
base = base.Where("relationship_definition_dbs.kind LIKE ?", "%"+*relationshipFilter.Kind+"%")
8636
} else {
87-
base = base.Where("relationship_definition_dbs.kind = ?", relationshipFilter.Kind)
37+
base = base.Where("relationship_definition_dbs.kind = ?", *relationshipFilter.Kind)
8838
}
8939
}
9040

91-
if relationshipFilter.RelationshipType != "" {
92-
base = base.Where("relationship_definition_dbs.type = ?", relationshipFilter.RelationshipType)
41+
if relationshipFilter.RelationshipType != nil {
42+
base = base.Where("relationship_definition_dbs.type = ?", *relationshipFilter.RelationshipType)
9343
}
9444

95-
if relationshipFilter.SubType != "" {
96-
base = base.Where("relationship_definition_dbs.sub_type = ?", relationshipFilter.SubType)
45+
if relationshipFilter.SubType != nil {
46+
base = base.Where("relationship_definition_dbs.sub_type = ?", *relationshipFilter.SubType)
9747
}
98-
if relationshipFilter.ModelName != "" {
99-
base = base.Where("model_dbs.name = ?", relationshipFilter.ModelName)
48+
if relationshipFilter.ModelName != nil {
49+
base = base.Where("model_dbs.name = ?", *relationshipFilter.ModelName)
10050
}
101-
if relationshipFilter.Version != "" {
102-
base = base.Where("model_dbs.model->>'version' = ?", relationshipFilter.Version)
51+
if relationshipFilter.Version != nil {
52+
base = base.Where("model_dbs.model->>'version' = ?", *relationshipFilter.Version)
10353
}
10454
if err := base.Session(&gorm.Session{}).
10555
Distinct("relationship_definition_dbs.id").
10656
Count(&summary.Total).Error; err != nil {
10757
return nil, err
10858
}
10959

110-
shouldCompute := func(dim RelationshipSummaryDimension) bool {
111-
if len(relationshipFilter.Include) == 0 {
60+
shouldCompute := func(dim relationship.RelationshipSummaryFilterInclude) bool {
61+
if relationshipFilter.Include == nil || len(*relationshipFilter.Include) == 0 {
11262
return true
11363
}
11464

115-
return slices.Contains(relationshipFilter.Include, dim)
65+
return slices.Contains(*relationshipFilter.Include, dim)
66+
}
67+
68+
type groupEntry = struct {
69+
Count int32 `json:"count" yaml:"count"`
70+
Key string `json:"key" yaml:"key"`
11671
}
11772

11873
type dimensionInfo struct {
119-
dim RelationshipSummaryDimension
74+
dim relationship.RelationshipSummaryFilterInclude
12075
selectExpr string
12176
groupExpr string
122-
receiver *[]RelationshipGroupEntry
77+
setRows func([]groupEntry)
12378
}
12479

12580
dimensions := []dimensionInfo{
126-
{RelationshipSummaryByModel, "model_dbs.name as Key, COUNT(DISTINCT(relationship_definition_dbs.id)) as Count", "model_dbs.name", &summary.ByModel},
127-
{RelationshipSummaryByKind, "relationship_definition_dbs.kind as Key, COUNT(DISTINCT(relationship_definition_dbs.id)) as Count", "relationship_definition_dbs.kind", &summary.ByKind},
128-
{RelationshipSummaryByType, "relationship_definition_dbs.type as Key, COUNT(DISTINCT(relationship_definition_dbs.id)) as Count", "relationship_definition_dbs.type", &summary.ByType},
129-
{RelationshipSummaryBySubType, "relationship_definition_dbs.sub_type as Key, COUNT(DISTINCT(relationship_definition_dbs.id)) as Count", "relationship_definition_dbs.sub_type", &summary.BySubType},
81+
{
82+
dim: relationship.ByModel,
83+
selectExpr: "model_dbs.name as Key, COUNT(DISTINCT(relationship_definition_dbs.id)) as Count",
84+
groupExpr: "model_dbs.name",
85+
setRows: func(rows []groupEntry) {
86+
summary.ByModel = &rows
87+
},
88+
},
89+
{
90+
dim: relationship.ByKind,
91+
selectExpr: "relationship_definition_dbs.kind as Key, COUNT(DISTINCT(relationship_definition_dbs.id)) as Count",
92+
groupExpr: "relationship_definition_dbs.kind",
93+
setRows: func(rows []groupEntry) {
94+
summary.ByKind = &rows
95+
},
96+
},
97+
{
98+
dim: relationship.ByType,
99+
selectExpr: "relationship_definition_dbs.type as Key, COUNT(DISTINCT(relationship_definition_dbs.id)) as Count",
100+
groupExpr: "relationship_definition_dbs.type",
101+
setRows: func(rows []groupEntry) {
102+
summary.ByType = &rows
103+
},
104+
},
105+
{
106+
dim: relationship.BySubtype,
107+
selectExpr: "relationship_definition_dbs.sub_type as Key, COUNT(DISTINCT(relationship_definition_dbs.id)) as Count",
108+
groupExpr: "relationship_definition_dbs.sub_type",
109+
setRows: func(rows []groupEntry) {
110+
summary.BySubType = &rows
111+
},
112+
},
130113
}
131114

132115
for _, d := range dimensions {
133116
if shouldCompute(d.dim) {
134-
var rows []RelationshipGroupEntry
117+
var rows []groupEntry
135118
err := base.Session(&gorm.Session{}).
136119
Select(d.selectExpr).
137120
Group(d.groupExpr).
138121
Scan(&rows).Error
139122
if err != nil {
140123
return nil, err
141124
}
142-
*d.receiver = rows
125+
d.setRows(rows)
143126
}
144127
}
145128
return summary, nil
146129
}
130+
131+
func validate(relationshipFilter *relationship.RelationshipSummaryFilter) error {
132+
if relationshipFilter == nil {
133+
return fmt.Errorf("nil relationship summary filter")
134+
}
135+
136+
if relationshipFilter.Include == nil {
137+
return nil
138+
}
139+
140+
for _, dim := range *relationshipFilter.Include {
141+
if !dim.Valid() {
142+
return fmt.Errorf("unknown include dimension %s", dim)
143+
}
144+
}
145+
return nil
146+
}

0 commit comments

Comments
 (0)