mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-15 09:35:53 +08:00
chore: return proper http codes on unique constraint error (#6428)
This commit is contained in:
parent
85ac21f253
commit
01fda51959
@ -8,6 +8,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
|
"github.com/mattn/go-sqlite3"
|
||||||
|
|
||||||
"go.signoz.io/signoz/ee/query-service/license/sqlite"
|
"go.signoz.io/signoz/ee/query-service/license/sqlite"
|
||||||
"go.signoz.io/signoz/ee/query-service/model"
|
"go.signoz.io/signoz/ee/query-service/model"
|
||||||
@ -274,14 +275,14 @@ func (r *Repo) InitFeatures(req basemodel.FeatureSet) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// InsertLicenseV3 inserts a new license v3 in db
|
// InsertLicenseV3 inserts a new license v3 in db
|
||||||
func (r *Repo) InsertLicenseV3(ctx context.Context, l *model.LicenseV3) error {
|
func (r *Repo) InsertLicenseV3(ctx context.Context, l *model.LicenseV3) *model.ApiError {
|
||||||
|
|
||||||
query := `INSERT INTO licenses_v3 (id, key, data) VALUES ($1, $2, $3)`
|
query := `INSERT INTO licenses_v3 (id, key, data) VALUES ($1, $2, $3)`
|
||||||
|
|
||||||
// licsense is the entity of zeus so putting the entire license here without defining schema
|
// licsense is the entity of zeus so putting the entire license here without defining schema
|
||||||
licenseData, err := json.Marshal(l.Data)
|
licenseData, err := json.Marshal(l.Data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("insert license failed: license marshal error")
|
return &model.ApiError{Typ: basemodel.ErrorBadData, Err: err}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = r.db.ExecContext(ctx,
|
_, err = r.db.ExecContext(ctx,
|
||||||
@ -292,8 +293,14 @@ func (r *Repo) InsertLicenseV3(ctx context.Context, l *model.LicenseV3) error {
|
|||||||
)
|
)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if sqliteErr, ok := err.(sqlite3.Error); ok {
|
||||||
|
if sqliteErr.ExtendedCode == sqlite3.ErrConstraintUnique {
|
||||||
|
zap.L().Error("error in inserting license data: ", zap.Error(sqliteErr))
|
||||||
|
return &model.ApiError{Typ: model.ErrorConflict, Err: sqliteErr}
|
||||||
|
}
|
||||||
|
}
|
||||||
zap.L().Error("error in inserting license data: ", zap.Error(err))
|
zap.L().Error("error in inserting license data: ", zap.Error(err))
|
||||||
return fmt.Errorf("failed to insert license in db: %v", err)
|
return &model.ApiError{Typ: basemodel.ErrorExec, Err: err}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -463,7 +463,7 @@ func (lm *Manager) ActivateV3(ctx context.Context, licenseKey string) (licenseRe
|
|||||||
err := lm.repo.InsertLicenseV3(ctx, license)
|
err := lm.repo.InsertLicenseV3(ctx, license)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
zap.L().Error("failed to activate license", zap.Error(err))
|
zap.L().Error("failed to activate license", zap.Error(err))
|
||||||
return nil, model.InternalError(err)
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// license is valid, activate it
|
// license is valid, activate it
|
||||||
|
@ -332,6 +332,8 @@ func RespondError(w http.ResponseWriter, apiErr model.BaseApiError, data interfa
|
|||||||
code = http.StatusUnauthorized
|
code = http.StatusUnauthorized
|
||||||
case model.ErrorForbidden:
|
case model.ErrorForbidden:
|
||||||
code = http.StatusForbidden
|
code = http.StatusForbidden
|
||||||
|
case model.ErrorConflict:
|
||||||
|
code = http.StatusConflict
|
||||||
default:
|
default:
|
||||||
code = http.StatusInternalServerError
|
code = http.StatusInternalServerError
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user