Documentation ¶
Index ¶
- Constants
- Variables
- func New(ctx context.Context, cfg *config.Config) (*sqlx.DB, func(), error)
- type Beginner
- type Execer
- type ExerciseStore
- type KVS
- type Preparer
- type Queryer
- type Repository
- func (r *Repository) AddExercise(ctx context.Context, db Execer, e *entity.Exercise) error
- func (r *Repository) DeleteExercise(ctx context.Context, db Execer, id entity.ExerciseID) (*int64, error)
- func (r *Repository) GetExercise(ctx context.Context, db Queryer, id entity.ExerciseID) (*entity.Exercise, error)
- func (r *Repository) GetUser(ctx context.Context, db Queryer, name string) (*entity.User, error)
- func (r *Repository) ListExercises(ctx context.Context, db Queryer, id entity.UserID) (entity.Exercises, error)
- func (r *Repository) RegisterUser(ctx context.Context, db Execer, u *entity.User) error
- func (r *Repository) UpdateExercise(ctx context.Context, db Execer, e *entity.Exercise) (*int64, error)
Constants ¶
View Source
const ( // ErrCodeMySQLDuplicateEntryはMySQL系のDUPLICATEエラーコード // https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html // Error number: 1062; Symbol: ER_DUP_ENTRY; SQLSTATE: 23000 ErrCodeMySQLDuplicateEntry = 1062 )
Variables ¶
View Source
var ( Exercises = &ExerciseStore{Exercises: map[entity.ExerciseID]*entity.Exercise{}} ErrNotFound = errors.New("not found") )
View Source
var (
ErrAlreadyEntry = errors.New("duplicate entry")
)
Functions ¶
Types ¶
type ExerciseStore ¶
type ExerciseStore struct { // 動作確認用の仮実装のため、あえてexport LastID entity.ExerciseID Exercises map[entity.ExerciseID]*entity.Exercise }
Exercise.IDフィールドはRDBMSによって、割り当てられることを想定している LastIDフィールドをその代用
func (*ExerciseStore) Add ¶
func (es *ExerciseStore) Add(e *entity.Exercise) (entity.ExerciseID, error)
type Queryer ¶
type Queryer interface { Preparer QueryxContext(ctx context.Context, query string, args ...any) (*sqlx.Rows, error) QueryRowxContext(ctx context.Context, query string, args ...any) *sqlx.Row GetContext(ctx context.Context, dest interface{}, query string, args ...any) error SelectContext(ctx context.Context, dest interface{}, query string, args ...any) error }
type Repository ¶
ClockerフィールドはSQL実行時に時刻情報を制御し、 永続化を行う際の時刻を固定化する
func (*Repository) AddExercise ¶
エクササイズを保存する 引数として受け取った*entity.Exercise型のIDフィールドを更新することで 呼び出し元にRDBMSより発行されたIDを伝える
func (*Repository) DeleteExercise ¶
func (r *Repository) DeleteExercise( ctx context.Context, db Execer, id entity.ExerciseID, ) (*int64, error)
エクササイズを削除する
func (*Repository) GetExercise ¶
func (r *Repository) GetExercise( ctx context.Context, db Queryer, id entity.ExerciseID, ) (*entity.Exercise, error)
エクササイズを取得する
func (*Repository) ListExercises ¶
func (r *Repository) ListExercises( ctx context.Context, db Queryer, id entity.UserID, ) (entity.Exercises, error)
引数で受け取ったユーザーIDのエクササイズを取得する
func (*Repository) RegisterUser ¶
ユーザーを登録する 引数として受け取った*entity.User型のIDフィールドを更新することで 呼び出し元にRDBMSより発行されたIDを伝える
func (*Repository) UpdateExercise ¶
func (r *Repository) UpdateExercise( ctx context.Context, db Execer, e *entity.Exercise, ) (*int64, error)
エクササイズを更新する
Click to show internal directories.
Click to hide internal directories.