Slide 12
Slide 12 text
DataSource
■ Infraを活用し、Repositoryが要求するデータの取
得、永続化を達成する責務
● MySQLのtableや、Memcachedのkey、
Elasticsearchのtypeと1:1の関係
■ 該当するミドルウェア固有の操作名に沿った命名規則
type ds struct {
infraMySQL infra.MySQL
}
func (ds ds) Update(ctx context.Context, users []*dsmysql.RecommendUserRow) error {
txn, err := ds.infraMySQL.GetTxn(ctx, "BASE_W") // BASE_W はデータベース系統の名前
_, err = txn.ExecContext(ctx, "delete from recommend_user")
_, err = txn.ExecContext(ctx, "insert into recommend_user ...")
return err
}
func (ds ds) Select(ctx context.Context, limit int) ([]*dsmysql.RecommendUserRow, error) {
return ds.selectRecommendUsers(ctx, limit, repository.DB_R)
}