internal/store/importmarkers.go

v1.18.1
gitbay/internal/store/importmarkers.go history · blame · raw

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}