crypto_alert_bot/internal/repository/repository.go

40 lines
2 KiB
Go
Raw Normal View History

2026-02-25 20:55:10 +03:00
package repository
import (
"context"
2026-02-26 16:02:11 +03:00
"time"
2026-02-25 20:55:10 +03:00
"gitea.computernetthings.ru/yash/crypto_alert_bot/internal/entities"
2026-02-25 22:48:23 +03:00
"github.com/shopspring/decimal"
2026-02-25 20:55:10 +03:00
)
type Storage interface {
SaveUser(ctx context.Context, user *entities.User) (entities.UserID, error)
UserByID(ctx context.Context, id entities.UserID) (*entities.User, error)
UserByTelegramID(ctx context.Context, tgID entities.TelegramID) (*entities.User, error)
2026-04-28 11:42:07 +03:00
// InstrumentList returns instruments visible to userID: global ones plus any
// the user has explicitly added.
InstrumentList(ctx context.Context, userID entities.UserID, offset, limit int) ([]entities.Instrument, error)
// CreateInstrument upserts the instrument (and its currencies) and returns the ID,
// whether the row was just created or already existed.
CreateInstrument(ctx context.Context, instrument *entities.Instrument) (entities.InstrumentID, error)
2026-04-28 11:42:07 +03:00
// AddUserInstrument links an instrument to a user (idempotent).
AddUserInstrument(ctx context.Context, userID entities.UserID, instrumentID entities.InstrumentID) error
// RemoveUserInstrument removes a user's link to a non-global instrument.
RemoveUserInstrument(ctx context.Context, userID entities.UserID, instrumentID entities.InstrumentID) error
2026-02-25 22:48:23 +03:00
SaveAlert(ctx context.Context, alert *entities.Alert) (entities.AlertID, error)
2026-02-25 23:52:21 +03:00
AllActiveAlerts(ctx context.Context) ([]entities.Alert, error)
2026-02-25 22:48:23 +03:00
AlertByID(ctx context.Context, id entities.AlertID) (*entities.Alert, error)
AlertsByUserID(ctx context.Context, userID entities.UserID, offset, limit int) ([]entities.Alert, error)
DeleteAlert(ctx context.Context, id entities.AlertID) error
2026-02-25 23:52:21 +03:00
DisableAlert(ctx context.Context, id entities.AlertID) error
2026-02-25 22:48:23 +03:00
UpdateAlertPrice(ctx context.Context, id entities.AlertID, price decimal.Decimal) error
2026-02-26 16:02:11 +03:00
// GetLastAlertCheck returns the time of the last completed alert check.
// Returns zero time if no check has been recorded yet.
GetLastAlertCheck(ctx context.Context) (time.Time, error)
SetLastAlertCheck(ctx context.Context, t time.Time) error
2026-02-25 20:55:10 +03:00
}