add specific error handling for unique constraint vs other errors

This commit is contained in:
Miloš Jovanović 2026-09-08 10:20:46 +02:00
parent ad551edcb0
commit ace7f7b293

View file

@ -2,7 +2,9 @@ package main
import ( import (
"database/sql" "database/sql"
_ "modernc.org/sqlite" "log"
"modernc.org/sqlite"
sqlite3 "modernc.org/sqlite/lib"
) )
const schema = ` const schema = `
@ -40,7 +42,11 @@ func (s *SQLStore) AcquireLock(chapterID int64, dept string, repID int64) (int64
`INSERT INTO runs (chapter_id, department, rep_user_id, status) `INSERT INTO runs (chapter_id, department, rep_user_id, status)
VALUES (?, ?, ?, 'running')`, chapterID, dept, repID) VALUES (?, ?, ?, 'running')`, chapterID, dept, repID)
if err != nil { if err != nil {
return 0, ErrLocked // refine: only on constraint violation var serr *sqLite.Error
if errors.As(err, &serr) && serr.Code() == sqlite3.SQLITE_CONSTRAINT_UNIQUE {
return 0, ErrLocked
}
return 0, ErrLocked
} }
return res.LastInsertId() return res.LastInsertId()
} }