internal/store/importmarkers.go
26 lines · 815 bytes
1package store
2
3import (
4 "database/sql"
5 "errors"
6)
7
8// ImportMarker returns the stored value for an import progress key, and
9// whether it exists. Markers make history imports resumable: items and
10// comments already imported are skipped on re-run.
11func (s *Store) ImportMarker(repoID int64, key string) (string, bool, error) {
12 var v string
13 err := s.DB.QueryRow(
14 "SELECT value FROM import_markers WHERE repo_id = ? AND key = ?", repoID, key).Scan(&v)
15 if errors.Is(err, sql.ErrNoRows) {
16 return "", false, nil
17 }
18 return v, err == nil, err
19}
20
21func (s *Store) SetImportMarker(repoID int64, key, value string) error {
22 _, err := s.DB.Exec(
23 "INSERT INTO import_markers (repo_id, key, value) VALUES (?, ?, ?) ON CONFLICT (repo_id, key) DO UPDATE SET value = excluded.value",
24 repoID, key, value)
25 return err
26}