DeleteStale removes items of a kind whose last_seen_at is older than the given timestamp. Used after a refresh to prune resources that no longer exist upstream. installed_targets is preserved on surviving rows because the upsert no longer overwrites install status.
(ctx context.Context, kind, before string)
| 134 | // upstream. installed_targets is preserved on surviving rows because the upsert |
| 135 | // no longer overwrites install status. |
| 136 | func (s *Store) DeleteStale(ctx context.Context, kind, before string) (int, error) { |
| 137 | if err := s.Init(ctx); err != nil { |
| 138 | return 0, err |
| 139 | } |
| 140 | db, err := s.open() |
| 141 | if err != nil { |
| 142 | return 0, err |
| 143 | } |
| 144 | defer db.Close() |
| 145 | res, err := db.ExecContext(ctx, `DELETE FROM metadata_items WHERE kind = ? AND last_seen_at < ?`, kind, before) |
| 146 | if err != nil { |
| 147 | return 0, fmt.Errorf("metadata: delete stale: %w", err) |
| 148 | } |
| 149 | n, _ := res.RowsAffected() |
| 150 | return int(n), nil |
| 151 | } |
| 152 | |
| 153 | // itemColumns is the canonical column list selected from metadata_items. |
| 154 | const itemColumns = `id, kind, name, description, source_id, repo_owner, repo_name, repo_branch, |
no test coverage detected