chore: update project changes

This commit is contained in:
2026-09-21 15:33:47 +03:30
parent f7366a1985
commit 810448b6e7
8 changed files with 1459 additions and 810 deletions
@@ -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