Skip to content

Commit

Permalink
commit
Browse files Browse the repository at this point in the history
  • Loading branch information
bufdev committed Oct 25, 2024
1 parent 9ec7745 commit f19f35a
Show file tree
Hide file tree
Showing 6 changed files with 156 additions and 88 deletions.
44 changes: 23 additions & 21 deletions private/bufpkg/bufmodule/bufmoduleapi/commit_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ import (
"log/slog"
"time"

"github.com/bufbuild/buf/private/bufpkg/bufapi"
"github.com/bufbuild/buf/private/bufpkg/bufmodule"
"github.com/bufbuild/buf/private/bufpkg/bufregistryapi/bufregistryapimodule"
"github.com/bufbuild/buf/private/bufpkg/bufregistryapi/bufregistryapiowner"
"github.com/bufbuild/buf/private/pkg/slicesext"
"github.com/bufbuild/buf/private/pkg/syserror"
"github.com/bufbuild/buf/private/pkg/uuidutil"
Expand All @@ -30,40 +31,41 @@ import (
// NewCommitProvider returns a new CommitProvider for the given API client.
func NewCommitProvider(
logger *slog.Logger,
clientProvider interface {
bufapi.V1CommitServiceClientProvider
bufapi.V1ModuleServiceClientProvider
bufapi.V1OwnerServiceClientProvider
bufapi.V1Beta1CommitServiceClientProvider
moduleClientProvider interface {
bufregistryapimodule.V1CommitServiceClientProvider
bufregistryapimodule.V1ModuleServiceClientProvider
bufregistryapimodule.V1Beta1CommitServiceClientProvider
},
ownerClientProvider bufregistryapiowner.V1OwnerServiceClientProvider,
) bufmodule.CommitProvider {
return newCommitProvider(logger, clientProvider)
}

// *** PRIVATE ***

type commitProvider struct {
logger *slog.Logger
clientProvider interface {
bufapi.V1CommitServiceClientProvider
bufapi.V1ModuleServiceClientProvider
bufapi.V1OwnerServiceClientProvider
bufapi.V1Beta1CommitServiceClientProvider
logger *slog.Logger
moduleClientProvider interface {
bufregistryapimodule.V1CommitServiceClientProvider
bufregistryapimodule.V1ModuleServiceClientProvider
bufregistryapimodule.V1Beta1CommitServiceClientProvider
}
ownerClientProvider bufregistryapiowner.V1OwnerServiceClientProvider
}

func newCommitProvider(
logger *slog.Logger,
clientProvider interface {
bufapi.V1CommitServiceClientProvider
bufapi.V1ModuleServiceClientProvider
bufapi.V1OwnerServiceClientProvider
bufapi.V1Beta1CommitServiceClientProvider
moduleClientProvider interface {
bufregistryapimodule.V1CommitServiceClientProvider
bufregistryapimodule.V1ModuleServiceClientProvider
bufregistryapimodule.V1Beta1CommitServiceClientProvider
},
ownerClientProvider bufregistryapiowner.V1OwnerServiceClientProvider,
) *commitProvider {
return &commitProvider{
logger: logger,
clientProvider: clientProvider,
logger: logger,
moduleClientProvider: moduleClientProvider,
ownerClientProvider: ownerClientProvider,
}
}

Expand Down Expand Up @@ -115,8 +117,8 @@ func (a *commitProvider) GetCommitsForCommitKeys(

// We don't want to persist these across calls - this could grow over time and this cache
// isn't an LRU cache, and the information also may change over time.
v1ProtoModuleProvider := newV1ProtoModuleProvider(a.logger, a.clientProvider)
v1ProtoOwnerProvider := newV1ProtoOwnerProvider(a.logger, a.clientProvider)
v1ProtoModuleProvider := newV1ProtoModuleProvider(a.logger, a.moduleClientProvider)
v1ProtoOwnerProvider := newV1ProtoOwnerProvider(a.logger, a.ownerClientProvider)

registryToIndexedCommitKeys := slicesext.ToIndexedValuesMap(
commitKeys,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@ import (
// isn't an LRU cache, and the information also may change over time.
type v1ProtoModuleProvider struct {
logger *slog.Logger
clientProvider bufapi.V1ModuleServiceClientProvider
moduleClientProvider bufregistryapimodule.V1ModuleServiceClientProvider
protoModuleCache cache.Cache[string, *modulev1.Module]
}

func newV1ProtoModuleProvider(
logger *slog.Logger,
clientProvider bufapi.V1ModuleServiceClientProvider,
moduleClientProvider bufregistryapimodule.V1ModuleServiceClientProvider
) *v1ProtoModuleProvider {
return &v1ProtoModuleProvider{
logger: logger,
clientProvider: clientProvider,
moduleClientProvider: moduleClientProvider,
}
}

Expand All @@ -54,7 +54,7 @@ func (a *v1ProtoModuleProvider) getV1ProtoModuleForProtoModuleID(
return a.protoModuleCache.GetOrAdd(
registry+"/"+protoModuleID,
func() (*modulev1.Module, error) {
response, err := a.clientProvider.V1ModuleServiceClient(registry).GetModules(
response, err := a.moduleClientProvider.V1ModuleServiceClient(registry).GetModules(
ctx,
connect.NewRequest(
&modulev1.GetModulesRequest{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package bufapi
package bufregistryapimodule

import (
"buf.build/gen/go/bufbuild/registry/connectrpc/go/buf/registry/module/v1/modulev1connect"
"buf.build/gen/go/bufbuild/registry/connectrpc/go/buf/registry/module/v1beta1/modulev1beta1connect"
"buf.build/gen/go/bufbuild/registry/connectrpc/go/buf/registry/owner/v1/ownerv1connect"
"github.com/bufbuild/buf/private/pkg/connectclient"
)

Expand All @@ -34,12 +33,6 @@ var (
NopV1ModuleServiceClientProvider V1ModuleServiceClientProvider = nopClientProvider{}
// NopV1UploadServiceClientProvider is a V1UploadServiceClientProvider that provides unimplemented services for testing.
NopV1UploadServiceClientProvider V1UploadServiceClientProvider = nopClientProvider{}
// NopV1OrganizationServiceClientProvider is a V1OrganizationServiceClientProvider that provides unimplemented services for testing.
NopV1OrganizationServiceClientProvider V1OrganizationServiceClientProvider = nopClientProvider{}
// NopV1OwnerServiceClientProvider is a V1OwnerServiceClientProvider that provides unimplemented services for testing.
NopV1OwnerServiceClientProvider V1OwnerServiceClientProvider = nopClientProvider{}
// NopV1UserServiceClientProvider is a V1UserServiceClientProvider that provides unimplemented services for testing.
NopV1UserServiceClientProvider V1UserServiceClientProvider = nopClientProvider{}
// NopV1Beta1CommitServiceClientProvider is a V1Beta1CommitServiceClientProvider that provides unimplemented services for testing.
NopV1Beta1CommitServiceClientProvider V1Beta1CommitServiceClientProvider = nopClientProvider{}
// NopV1Beta1DownloadServiceClientProvider is a V1Beta1DownloadServiceClientProvider that provides unimplemented services for testing.
Expand Down Expand Up @@ -91,21 +84,6 @@ type V1UploadServiceClientProvider interface {
V1UploadServiceClient(registry string) modulev1connect.UploadServiceClient
}

// V1OrganizationServiceClientProvider provides OrganizationServiceClients.
type V1OrganizationServiceClientProvider interface {
V1OrganizationServiceClient(registry string) ownerv1connect.OrganizationServiceClient
}

// V1OwnerServiceClientProvider provides OwnerServiceClients.
type V1OwnerServiceClientProvider interface {
V1OwnerServiceClient(registry string) ownerv1connect.OwnerServiceClient
}

// V1UserServiceClientProvider provides UserServiceClients.
type V1UserServiceClientProvider interface {
V1UserServiceClient(registry string) ownerv1connect.UserServiceClient
}

// V1Beta1CommitServiceClientProvider provides CommitServiceClients.
type V1Beta1CommitServiceClientProvider interface {
V1Beta1CommitServiceClient(registry string) modulev1beta1connect.CommitServiceClient
Expand Down Expand Up @@ -145,9 +123,6 @@ type ClientProvider interface {
V1ModuleServiceClientProvider
V1ResourceServiceClientProvider
V1UploadServiceClientProvider
V1OrganizationServiceClientProvider
V1OwnerServiceClientProvider
V1UserServiceClientProvider
V1Beta1CommitServiceClientProvider
V1Beta1DownloadServiceClientProvider
V1Beta1GraphServiceClientProvider
Expand Down Expand Up @@ -229,30 +204,6 @@ func (c *clientProvider) V1UploadServiceClient(registry string) modulev1connect.
)
}

func (c *clientProvider) V1OrganizationServiceClient(registry string) ownerv1connect.OrganizationServiceClient {
return connectclient.Make(
c.clientConfig,
registry,
ownerv1connect.NewOrganizationServiceClient,
)
}

func (c *clientProvider) V1OwnerServiceClient(registry string) ownerv1connect.OwnerServiceClient {
return connectclient.Make(
c.clientConfig,
registry,
ownerv1connect.NewOwnerServiceClient,
)
}

func (c *clientProvider) V1UserServiceClient(registry string) ownerv1connect.UserServiceClient {
return connectclient.Make(
c.clientConfig,
registry,
ownerv1connect.NewUserServiceClient,
)
}

func (c *clientProvider) V1Beta1CommitServiceClient(registry string) modulev1beta1connect.CommitServiceClient {
return connectclient.Make(
c.clientConfig,
Expand Down Expand Up @@ -331,18 +282,6 @@ func (nopClientProvider) V1UploadServiceClient(registry string) modulev1connect.
return modulev1connect.UnimplementedUploadServiceHandler{}
}

func (nopClientProvider) V1OrganizationServiceClient(registry string) ownerv1connect.OrganizationServiceClient {
return ownerv1connect.UnimplementedOrganizationServiceHandler{}
}

func (nopClientProvider) V1OwnerServiceClient(registry string) ownerv1connect.OwnerServiceClient {
return ownerv1connect.UnimplementedOwnerServiceHandler{}
}

func (nopClientProvider) V1UserServiceClient(registry string) ownerv1connect.UserServiceClient {
return ownerv1connect.UnimplementedUserServiceHandler{}
}

func (nopClientProvider) V1Beta1CommitServiceClient(registry string) modulev1beta1connect.CommitServiceClient {
return modulev1beta1connect.UnimplementedCommitServiceHandler{}
}
Expand Down
19 changes: 19 additions & 0 deletions private/bufpkg/bufregistryapi/bufregistryapimodule/usage.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
// Copyright 2020-2024 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package bufregistryapiowner

import (
"buf.build/gen/go/bufbuild/registry/connectrpc/go/buf/registry/owner/v1/ownerv1connect"
"github.com/bufbuild/buf/private/pkg/connectclient"
)

var (
// NopV1OrganizationServiceClientProvider is a V1OrganizationServiceClientProvider that provides unimplemented services for testing.
NopV1OrganizationServiceClientProvider V1OrganizationServiceClientProvider = nopClientProvider{}
// NopV1OwnerServiceClientProvider is a V1OwnerServiceClientProvider that provides unimplemented services for testing.
NopV1OwnerServiceClientProvider V1OwnerServiceClientProvider = nopClientProvider{}
// NopV1UserServiceClientProvider is a V1UserServiceClientProvider that provides unimplemented services for testing.
NopV1UserServiceClientProvider V1UserServiceClientProvider = nopClientProvider{}
// NopClientProvider is a ClientProvider that provides unimplemented services for testing.
NopClientProvider ClientProvider = nopClientProvider{}
)

// V1OrganizationServiceClientProvider provides OrganizationServiceClients.
type V1OrganizationServiceClientProvider interface {
V1OrganizationServiceClient(registry string) ownerv1connect.OrganizationServiceClient
}

// V1OwnerServiceClientProvider provides OwnerServiceClients.
type V1OwnerServiceClientProvider interface {
V1OwnerServiceClient(registry string) ownerv1connect.OwnerServiceClient
}

// V1UserServiceClientProvider provides UserServiceClients.
type V1UserServiceClientProvider interface {
V1UserServiceClient(registry string) ownerv1connect.UserServiceClient
}

// ClientProvider provides API clients for BSR services.
type ClientProvider interface {
V1OrganizationServiceClientProvider
V1OwnerServiceClientProvider
V1UserServiceClientProvider
}

// NewClientProvider returns a new ClientProvider.
func NewClientProvider(clientConfig *connectclient.Config) ClientProvider {
return newClientProvider(clientConfig)
}

// *** PRIVATE ***

type clientProvider struct {
clientConfig *connectclient.Config
}

func newClientProvider(clientConfig *connectclient.Config) *clientProvider {
return &clientProvider{
clientConfig: clientConfig,
}
}

func (c *clientProvider) V1OrganizationServiceClient(registry string) ownerv1connect.OrganizationServiceClient {
return connectclient.Make(
c.clientConfig,
registry,
ownerv1connect.NewOrganizationServiceClient,
)
}

func (c *clientProvider) V1OwnerServiceClient(registry string) ownerv1connect.OwnerServiceClient {
return connectclient.Make(
c.clientConfig,
registry,
ownerv1connect.NewOwnerServiceClient,
)
}

func (c *clientProvider) V1UserServiceClient(registry string) ownerv1connect.UserServiceClient {
return connectclient.Make(
c.clientConfig,
registry,
ownerv1connect.NewUserServiceClient,
)
}

type nopClientProvider struct{}

func (nopClientProvider) V1OrganizationServiceClient(registry string) ownerv1connect.OrganizationServiceClient {
return ownerv1connect.UnimplementedOrganizationServiceHandler{}
}

func (nopClientProvider) V1OwnerServiceClient(registry string) ownerv1connect.OwnerServiceClient {
return ownerv1connect.UnimplementedOwnerServiceHandler{}
}

func (nopClientProvider) V1UserServiceClient(registry string) ownerv1connect.UserServiceClient {
return ownerv1connect.UnimplementedUserServiceHandler{}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit f19f35a

Please sign in to comment.