From 202c7968966caa617052b410c773c749e5cf49af Mon Sep 17 00:00:00 2001 From: neha-Gupta1 Date: Thu, 31 Aug 2023 12:04:20 +0530 Subject: [PATCH] remove fields restriction from query --- .../m365/collection/groups/handlers.go | 2 +- src/pkg/services/m365/api/channels_pager.go | 171 ++++++++---------- 2 files changed, 79 insertions(+), 94 deletions(-) diff --git a/src/internal/m365/collection/groups/handlers.go b/src/internal/m365/collection/groups/handlers.go index bf3cb8f0f..2a1339caa 100644 --- a/src/internal/m365/collection/groups/handlers.go +++ b/src/internal/m365/collection/groups/handlers.go @@ -16,7 +16,7 @@ type BackupHandler interface { ) (models.Channelable, error) NewChannelsPager( teamID string, - ) api.ChannelDeltaEnumerator + ) api.ChannelEnumerator GetMessageByID( ctx context.Context, diff --git a/src/pkg/services/m365/api/channels_pager.go b/src/pkg/services/m365/api/channels_pager.go index aebd51759..e8aa2c7cf 100644 --- a/src/pkg/services/m365/api/channels_pager.go +++ b/src/pkg/services/m365/api/channels_pager.go @@ -21,28 +21,21 @@ type ChannelMessageDeltaEnumerator interface { SetNextLinker } -var _ ChannelMessageDeltaEnumerator = &MessagePageCtrl{} +var _ ChannelMessageDeltaEnumerator = &ChannelMessageDeltaPageCtrl{} -type MessagePageCtrl struct { +type ChannelMessageDeltaPageCtrl struct { gs graph.Servicer builder *teams.ItemChannelsItemMessagesDeltaRequestBuilder options *teams.ItemChannelsItemMessagesDeltaRequestBuilderGetRequestConfiguration } func (c Channels) NewMessagePager( - teamID, - channelID string, + teamID, channelID string, fields []string, -) *MessagePageCtrl { - requestConfig := &teams.ItemChannelsItemMessagesDeltaRequestBuilderGetRequestConfiguration{ - QueryParameters: &teams.ItemChannelsItemMessagesDeltaRequestBuilderGetQueryParameters{ - Select: fields, - }, - } - - res := &MessagePageCtrl{ +) *ChannelMessageDeltaPageCtrl { + res := &ChannelMessageDeltaPageCtrl{ gs: c.Stable, - options: requestConfig, + options: nil, builder: c.Stable. Client(). Teams(). @@ -56,11 +49,11 @@ func (c Channels) NewMessagePager( return res } -func (p *MessagePageCtrl) SetNext(nextLink string) { +func (p *ChannelMessageDeltaPageCtrl) SetNext(nextLink string) { p.builder = teams.NewItemChannelsItemMessagesDeltaRequestBuilder(nextLink, p.gs.Adapter()) } -func (p *MessagePageCtrl) GetPage(ctx context.Context) (DeltaPageLinker, error) { +func (p *ChannelMessageDeltaPageCtrl) GetPage(ctx context.Context) (DeltaPageLinker, error) { var ( resp DeltaPageLinker err error @@ -74,90 +67,19 @@ func (p *MessagePageCtrl) GetPage(ctx context.Context) (DeltaPageLinker, error) return resp, nil } -func (p *MessagePageCtrl) ValuesIn(l PageLinker) ([]models.ChatMessageable, error) { +func (p *ChannelMessageDeltaPageCtrl) ValuesIn(l PageLinker) ([]models.ChatMessageable, error) { return getValues[models.ChatMessageable](l) } // --------------------------------------------------------------------------- -// channel pager -// --------------------------------------------------------------------------- - -type ChannelDeltaEnumerator interface { - PageLinker - ValuesInPageLinker[models.Channelable] - SetNextLinker -} - -// TODO: implement -var _ ChannelDeltaEnumerator = &channelPageCtrl{} - -type channelPageCtrl struct { - gs graph.Servicer - builder *teams.ItemChannelsRequestBuilder - options *teams.ItemChannelsRequestBuilderGetRequestConfiguration -} - -func (c Channels) NewChannelPager( - teamID, - channelID string, - fields []string, -) *channelPageCtrl { - requestConfig := &teams.ItemChannelsRequestBuilderGetRequestConfiguration{ - QueryParameters: &teams.ItemChannelsRequestBuilderGetQueryParameters{ - Select: fields, - }, - } - - res := &channelPageCtrl{ - gs: c.Stable, - options: requestConfig, - builder: c.Stable. - Client(). - Teams(). - ByTeamId(teamID). - Channels(), - } - - return res -} - -func (p *channelPageCtrl) SetNext(nextLink string) { - p.builder = teams.NewItemChannelsRequestBuilder(nextLink, p.gs.Adapter()) -} - -func (p *channelPageCtrl) GetPage(ctx context.Context) (PageLinker, error) { - var ( - resp PageLinker - err error - ) - - resp, err = p.builder.Get(ctx, p.options) - if err != nil { - return nil, graph.Stack(ctx, err) - } - - return resp, nil -} - -func (p *channelPageCtrl) ValuesIn(l PageLinker) ([]models.Channelable, error) { - return getValues[models.Channelable](l) -} - -func (p *channelPageCtrl) GetOdataNextLink() *string { - // No next link preent in the API result - emptyString := "" - return &emptyString -} - -// --------------------------------------------------------------------------- -// non delta item pager +// non delta channel message pager // --------------------------------------------------------------------------- type MessageItemIDType struct { ItemID string } -type channelItemPageCtrl struct { +type channelMessagePageCtrl struct { gs graph.Servicer builder *teams.ItemChannelsItemMessagesRequestBuilder options *teams.ItemChannelsItemMessagesRequestBuilderGetRequestConfiguration @@ -206,11 +128,10 @@ func (c Channels) NewChannelItemPager( ByChannelId(containerID). Messages() - return &channelItemPageCtrl{c.Stable, builder, options} + return &channelMessagePageCtrl{c.Stable, builder, options} } -//lint:ignore U1000 False Positive -func (p *channelItemPageCtrl) getPage(ctx context.Context) (PageLinkValuer[models.ChatMessageable], error) { +func (p *channelMessagePageCtrl) getPage(ctx context.Context) (PageLinkValuer[models.ChatMessageable], error) { page, err := p.builder.Get(ctx, p.options) if err != nil { return nil, graph.Stack(ctx, err) @@ -220,6 +141,70 @@ func (p *channelItemPageCtrl) getPage(ctx context.Context) (PageLinkValuer[model } //lint:ignore U1000 False Positive -func (p *channelItemPageCtrl) setNext(nextLink string) { +func (p *channelMessagePageCtrl) setNext(nextLink string) { p.builder = teams.NewItemChannelsItemMessagesRequestBuilder(nextLink, p.gs.Adapter()) } + +// --------------------------------------------------------------------------- +// channel pager +// --------------------------------------------------------------------------- + +type ChannelEnumerator interface { + PageLinker + ValuesInPageLinker[models.Channelable] + SetNextLinker +} + +var _ ChannelEnumerator = &channelPageCtrl{} + +type channelPageCtrl struct { + gs graph.Servicer + builder *teams.ItemChannelsRequestBuilder + options *teams.ItemChannelsRequestBuilderGetRequestConfiguration +} + +func (c Channels) NewChannelPager( + teamID, + channelID string, + fields []string, +) *channelPageCtrl { + res := &channelPageCtrl{ + gs: c.Stable, + options: nil, + builder: c.Stable. + Client(). + Teams(). + ByTeamId(teamID). + Channels(), + } + + return res +} + +func (p *channelPageCtrl) SetNext(nextLink string) { + p.builder = teams.NewItemChannelsRequestBuilder(nextLink, p.gs.Adapter()) +} + +func (p *channelPageCtrl) GetPage(ctx context.Context) (PageLinker, error) { + var ( + resp PageLinker + err error + ) + + resp, err = p.builder.Get(ctx, p.options) + if err != nil { + return nil, graph.Stack(ctx, err) + } + + return resp, nil +} + +func (p *channelPageCtrl) ValuesIn(l PageLinker) ([]models.Channelable, error) { + return getValues[models.Channelable](l) +} + +func (p *channelPageCtrl) GetOdataNextLink() *string { + // No next link preent in the API result + emptyString := "" + return &emptyString +}