diff options
Diffstat (limited to 'internal/db/sqlite/errors.go')
-rw-r--r-- | internal/db/sqlite/errors.go | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/internal/db/sqlite/errors.go b/internal/db/sqlite/errors.go index b07b026de..f814fa8a4 100644 --- a/internal/db/sqlite/errors.go +++ b/internal/db/sqlite/errors.go @@ -15,7 +15,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. -//go:build !wasmsqlite3 +//go:build !moderncsqlite3 package sqlite @@ -23,9 +23,7 @@ import ( "database/sql/driver" "fmt" - "modernc.org/sqlite" - sqlite3 "modernc.org/sqlite/lib" - + "github.com/ncruces/go-sqlite3" "github.com/superseriousbusiness/gotosocial/internal/db" ) @@ -33,30 +31,30 @@ import ( // handle conversion to any of our common db types. func processSQLiteError(err error) error { // Attempt to cast as sqlite error. - sqliteErr, ok := err.(*sqlite.Error) + sqliteErr, ok := err.(*sqlite3.Error) if !ok { return err } // Handle supplied error code: - switch sqliteErr.Code() { - case sqlite3.SQLITE_CONSTRAINT_UNIQUE, - sqlite3.SQLITE_CONSTRAINT_PRIMARYKEY: + switch sqliteErr.ExtendedCode() { + case sqlite3.CONSTRAINT_UNIQUE, + sqlite3.CONSTRAINT_PRIMARYKEY: return db.ErrAlreadyExists - // Busy should be very rare, but - // on busy tell the database to close - // the connection, re-open and re-attempt - // which should give a necessary timeout. - case sqlite3.SQLITE_BUSY, - sqlite3.SQLITE_BUSY_RECOVERY, - sqlite3.SQLITE_BUSY_SNAPSHOT: + // Busy should be very rare, but on + // busy tell the database to close the + // connection, re-open and re-attempt + // which should give necessary timeout. + case sqlite3.BUSY_RECOVERY, + sqlite3.BUSY_SNAPSHOT: return driver.ErrBadConn } // Wrap the returned error with the code and // extended code for easier debugging later. - return fmt.Errorf("%w (code=%d)", err, + return fmt.Errorf("%w (code=%d extended=%d)", err, sqliteErr.Code(), + sqliteErr.ExtendedCode(), ) } |