- 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.
39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/ports"
|
|
)
|
|
|
|
// Interface for creating new branch stats store
|
|
func NewBranchStatStore(s *Store) ports.BranchStatStore { return s }
|
|
|
|
func (s *Store) UpdateBranchStats(ctx context.Context) error {
|
|
return s.queries.UpdateBranchStats(ctx)
|
|
}
|
|
|
|
func (s *Store) GetBranchStatByID(ctx context.Context, branchID int64) ([]domain.BranchStat, error) {
|
|
stats, err := s.queries.GetBranchStatsByID(ctx, branchID)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return domain.ConvertDBBranchStatsList(stats), nil
|
|
}
|
|
|
|
func (s *Store) GetBranchStatsByInterval(ctx context.Context, filter domain.BranchStatFilter) ([]domain.BranchStat, error) {
|
|
stats, err := s.queries.GetBranchStats(ctx, dbgen.GetBranchStatsParams{
|
|
Interval: filter.Interval.ToPG(),
|
|
BranchID: filter.BranchID.ToPG(),
|
|
})
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return domain.ConvertDBBranchStatsByIntervalList(stats), nil
|
|
}
|