スプレッドシート メリット

スプレッドシート デメリット

書いた

https://gist.github.com/somen440/fbabd858157b0cd8966a95849f277d97

struct を受け取って文字列として変換、受け取る struct はスプレッドシートへ展開できる平データ( struct をネストしてない)であることを期待。(ネストされてる場合, reflect.Value.NumField でコケる)。

repository 実装として扱う場合

... Create(ctx context.Context, entity *domain.Postmortem) error {
	id, err := r.c.NextID(ctx)
	if err != nil {
		return err
	}
	entity.ID = id

	m := convPostmortemToORM(entity)
	if err := r.c.Insert(ctx, m); err != nil {
		return err
	}

	util.LoggingDebug(ctx, "repo.Create", logrus.Fields{"id": id})

	return nil
}

... List(ctx context.Context, pageSize int32, pageToken string) ([]*domain.PostmortemSummary, string, error) {
  // todo: pagination
	stList := []Postmortem{}
	if err := r.c.List(ctx, startCol, endCol, &stList); err != nil {
		return nil, "", err
	}
	sort.Slice(stList, func(i, j int) bool {
		return stList[i].DetectionTime.Before(stList[j].DetectionTime)
	})
	util.LoggingDebug(ctx, "List", logrus.Fields{"lis": stList})
	return convPostmortemListToEntitySummary(stList), "", nil
}

だいぶ, 抽象化された気はする完