Skip to content

Commit

Permalink
refactor: refactor source code
Browse files Browse the repository at this point in the history
  • Loading branch information
Tochemey committed Sep 22, 2023
1 parent 4478d0d commit 4ad4c7a
Show file tree
Hide file tree
Showing 19 changed files with 92 additions and 1,340 deletions.
47 changes: 40 additions & 7 deletions ego.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"github.com/tochemey/goakt/actors"
"github.com/tochemey/goakt/discovery"
"github.com/tochemey/goakt/log"
"github.com/tochemey/goakt/pkg/telemetry"
"github.com/tochemey/goakt/telemetry"
"go.uber.org/atomic"
)

Expand Down Expand Up @@ -81,8 +81,11 @@ func (x *Ego) Stop(ctx context.Context) error {
return x.actorSystem.Stop(ctx)
}

// SendCommand sends command to a given entity ref
func (x *Ego) SendCommand(ctx context.Context, command entity.Command, entityID string) (*egopb.CommandReply, error) {
// SendCommand sends command to a given entity ref. This will return:
// 1. the resulting state after the command has been handled and the emitted event persisted
// 2. nil when there is no resulting state or no event persisted
// 3. an error in case of error
func (x *Ego) SendCommand(ctx context.Context, command entity.Command, entityID string) (entity.State, error) {
// first check whether we are running in cluster mode or not
if x.enableCluster.Load() {
// grab the remote address of the actor
Expand All @@ -104,8 +107,13 @@ func (x *Ego) SendCommand(ctx context.Context, command entity.Command, entityID
}
// let us unmarshall the reply
commandReply := new(egopb.CommandReply)
err = reply.UnmarshalTo(commandReply)
return commandReply, err
// parse the reply and return the error when there is one
if err = reply.UnmarshalTo(commandReply); err != nil {
return nil, err
}

// parse the command reply and return the appropriate responses
return parseCommandReply(commandReply)
}
// locate the given actor
pid, err := x.actorSystem.LocalActor(ctx, entityID)
Expand All @@ -125,8 +133,33 @@ func (x *Ego) SendCommand(ctx context.Context, command entity.Command, entityID
return nil, err
}

// TODO use ok, comma idiom to cast
return reply.(*egopb.CommandReply), nil
// cast the reply to a command reply because that is the expected return type
commandReply, ok := reply.(*egopb.CommandReply)
// when casting is successful
if ok {
// parse the command reply and return the appropriate responses
return parseCommandReply(commandReply)
}
// casting failed
return nil, errors.New("failed to parse command reply")
}

// parseCommandReply parses the command reply
func parseCommandReply(reply *egopb.CommandReply) (entity.State, error) {
var (
state entity.State
err error
)
// parse the command reply
switch r := reply.GetReply().(type) {
case *egopb.CommandReply_StateReply:
state, err = r.StateReply.GetState().UnmarshalNew()
case *egopb.CommandReply_NoReply:
// nothing to be done here
case *egopb.CommandReply_ErrorReply:
err = errors.New(r.ErrorReply.GetMessage())
}
return state, err
}

// NewEntity creates an entity and return the entity reference
Expand Down
23 changes: 5 additions & 18 deletions ego_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,11 @@ import (
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tochemey/ego/egopb"
"github.com/tochemey/ego/entity"
"github.com/tochemey/ego/eventstore/memory"
samplepb "github.com/tochemey/ego/example/pbs/sample/pb/v1"
"github.com/tochemey/goakt/discovery"
mockdisco "github.com/tochemey/goakt/goaktmocks/discovery"
mockdisco "github.com/tochemey/goakt/testkit/discovery"
"github.com/travisjeffery/go-dynaport"
"google.golang.org/protobuf/proto"
)
Expand Down Expand Up @@ -87,11 +86,8 @@ func TestEgo(t *testing.T) {
// send the command to the actor. Please don't ignore the error in production grid code
reply, err := e.SendCommand(ctx, command, entityID)
require.NoError(t, err)
require.IsType(t, new(egopb.CommandReply_StateReply), reply.GetReply())
assert.EqualValues(t, 1, reply.GetStateReply().GetSequenceNumber())

resultingState := new(samplepb.Account)
assert.NoError(t, reply.GetStateReply().GetState().UnmarshalTo(resultingState))
resultingState := reply.(*samplepb.Account)
assert.EqualValues(t, 500.00, resultingState.GetAccountBalance())
assert.Equal(t, entityID, resultingState.GetAccountId())

Expand All @@ -102,11 +98,8 @@ func TestEgo(t *testing.T) {
}
reply, err = e.SendCommand(ctx, command, entityID)
require.NoError(t, err)
require.IsType(t, new(egopb.CommandReply_StateReply), reply.GetReply())
assert.EqualValues(t, 2, reply.GetStateReply().GetSequenceNumber())

newState := new(samplepb.Account)
assert.NoError(t, reply.GetStateReply().GetState().UnmarshalTo(newState))
newState := reply.(*samplepb.Account)
assert.EqualValues(t, 750.00, newState.GetAccountBalance())
assert.Equal(t, entityID, newState.GetAccountId())

Expand Down Expand Up @@ -138,11 +131,8 @@ func TestEgo(t *testing.T) {
// send the command to the actor. Please don't ignore the error in production grid code
reply, err := e.SendCommand(ctx, command, entityID)
require.NoError(t, err)
require.IsType(t, new(egopb.CommandReply_StateReply), reply.GetReply())
assert.EqualValues(t, 1, reply.GetStateReply().GetSequenceNumber())

resultingState := new(samplepb.Account)
assert.NoError(t, reply.GetStateReply().GetState().UnmarshalTo(resultingState))
resultingState := reply.(*samplepb.Account)
assert.EqualValues(t, 500.00, resultingState.GetAccountBalance())
assert.Equal(t, entityID, resultingState.GetAccountId())

Expand All @@ -153,11 +143,8 @@ func TestEgo(t *testing.T) {
}
reply, err = e.SendCommand(ctx, command, entityID)
require.NoError(t, err)
require.IsType(t, new(egopb.CommandReply_StateReply), reply.GetReply())
assert.EqualValues(t, 2, reply.GetStateReply().GetSequenceNumber())

newState := new(samplepb.Account)
assert.NoError(t, reply.GetStateReply().GetState().UnmarshalTo(newState))
newState := reply.(*samplepb.Account)
assert.EqualValues(t, 750.00, newState.GetAccountBalance())
assert.Equal(t, entityID, newState.GetAccountId())

Expand Down
12 changes: 7 additions & 5 deletions entity/behavior.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ type Behavior[T State] interface {
// ID defines the id that will be used in the event journal.
// This helps track the entity in the events store.
ID() string
// InitialState returns the event sourced actor initial state
// InitialState returns the event sourced actor initial state.
// This is set as the initial state when there are no snapshots found the entity
InitialState() T
// HandleCommand helps handle commands received by the event sourced actor. The command handlers define how to handle each incoming command,
// which validations must be applied, and finally, which events will be persisted if any. When there is no event to be persisted a nil can
Expand Down Expand Up @@ -120,8 +121,8 @@ func (entity *Entity[T]) Receive(ctx actors.ReceiveContext) {
// PostStop prepares the actor to gracefully shutdown
func (entity *Entity[T]) PostStop(ctx context.Context) error {
// add a span context
//ctx, span := telemetry.SpanContext(ctx, "PostStop")
//defer span.End()
ctx, span := telemetry.SpanContext(ctx, "PostStop")
defer span.End()

// acquire the lock
entity.mu.Lock()
Expand All @@ -139,8 +140,8 @@ func (entity *Entity[T]) PostStop(ctx context.Context) error {
// this is vital when the entity actor is restarting.
func (entity *Entity[T]) recoverFromSnapshot(ctx context.Context) error {
// add a span context
//ctx, span := telemetry.SpanContext(ctx, "RecoverFromSnapshot")
//defer span.End()
ctx, span := telemetry.SpanContext(ctx, "RecoverFromSnapshot")
defer span.End()

// check whether there is a snapshot to recover from
event, err := entity.eventsStore.GetLatestEvent(ctx, entity.ID())
Expand Down Expand Up @@ -278,6 +279,7 @@ func (entity *Entity[T]) processCommandAndReply(ctx actors.ReceiveContext, comma
return
}

// create the command reply to send
reply := &egopb.CommandReply{
Reply: &egopb.CommandReply_StateReply{
StateReply: &egopb.StateReply{
Expand Down
4 changes: 1 addition & 3 deletions entity/behavior_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -327,10 +327,8 @@ func TestAccountAggregate(t *testing.T) {
AccountId: persistenceID,
AccountBalance: 750.00,
}
assert.True(t, proto.Equal(expected, resultingState))

// shutdown the persistent actor
assert.NoError(t, actorSystem.Kill(ctx, behavior.ID()))
assert.True(t, proto.Equal(expected, resultingState))
// wait a while
time.Sleep(time.Second)

Expand Down
18 changes: 4 additions & 14 deletions example/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,10 @@ import (
"os/signal"
"syscall"

"github.com/tochemey/ego/entity"
"github.com/tochemey/ego/eventstore/memory"

"github.com/google/uuid"
"github.com/tochemey/ego"
"github.com/tochemey/ego/egopb"
"github.com/tochemey/ego/entity"
"github.com/tochemey/ego/eventstore/memory"
samplepb "github.com/tochemey/ego/example/pbs/sample/pb/v1"
"google.golang.org/protobuf/proto"
)
Expand Down Expand Up @@ -43,11 +41,8 @@ func main() {
}
// send the command to the actor. Please don't ignore the error in production grid code
reply, _ := e.SendCommand(ctx, command, entityID)
state := reply.GetReply().(*egopb.CommandReply_StateReply)
log.Printf("resulting sequence number: %d", state.StateReply.GetSequenceNumber())

account := new(samplepb.Account)
_ = state.StateReply.GetState().UnmarshalTo(account)
account := reply.(*samplepb.Account)

log.Printf("current balance: %v", account.GetAccountBalance())

Expand All @@ -57,12 +52,7 @@ func main() {
Balance: 250,
}
reply, _ = e.SendCommand(ctx, command, entityID)
state = reply.GetReply().(*egopb.CommandReply_StateReply)
log.Printf("resulting sequence number: %d", state.StateReply.GetSequenceNumber())

account = new(samplepb.Account)
_ = state.StateReply.GetState().UnmarshalTo(account)

account = reply.(*samplepb.Account)
log.Printf("current balance: %v", account.GetAccountBalance())

// capture ctrl+c
Expand Down
14 changes: 7 additions & 7 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ require (
github.com/hashicorp/go-memdb v1.3.4
github.com/pkg/errors v0.9.1
github.com/stretchr/testify v1.8.4
github.com/tochemey/goakt v0.5.1
github.com/tochemey/goakt v0.8.0
github.com/tochemey/gopack v0.0.0-20230901205014-06584bf05eb5
github.com/travisjeffery/go-dynaport v1.0.0
go.opentelemetry.io/otel v1.17.0
Expand Down Expand Up @@ -92,16 +92,16 @@ require (
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.25.0 // indirect
golang.org/x/mod v0.12.0 // indirect
golang.org/x/net v0.14.0 // indirect
golang.org/x/net v0.15.0 // indirect
golang.org/x/oauth2 v0.11.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/term v0.11.0 // indirect
golang.org/x/text v0.12.0 // indirect
golang.org/x/sys v0.12.0 // indirect
golang.org/x/term v0.12.0 // indirect
golang.org/x/text v0.13.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.12.0 // indirect
golang.org/x/tools v0.13.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect
google.golang.org/grpc v1.57.0 // indirect
google.golang.org/grpc v1.58.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand Down
32 changes: 15 additions & 17 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -384,10 +384,8 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/redcon v1.6.2 h1:5qfvrrybgtO85jnhSravmkZyC0D+7WstbfCs3MmPhow=
github.com/tidwall/redcon v1.6.2/go.mod h1:p5Wbsgeyi2VSTBWOcA5vRXrOb9arFTcU2+ZzFjqV75Y=
github.com/tochemey/goakt v0.5.1 h1:8H5IYObTxkK72JM00TeFNnrEGWaABWytL1372BINKUQ=
github.com/tochemey/goakt v0.5.1/go.mod h1:dUfzisO9UYJ2iVaCrl1/s7E1ftH612bo5Fm1bQDpX3I=
github.com/tochemey/gopack v0.0.0-20230831231518-a5a26f3fd887 h1:IZuzt2IURB5V0pTQ7knYBI9+EqJ4FIGo5YxTevnYuxw=
github.com/tochemey/gopack v0.0.0-20230831231518-a5a26f3fd887/go.mod h1:gWpWJXsIEBlompjd0pvOc61kHJp0/dUiCXK/56tYX9I=
github.com/tochemey/goakt v0.8.0 h1:s5DtH4LXmFnTOLuoofMH0W273hlLfiaFSIQudOIw5m8=
github.com/tochemey/goakt v0.8.0/go.mod h1:nbd+GPq7hTxIQeHSIvrN8dyae6AkIDjydK0ZwShIVss=
github.com/tochemey/gopack v0.0.0-20230901205014-06584bf05eb5 h1:ZpUGyBPXHr7KPqJzLYqQdyTARnOVpUGy4LZx7Jgcle0=
github.com/tochemey/gopack v0.0.0-20230901205014-06584bf05eb5/go.mod h1:O8C7dX8QMSDPbIjYXma+pe5pk9tg3vo6OxpDU0cFCh8=
github.com/travisjeffery/go-dynaport v1.0.0 h1:m/qqf5AHgB96CMMSworIPyo1i7NZueRsnwdzdCJ8Ajw=
Expand Down Expand Up @@ -436,7 +434,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
Expand All @@ -460,8 +458,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14=
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU=
golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand Down Expand Up @@ -506,18 +504,18 @@ golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0=
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
Expand All @@ -533,8 +531,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss=
golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM=
golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
Expand All @@ -546,8 +544,8 @@ google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M=
google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw=
google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o=
google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
Expand Down
23 changes: 0 additions & 23 deletions offsetstore/iface.go

This file was deleted.

Loading

0 comments on commit 4ad4c7a

Please sign in to comment.