MCPcopy
hub / github.com/tailscale/golink / LoadStats

Method LoadStats

db.go:156–185  ·  view source on GitHub ↗

LoadStats returns click stats for links.

()

Source from the content-addressed store, hash-verified

154
155// LoadStats returns click stats for links.
156func (s *SQLiteDB) LoadStats() (ClickStats, error) {
157 allLinks, err := s.LoadAll()
158 if err != nil {
159 return nil, err
160 }
161 linkmap := make(map[string]string, len(allLinks)) // map ID => Short
162 for _, link := range allLinks {
163 linkmap[linkID(link.Short)] = link.Short
164 }
165
166 s.mu.RLock()
167 defer s.mu.RUnlock()
168
169 rows, err := s.db.Query("SELECT ID, sum(Clicks) FROM Stats GROUP BY ID")
170 if err != nil {
171 return nil, err
172 }
173 stats := make(map[string]int)
174 for rows.Next() {
175 var id string
176 var clicks int
177 err := rows.Scan(&id, &clicks)
178 if err != nil {
179 return nil, err
180 }
181 short := linkmap[id]
182 stats[short] = clicks
183 }
184 return stats, rows.Err()
185}
186
187// SaveStats records click stats for links. The provided map includes
188// incremental clicks that have occurred since the last time SaveStats

Callers 2

initStatsFunction · 0.80

Calls 2

LoadAllMethod · 0.95
linkIDFunction · 0.85

Tested by 1