51 lines
2.7 KiB
Go
51 lines
2.7 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"overnight-trading-bot/internal/domain"
|
|
)
|
|
|
|
type Repository interface {
|
|
RunInTx(ctx context.Context, fn func(ctx context.Context, repo Repository) error) error
|
|
|
|
UpsertInstrument(ctx context.Context, instrument domain.Instrument) error
|
|
ReplaceInstrument(ctx context.Context, oldInstrumentUID string, instrument domain.Instrument) error
|
|
ListInstruments(ctx context.Context, includeDisabled bool) ([]domain.Instrument, error)
|
|
QuarantineInstrument(ctx context.Context, instrumentUID, reason string) error
|
|
|
|
UpsertDailyCandles(ctx context.Context, candles []domain.Candle) error
|
|
ListDailyCandles(ctx context.Context, instrumentUID string, from, to time.Time) ([]domain.Candle, error)
|
|
UpsertMinuteCandles(ctx context.Context, candles []domain.Candle) error
|
|
ListMinuteCandles(ctx context.Context, instrumentUID string, from, to time.Time) ([]domain.Candle, error)
|
|
|
|
UpsertFeature(ctx context.Context, feature domain.FeatureSet) error
|
|
GetFeature(ctx context.Context, instrumentUID string, tradeDate time.Time) (domain.FeatureSet, error)
|
|
|
|
UpsertSignal(ctx context.Context, signal domain.Signal) error
|
|
ListSignals(ctx context.Context, tradeDate time.Time) ([]domain.Signal, error)
|
|
|
|
UpsertOrder(ctx context.Context, order domain.Order) error
|
|
UpdateOrderStatus(ctx context.Context, clientOrderID string, status domain.OrderStatus, filledLots int64, rawJSON string) error
|
|
ListActiveOrders(ctx context.Context, accountIDHash string) ([]domain.Order, error)
|
|
ListOrders(ctx context.Context, accountIDHash string, from, to time.Time) ([]domain.Order, error)
|
|
|
|
UpsertPosition(ctx context.Context, position domain.Position) error
|
|
ListOpenPositions(ctx context.Context, accountIDHash string) ([]domain.Position, error)
|
|
ListPositions(ctx context.Context, accountIDHash string, from, to time.Time) ([]domain.Position, error)
|
|
|
|
InsertRiskEvent(ctx context.Context, event domain.RiskEvent) error
|
|
GetFreeOrdersSent(ctx context.Context, tradeDate time.Time, instrumentUID string) (int, error)
|
|
IncrementFreeOrders(ctx context.Context, tradeDate time.Time, instrumentUID string, delta int) error
|
|
ReserveFreeOrders(ctx context.Context, tradeDate time.Time, instrumentUID string, delta int, limit int) error
|
|
|
|
GetSystemState(ctx context.Context) (domain.SystemState, bool, string, error)
|
|
SaveSystemState(ctx context.Context, state domain.SystemState, mode domain.Mode, halted bool, reason string, contextJSON string) error
|
|
Unhalt(ctx context.Context, reason string) error
|
|
WasDailyReportSent(ctx context.Context, reportDate time.Time, accountIDHash string) (bool, error)
|
|
MarkDailyReportSent(ctx context.Context, reportDate time.Time, accountIDHash string) error
|
|
|
|
InsertReconciliation(ctx context.Context, ts time.Time, diffJSON string, hasDiff bool) error
|
|
}
|