chore: update project changes
This commit is contained in:
@@ -86,6 +86,42 @@ func (r *JournalRepository) Stats(ctx context.Context) (explorer.Stats, error) {
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
func (r *JournalRepository) SettlementDashboard(ctx context.Context, limit int) (explorer.SettlementStats, []explorer.Settlement, error) {
|
||||
if limit <= 0 || limit > 100 {
|
||||
limit = 12
|
||||
}
|
||||
var stats explorer.SettlementStats
|
||||
if err := r.database.QueryRow(ctx, `SELECT
|
||||
count(*) FILTER (WHERE status='PENDING'),
|
||||
count(*) FILTER (WHERE status='RETRYABLE'),
|
||||
count(*) FILTER (WHERE status='CONFIRMED'),
|
||||
count(*) FILTER (WHERE status='MANUAL_REVIEW')
|
||||
FROM kuknos_settlements`).Scan(&stats.Pending, &stats.Retryable, &stats.Confirmed, &stats.ManualReview); err != nil {
|
||||
return explorer.SettlementStats{}, nil, fmt.Errorf("read settlement stats: %w", err)
|
||||
}
|
||||
rows, err := r.database.Query(ctx, `SELECT id, source_service, source_transaction_id, status,
|
||||
network, transaction_hash, attempts, last_error, updated_at
|
||||
FROM kuknos_settlements ORDER BY updated_at DESC LIMIT $1`, limit)
|
||||
if err != nil {
|
||||
return explorer.SettlementStats{}, nil, fmt.Errorf("list recent settlements: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
settlements := make([]explorer.Settlement, 0, limit)
|
||||
for rows.Next() {
|
||||
var settlement explorer.Settlement
|
||||
if err := rows.Scan(&settlement.ID, &settlement.SourceService, &settlement.SourceTransactionID,
|
||||
&settlement.Status, &settlement.Network, &settlement.TransactionHash, &settlement.Attempts,
|
||||
&settlement.LastError, &settlement.UpdatedAt); err != nil {
|
||||
return explorer.SettlementStats{}, nil, fmt.Errorf("scan recent settlement: %w", err)
|
||||
}
|
||||
settlements = append(settlements, settlement)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return explorer.SettlementStats{}, nil, fmt.Errorf("iterate recent settlements: %w", err)
|
||||
}
|
||||
return stats, settlements, nil
|
||||
}
|
||||
|
||||
func (r *JournalRepository) TopHolders(ctx context.Context, assetLimit, holderLimit int) ([]explorer.Holder, error) {
|
||||
if assetLimit <= 0 || assetLimit > 20 {
|
||||
assetLimit = 5
|
||||
|
||||
Reference in New Issue
Block a user