package domain import ( "time" dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db" ) type WalletStat struct { IntervalStart time.Time WalletID int64 WalletUserID int64 WalletUserFirstName string WalletUserLastName string WalletType string NumberOfTransactions int64 TotalTransactions Currency NumberOfDeposits int64 TotalDepositsAmount Currency NumberOfWithdraws int64 TotalWithdrawsAmount Currency NumberOfTransfers int64 TotalTransfersAmount Currency UpdatedAt time.Time } type WalletStatRes struct { IntervalStart time.Time `json:"interval_start"` WalletID int64 `json:"wallet_id"` WalletUserID int64 `json:"wallet_user_id"` WalletUserFirstName string `json:"wallet_user_first_name"` WalletUserLastName string `json:"wallet_user_last_name"` WalletType string `json:"wallet_type"` NumberOfTransactions int64 `json:"number_of_transactions"` TotalTransactions float32 `json:"total_transactions"` NumberOfDeposits int64 `json:"number_of_deposits"` TotalDepositsAmount float32 `json:"total_deposits_amount"` NumberOfWithdraws int64 `json:"number_of_withdraws"` TotalWithdrawsAmount float32 `json:"total_withdraws_amount"` NumberOfTransfers int64 `json:"number_of_transfers"` TotalTransfersAmount float32 `json:"total_transfers_amount"` UpdatedAt time.Time `json:"updated_at"` } type WalletStatFilter struct { Interval ValidDateInterval UserID ValidInt64 } func ConvertDBWalletStats(stats dbgen.WalletStat) WalletStat { return WalletStat{ IntervalStart: stats.IntervalStart.Time, WalletID: stats.WalletID, WalletUserID: stats.WalletUserID, WalletUserFirstName: stats.WalletUserFirstName, WalletUserLastName: stats.WalletUserLastName, WalletType: stats.WalletType, NumberOfTransactions: stats.NumberOfTransactions, TotalTransactions: Currency(stats.TotalTransactions), NumberOfDeposits: stats.NumberOfDeposits, TotalDepositsAmount: Currency(stats.TotalDepositsAmount), NumberOfWithdraws: stats.NumberOfWithdraws, TotalWithdrawsAmount: Currency(stats.TotalWithdrawsAmount), NumberOfTransfers: stats.NumberOfTransfers, TotalTransfersAmount: Currency(stats.TotalTransfersAmount), UpdatedAt: stats.UpdatedAt.Time, } } func ConvertDBWalletStatsList(stats []dbgen.WalletStat) []WalletStat { result := make([]WalletStat, len(stats)) for i, stat := range stats { result[i] = ConvertDBWalletStats(stat) } return result } func ConvertDBWalletStatsByInterval(stats dbgen.GetWalletStatsRow) WalletStat { return WalletStat{ IntervalStart: stats.IntervalStart.Time, WalletID: stats.WalletID, WalletUserID: stats.WalletUserID, WalletUserFirstName: stats.WalletUserFirstName, WalletUserLastName: stats.WalletUserLastName, WalletType: stats.WalletType, NumberOfTransactions: stats.NumberOfTransactions, TotalTransactions: Currency(stats.TotalTransactions), NumberOfDeposits: stats.NumberOfDeposits, TotalDepositsAmount: Currency(stats.TotalDepositsAmount), NumberOfWithdraws: stats.NumberOfWithdraws, TotalWithdrawsAmount: Currency(stats.TotalWithdrawsAmount), NumberOfTransfers: stats.NumberOfTransfers, TotalTransfersAmount: Currency(stats.TotalTransfersAmount), UpdatedAt: stats.UpdatedAt.Time, } } func ConvertDBWalletStatsByIntervalList(stats []dbgen.GetWalletStatsRow) []WalletStat { result := make([]WalletStat, len(stats)) for i, stat := range stats { result[i] = ConvertDBWalletStatsByInterval(stat) } return result }