Skip to content

Commit 21dbd8d

Browse files
authored
Optimises Bundle.MediaType() (#409)
Media type is an optional field and can be an empty string after looading. This change avoids unmarshalling every time we call MediaType() method by comparing to `nil`. If value is `nil` - we need to load. If anything else (even an empty string) we already lazy-loaded the value. Signed-off-by: Mikalai Radchuk <[email protected]>
1 parent ca95325 commit 21dbd8d

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

internal/catalogmetadata/types.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ type Bundle struct {
4545
bundlePackage *property.Package
4646
semVersion *bsemver.Version
4747
requiredPackages []PackageRequired
48-
mediaType string
48+
mediaType *string
4949
}
5050

5151
func (b *Bundle) Version() (*bsemver.Version, error) {
@@ -67,7 +67,7 @@ func (b *Bundle) MediaType() (string, error) {
6767
return "", err
6868
}
6969

70-
return b.mediaType, nil
70+
return *b.mediaType, nil
7171
}
7272

7373
func (b *Bundle) loadPackage() error {
@@ -118,12 +118,12 @@ func (b *Bundle) loadRequiredPackages() error {
118118
func (b *Bundle) loadMediaType() error {
119119
b.mu.Lock()
120120
defer b.mu.Unlock()
121-
if b.mediaType == "" {
121+
if b.mediaType == nil {
122122
mediaType, err := loadFromProps[string](b, PropertyBundleMediaType, false)
123123
if err != nil {
124124
return fmt.Errorf("error determining bundle mediatype for bundle %q: %s", b.Name, err)
125125
}
126-
b.mediaType = mediaType
126+
b.mediaType = &mediaType
127127
}
128128
return nil
129129
}

0 commit comments

Comments
 (0)