store

package
v0.0.0-...-0412854 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

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 (
	Tasks = &TaskStore{Tasks: map[entity.TaskID]*entity.Task{}}

	ErrNotFound = errors.New("not found")
)
View Source
var (
	ErrAlreadyEntry = errors.New("duplicate entry")
)

Functions

func New

func New(ctx context.Context, cfg *config.Config) (*sqlx.DB, func(), error)

MySQLへのコネクションを確立して返す

Types

type Beginner

type Beginner interface {
	BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error)
}

type Execer

type Execer interface {
	ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)
	NamedExecContext(ctx context.Context, query string, arg interface{}) (sql.Result, error)
}

書き込み系の操作

type Preparer

type Preparer interface {
	PreparexContext(ctx context.Context, query string) (*sqlx.Stmt, 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

type Repository struct {
	Clocker clock.Clocker
}

RDBMSに対する永続化操作を一つのRepository構造体のメソッドとして実装するメリット 1. 複数のテーブルを一つの型のメソッドで操作できる 2. DIを利用する場合、一つの型にまとまっていたほうが取り回しがしやすい

func (*Repository) AddTask

func (r *Repository) AddTask(
	ctx context.Context, db Execer, t *entity.Task,
) error

func (*Repository) ListTasks

func (r *Repository) ListTasks(
	ctx context.Context, db Queryer,
) (entity.Tasks, error)

func (*Repository) RegisterUser

func (r *Repository) RegisterUser(ctx context.Context, db Execer, u *entity.User) error

type TaskStore

type TaskStore struct {
	LastID entity.TaskID
	Tasks  map[entity.TaskID]*entity.Task
}

func (*TaskStore) Add

func (ts *TaskStore) Add(t *entity.Task) (entity.TaskID, error)

func (*TaskStore) All

func (ts *TaskStore) All() []*entity.Task

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL