Chimera Settle service
This commit is contained in:
53
api/gateway/chsettle/storage/storage.go
Normal file
53
api/gateway/chsettle/storage/storage.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/tech/sendico/gateway/chsettle/storage/model"
|
||||
"github.com/tech/sendico/pkg/merrors"
|
||||
)
|
||||
|
||||
var ErrDuplicate = merrors.DataConflict("payment gateway storage: duplicate record")
|
||||
|
||||
type Repository interface {
|
||||
Payments() PaymentsStore
|
||||
TelegramConfirmations() TelegramConfirmationsStore
|
||||
PendingConfirmations() PendingConfirmationsStore
|
||||
TreasuryRequests() TreasuryRequestsStore
|
||||
TreasuryTelegramUsers() TreasuryTelegramUsersStore
|
||||
}
|
||||
|
||||
type PaymentsStore interface {
|
||||
FindByIdempotencyKey(ctx context.Context, key string) (*model.PaymentRecord, error)
|
||||
FindByOperationRef(ctx context.Context, key string) (*model.PaymentRecord, error)
|
||||
Upsert(ctx context.Context, record *model.PaymentRecord) error
|
||||
}
|
||||
|
||||
type TelegramConfirmationsStore interface {
|
||||
Upsert(ctx context.Context, record *model.TelegramConfirmation) error
|
||||
}
|
||||
|
||||
type PendingConfirmationsStore interface {
|
||||
Upsert(ctx context.Context, record *model.PendingConfirmation) error
|
||||
FindByRequestID(ctx context.Context, requestID string) (*model.PendingConfirmation, error)
|
||||
FindByMessageID(ctx context.Context, messageID string) (*model.PendingConfirmation, error)
|
||||
MarkClarified(ctx context.Context, requestID string) error
|
||||
AttachMessage(ctx context.Context, requestID string, messageID string) error
|
||||
DeleteByRequestID(ctx context.Context, requestID string) error
|
||||
ListExpired(ctx context.Context, now time.Time, limit int64) ([]model.PendingConfirmation, error)
|
||||
}
|
||||
|
||||
type TreasuryRequestsStore interface {
|
||||
Create(ctx context.Context, record *model.TreasuryRequest) error
|
||||
FindByRequestID(ctx context.Context, requestID string) (*model.TreasuryRequest, error)
|
||||
FindActiveByLedgerAccountID(ctx context.Context, ledgerAccountID string) (*model.TreasuryRequest, error)
|
||||
FindDueByStatus(ctx context.Context, statuses []model.TreasuryRequestStatus, now time.Time, limit int64) ([]model.TreasuryRequest, error)
|
||||
ClaimScheduled(ctx context.Context, requestID string) (bool, error)
|
||||
Update(ctx context.Context, record *model.TreasuryRequest) error
|
||||
ListByAccountAndStatuses(ctx context.Context, ledgerAccountID string, statuses []model.TreasuryRequestStatus, dayStart, dayEnd time.Time) ([]model.TreasuryRequest, error)
|
||||
}
|
||||
|
||||
type TreasuryTelegramUsersStore interface {
|
||||
FindByTelegramUserID(ctx context.Context, telegramUserID string) (*model.TreasuryTelegramUser, error)
|
||||
}
|
||||
Reference in New Issue
Block a user