@@ -6,6 +6,7 @@ package azureappconfiguration
66import (
77 "context"
88 "errors"
9+ "fmt"
910 "log"
1011
1112 "github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration/internal/tracing"
@@ -62,25 +63,46 @@ func (s *selectorSettingsClient) getSettings(ctx context.Context) (*settingsResp
6263 settings := make ([]azappconfig.Setting , 0 )
6364 pageETags := make (map [Selector ][]* azcore.ETag )
6465 for _ , filter := range s .selectors {
65- selector := azappconfig.SettingSelector {
66- KeyFilter : to .Ptr (filter .KeyFilter ),
67- LabelFilter : to .Ptr (filter .LabelFilter ),
68- Fields : azappconfig .AllSettingFields (),
69- }
66+ if filter .SnapshotName == "" {
67+ selector := azappconfig.SettingSelector {
68+ KeyFilter : to .Ptr (filter .KeyFilter ),
69+ LabelFilter : to .Ptr (filter .LabelFilter ),
70+ Fields : azappconfig .AllSettingFields (),
71+ }
7072
71- pager := s .client .NewListSettingsPager (selector , nil )
72- eTags := make ([]* azcore.ETag , 0 )
73- for pager .More () {
74- page , err := pager .NextPage (ctx )
73+ pager := s .client .NewListSettingsPager (selector , nil )
74+ eTags := make ([]* azcore.ETag , 0 )
75+ for pager .More () {
76+ page , err := pager .NextPage (ctx )
77+ if err != nil {
78+ return nil , err
79+ } else if page .Settings != nil {
80+ settings = append (settings , page .Settings ... )
81+ eTags = append (eTags , page .ETag )
82+ }
83+ }
84+
85+ pageETags [filter ] = eTags
86+ } else {
87+ snapshot , err := s .client .GetSnapshot (ctx , filter .SnapshotName , nil )
7588 if err != nil {
7689 return nil , err
77- } else if page .Settings != nil {
78- settings = append (settings , page .Settings ... )
79- eTags = append (eTags , page .ETag )
8090 }
81- }
8291
83- pageETags [filter ] = eTags
92+ if snapshot .CompositionType == nil || * snapshot .CompositionType != azappconfig .CompositionTypeKey {
93+ return nil , fmt .Errorf ("composition type for the selected snapshot '%s' must be 'key'" , filter .SnapshotName )
94+ }
95+
96+ pager := s .client .NewListSettingsForSnapshotPager (filter .SnapshotName , nil )
97+ for pager .More () {
98+ page , err := pager .NextPage (ctx )
99+ if err != nil {
100+ return nil , err
101+ } else if page .Settings != nil {
102+ settings = append (settings , page .Settings ... )
103+ }
104+ }
105+ }
84106 }
85107
86108 return & settingsResponse {
0 commit comments