summaryrefslogtreecommitdiff
path: root/internal/db/pg/util.go
blob: 17c09b7206ba7c283e1f51826ab3efefeac2f9bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package pg

import (
	"strings"

	"github.com/go-pg/pg/v10"
	"github.com/superseriousbusiness/gotosocial/internal/db"
)

// processErrorResponse parses the given error and returns an appropriate DBError.
func processErrorResponse(err error) db.Error {
	switch err {
	case nil:
		return nil
	case pg.ErrNoRows:
		return db.ErrNoEntries
	case pg.ErrMultiRows:
		return db.ErrMultipleEntries
	default:
		if strings.Contains(err.Error(), "duplicate key value violates unique constraint") {
			return db.ErrAlreadyExists
		}
		return err
	}
}