service backend
This commit is contained in:
53
api/fx/storage/storage.go
Normal file
53
api/fx/storage/storage.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/tech/sendico/fx/storage/model"
|
||||
)
|
||||
|
||||
type storageError string
|
||||
|
||||
func (e storageError) Error() string {
|
||||
return string(e)
|
||||
}
|
||||
|
||||
var (
|
||||
ErrQuoteExpired = storageError("fx.storage: quote expired")
|
||||
ErrQuoteConsumed = storageError("fx.storage: quote consumed")
|
||||
ErrQuoteNotFirm = storageError("fx.storage: quote is not firm")
|
||||
ErrQuoteConsumptionRace = storageError("fx.storage: quote consumption collision")
|
||||
)
|
||||
|
||||
type Repository interface {
|
||||
Ping(ctx context.Context) error
|
||||
Rates() RatesStore
|
||||
Quotes() QuotesStore
|
||||
Pairs() PairStore
|
||||
Currencies() CurrencyStore
|
||||
}
|
||||
|
||||
type RatesStore interface {
|
||||
UpsertSnapshot(ctx context.Context, snapshot *model.RateSnapshot) error
|
||||
LatestSnapshot(ctx context.Context, pair model.CurrencyPair, provider string) (*model.RateSnapshot, error)
|
||||
}
|
||||
|
||||
type QuotesStore interface {
|
||||
Issue(ctx context.Context, quote *model.Quote) error
|
||||
GetByRef(ctx context.Context, quoteRef string) (*model.Quote, error)
|
||||
Consume(ctx context.Context, quoteRef, ledgerTxnRef string, when time.Time) (*model.Quote, error)
|
||||
ExpireIssuedBefore(ctx context.Context, cutoff time.Time) (int, error)
|
||||
}
|
||||
|
||||
type PairStore interface {
|
||||
ListEnabled(ctx context.Context) ([]*model.Pair, error)
|
||||
Get(ctx context.Context, pair model.CurrencyPair) (*model.Pair, error)
|
||||
Upsert(ctx context.Context, p *model.Pair) error
|
||||
}
|
||||
|
||||
type CurrencyStore interface {
|
||||
Get(ctx context.Context, code string) (*model.Currency, error)
|
||||
List(ctx context.Context, codes ...string) ([]*model.Currency, error)
|
||||
Upsert(ctx context.Context, currency *model.Currency) error
|
||||
}
|
||||
Reference in New Issue
Block a user