25 lines
1.0 KiB
Go
25 lines
1.0 KiB
Go
package ports
|
|
|
|
import (
|
|
"context"
|
|
|
|
"galaxy/gamemaster/internal/domain/operation"
|
|
)
|
|
|
|
//go:generate go run go.uber.org/mock/mockgen -destination=../adapters/mocks/mock_operationlog.go -package=mocks galaxy/gamemaster/internal/ports OperationLogStore
|
|
|
|
// OperationLogStore stores append-only audit entries for every
|
|
// operation Game Master performs. Adapters must persist entry verbatim
|
|
// and return the generated bigserial id from Append.
|
|
type OperationLogStore interface {
|
|
// Append inserts entry into the operation log and returns the
|
|
// generated bigserial id. Adapters validate entry through
|
|
// operation.OperationEntry.Validate before touching the store.
|
|
Append(ctx context.Context, entry operation.OperationEntry) (id int64, err error)
|
|
|
|
// ListByGame returns the most recent entries for gameID, ordered
|
|
// by started_at descending and capped by limit. A non-positive
|
|
// limit is rejected as invalid input by adapters.
|
|
ListByGame(ctx context.Context, gameID string, limit int) ([]operation.OperationEntry, error)
|
|
}
|