- Introduced BetStatStore, BranchStatStore, and WalletStatStore interfaces for handling statistics. - Implemented repository methods for fetching and updating bet, branch, and wallet statistics. - Created reporting services for generating interval reports for bets, branches, companies, and wallets. - Enhanced CSV writing functionality to support dynamic struct to CSV conversion. - Added cron jobs for periodic updates of branch and wallet statistics. - Updated wallet handler to include transaction statistics in the response.
57 lines
3.5 KiB
Go
57 lines
3.5 KiB
Go
package ports
|
|
|
|
import (
|
|
"context"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"time"
|
|
)
|
|
|
|
type BetStore interface {
|
|
CreateBet(ctx context.Context, bet domain.CreateBet) (domain.Bet, error)
|
|
CreateBetOutcome(ctx context.Context, outcomes []domain.CreateBetOutcome) (int64, error)
|
|
CreateFlag(ctx context.Context, flag domain.CreateFlagReq) (domain.Flag, error)
|
|
GetBetByID(ctx context.Context, id int64) (domain.GetBet, error)
|
|
GetAllBets(ctx context.Context, filter domain.BetFilter) ([]domain.GetBet, int64, error)
|
|
GetBetByUserID(ctx context.Context, UserID int64) ([]domain.GetBet, error)
|
|
GetBetByFastCode(ctx context.Context, fastcode string) (domain.GetBet, error)
|
|
GetBetOutcomeViewByEventID(ctx context.Context, eventID int64, filter domain.BetOutcomeViewFilter) ([]domain.BetOutcomeViewRes, int64, error)
|
|
GetBetOutcomeByEventID(ctx context.Context, eventID int64, is_filtered bool) ([]domain.BetOutcome, error)
|
|
GetBetOutcomeByBetID(ctx context.Context, betID int64) ([]domain.BetOutcome, error)
|
|
GetBetOutcomeCountByOddID(ctx context.Context, oddID int64) (int64, error)
|
|
GetBetCountByUserID(ctx context.Context, userID int64, outcomesHash string) (int64, error)
|
|
GetBetCountByOutcomesHash(ctx context.Context, outcomesHash string) (int64, error)
|
|
UpdateCashOut(ctx context.Context, id int64, cashedOut bool) error
|
|
UpdateStatus(ctx context.Context, id int64, status domain.OutcomeStatus) error
|
|
UpdateBetOutcomeStatus(ctx context.Context, id int64, status domain.OutcomeStatus) (domain.BetOutcome, error)
|
|
UpdateBetOutcomeStatusByBetID(ctx context.Context, id int64, status domain.OutcomeStatus) (domain.BetOutcome, error)
|
|
UpdateBetOutcomeStatusForEvent(ctx context.Context, eventID int64, status domain.OutcomeStatus) ([]domain.BetOutcome, error)
|
|
UpdateBetOutcomeStatusForOddId(ctx context.Context, oddID int64, status domain.OutcomeStatus) ([]domain.BetOutcome, error)
|
|
BulkUpdateBetOutcomeStatusForOddIds(ctx context.Context, oddID []int64, status domain.OutcomeStatus) error
|
|
GetBetSummary(ctx context.Context, filter domain.ReportFilter) (
|
|
totalStakes domain.Currency,
|
|
totalBets int64,
|
|
activeBets int64,
|
|
totalWins int64,
|
|
totalLosses int64,
|
|
winBalance domain.Currency,
|
|
err error,
|
|
)
|
|
GetBetStats(ctx context.Context, filter domain.ReportFilter) ([]domain.BetStat, error)
|
|
GetSportPopularity(ctx context.Context, filter domain.ReportFilter) (map[time.Time]string, error)
|
|
GetMarketPopularity(ctx context.Context, filter domain.ReportFilter) (map[time.Time]string, error)
|
|
GetExtremeValues(ctx context.Context, filter domain.ReportFilter) (map[time.Time]domain.ExtremeValues, error)
|
|
GetCustomerBetActivity(ctx context.Context, filter domain.ReportFilter) ([]domain.CustomerBetActivity, error)
|
|
GetCustomerPreferences(ctx context.Context, filter domain.ReportFilter) (map[int64]domain.CustomerPreferences, error)
|
|
GetBranchBetActivity(ctx context.Context, filter domain.ReportFilter) ([]domain.BranchBetActivity, error)
|
|
GetSportBetActivity(ctx context.Context, filter domain.ReportFilter) ([]domain.SportBetActivity, error)
|
|
GetSportDetails(ctx context.Context, filter domain.ReportFilter) (map[string]string, error)
|
|
GetSportMarketPopularity(ctx context.Context, filter domain.ReportFilter) (map[string]string, error)
|
|
|
|
GetBetsForCashback(ctx context.Context) ([]domain.GetBet, error)
|
|
UpdateBetWithCashback(ctx context.Context, betID int64, cashbackStatus bool) error
|
|
}
|
|
|
|
type BetStatStore interface {
|
|
GetBetStatsByInterval(ctx context.Context, filter domain.BetStatsByIntervalFilter) ([]domain.BetStatsByInterval, error)
|
|
}
|