Monorepo for Tangled tangled.org
6

Configure Feed

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

appview/db/repos: calculate the fork count of a repo

Signed-off-by: Will <did:plc:dadhhalkfcq3gucaq25hjqon>

author willdot.net committer
Tangled
date (May 11, 2026, 2:32 PM +0300) commit 25cf9b0a parent 9c46b3b9 change-id qsyzyyom
+44
+43
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)), ", ") 375 + forkArgs := make([]any, len(repoMap)) 376 + repoDidMap := make(map[string]syntax.ATURI) 377 + i = 0 378 + for aturi, r := range repoMap { 379 + forkArgs[i] = r.RepoDid 380 + repoDidMap[r.RepoDid] = aturi 381 + i++ 382 + } 383 + 384 + forksCountQuery := fmt.Sprintf( 385 + `select source, count(1) from repos where source in (%s) group by source`, 386 + forksInClause, 387 + ) 388 + 389 + rows, err = e.Query(forksCountQuery, forkArgs...) 390 + if err != nil { 391 + return nil, fmt.Errorf("failed to execute fork-count query: %w", err) 392 + } 393 + defer rows.Close() 394 + 395 + for rows.Next() { 396 + var repodid string 397 + var count int 398 + if err := rows.Scan(&repodid, &count); err != nil { 399 + log.Println("err", "err", err) 400 + continue 401 + } 402 + 403 + atURI, ok := repoDidMap[repodid] 404 + if !ok { 405 + continue 406 + } 407 + 408 + if r, ok := repoMap[atURI]; ok { 409 + r.RepoStats.ForkCount = count 410 + } 411 + } 412 + if err = rows.Err(); err != nil { 413 + return nil, fmt.Errorf("failed to execute fork-count query: %w", err) 414 + } 415 + 373 416 var repos []models.Repo 374 417 for _, r := range repoMap { 375 418 repos = append(repos, *r)
+1
appview/models/repo.go
··· 104 104 StarCount int 105 105 IssueCount IssueCount 106 106 PullCount PullCount 107 + ForkCount int 107 108 } 108 109 109 110 type IssueCount struct {