Skip to content

Commit

Permalink
差し込む関数たちの戻り値にerrorを追加 refs #9
Browse files Browse the repository at this point in the history
  • Loading branch information
sinmetal committed May 23, 2019
1 parent a77ebad commit 4d226c9
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
19 changes: 15 additions & 4 deletions spanner/spanner_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package spanner
import (
"context"
"encoding/csv"
"fmt"
"io"
"time"

Expand Down Expand Up @@ -57,8 +58,8 @@ func (s *SpannerEntityService) QueryToWrite(ctx context.Context, sql string, hea
}

type UpdateMutationer interface {
GetKey(ctx context.Context, row *spanner.Row) spanner.Key
GetMutation(ctx context.Context, row *spanner.Row) *spanner.Mutation
GetKey(ctx context.Context, row *spanner.Row) (spanner.Key, error)
GetMutation(ctx context.Context, row *spanner.Row) (*spanner.Mutation, error)
}

func (s *SpannerEntityService) UpdateExperiment(ctx context.Context, table string, columns []string, sql string, mutationer UpdateMutationer) (int, error) {
Expand Down Expand Up @@ -105,7 +106,14 @@ func (s *SpannerEntityService) UpdateExperiment(ctx context.Context, table strin
func (s *SpannerEntityService) update(ctx context.Context, table string, columns []string, rows []*spanner.Row, mutationer UpdateMutationer) error {
var keys spanner.KeySet
for _, v := range rows {
key := mutationer.GetKey(ctx, v)
key, err := mutationer.GetKey(ctx, v)
if err != nil {
return errors.WithStack(err)
}
if key == nil {
// TODO 専用のerrorを作る sinmetal
return fmt.Errorf("key is required")
}
keys = append(key)
}

Expand All @@ -122,7 +130,10 @@ func (s *SpannerEntityService) update(ctx context.Context, table string, columns
if err != nil {
return errors.WithStack(err)
}
m := mutationer.GetMutation(ctx, row)
m, err := mutationer.GetMutation(ctx, row)
if err != nil {
return errors.WithStack(err)
}
ml = append(ml, m)
}

Expand Down
12 changes: 6 additions & 6 deletions spanner/spanner_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,21 @@ var _ shovels.UpdateMutationer = &SampleMutationer{}
const TableName = "TweetHashKey"
const PrimaryKeyName = "Id"

func (m *SampleMutationer) GetKey(ctx context.Context, row *spanner.Row) spanner.Key {
func (m *SampleMutationer) GetKey(ctx context.Context, row *spanner.Row) (spanner.Key, error) {
var id string
if err := row.ColumnByName(PrimaryKeyName, &id); err != nil {
panic(err)
return nil, err
}
return spanner.Key{id}
return spanner.Key{id}, nil
}

func (m *SampleMutationer) GetMutation(ctx context.Context, row *spanner.Row) *spanner.Mutation {
func (m *SampleMutationer) GetMutation(ctx context.Context, row *spanner.Row) (*spanner.Mutation, error) {
var id string
if err := row.ColumnByName(PrimaryKeyName, &id); err != nil {
panic(err)
return nil, err
}

return spanner.Update(TableName, []string{PrimaryKeyName, "Author"}, []interface{}{id, "sinmetal"})
return spanner.Update(TableName, []string{PrimaryKeyName, "Author"}, []interface{}{id, "sinmetal"}), nil
}

func TestSpannerEntityService_UpdateExperiment(t *testing.T) {
Expand Down

0 comments on commit 4d226c9

Please sign in to comment.