Monorepo for Tangled tangled.org
5

Configure Feed

Select the types of activity you want to include in your feed.

appview/db: fix fork counts for repos with no DIDs

Signed-off-by: oppiliappan <me@oppi.li>

author
oppiliappan
committer
Tangled
date (May 15, 2026, 9:28 PM +0300) commit 879a5a66 parent 2399588d change-id poysnyql
+32 -22
+32 -22
appview/db/repos.go
··· 370 370 return nil, fmt.Errorf("failed to execute pulls-count query: %w", err) 371 371 } 372 372 373 - // get forks 374 - forksInClause := strings.TrimSuffix(strings.Repeat("?, ", len(repoMap)), ", ") 373 + // get forks — only query repos with a non-empty repo_did, since source 374 + // stores the upstream's repo_did and an empty string would match all 375 + var forksArgs []any 376 + for _, r := range repoMap { 377 + if r.RepoDid != "" { 378 + forksArgs = append(forksArgs, r.RepoDid) 379 + } 380 + } 375 381 376 - forksCountQuery := fmt.Sprintf( 377 - `select source, count(1) from repos where source in (%s) group by source`, 378 - forksInClause, 379 - ) 382 + if len(forksArgs) > 0 { 383 + forksInClause := strings.TrimSuffix(strings.Repeat("?, ", len(forksArgs)), ", ") 380 384 381 - rows, err = e.Query(forksCountQuery, args...) 382 - if err != nil { 383 - return nil, fmt.Errorf("failed to execute fork-count query: %w", err) 384 - } 385 - defer rows.Close() 385 + forksCountQuery := fmt.Sprintf( 386 + `select source, count(1) from repos where source in (%s) group by source`, 387 + forksInClause, 388 + ) 386 389 387 - for rows.Next() { 388 - var repodid string 389 - var count int 390 - if err := rows.Scan(&repodid, &count); err != nil { 391 - log.Println("err", "err", err) 392 - continue 390 + rows, err = e.Query(forksCountQuery, forksArgs...) 391 + if err != nil { 392 + return nil, fmt.Errorf("failed to execute fork-count query: %w", err) 393 393 } 394 + defer rows.Close() 394 395 395 - if r, ok := repoMap[repodid]; ok { 396 - r.RepoStats.ForkCount = count 396 + for rows.Next() { 397 + var repodid string 398 + var count int 399 + if err := rows.Scan(&repodid, &count); err != nil { 400 + log.Println("failed to scan fork count", "err", err) 401 + continue 402 + } 403 + 404 + if r, ok := repoMap[repodid]; ok { 405 + r.RepoStats.ForkCount = count 406 + } 407 + } 408 + if err = rows.Err(); err != nil { 409 + return nil, fmt.Errorf("failed to execute fork-count query: %w", err) 397 410 } 398 - } 399 - if err = rows.Err(); err != nil { 400 - return nil, fmt.Errorf("failed to execute fork-count query: %w", err) 401 411 } 402 412 403 413 var repos []models.Repo