mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
API: Fix status code when starring already starred dashboard (#63478)
Fixes #63133
This commit is contained in:
parent
c3a0b75357
commit
b10b290213
@ -5,12 +5,14 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
|
"github.com/grafana/grafana/pkg/infra/db"
|
||||||
"github.com/grafana/grafana/pkg/services/sqlstore/session"
|
"github.com/grafana/grafana/pkg/services/sqlstore/session"
|
||||||
"github.com/grafana/grafana/pkg/services/star"
|
"github.com/grafana/grafana/pkg/services/star"
|
||||||
)
|
)
|
||||||
|
|
||||||
type sqlxStore struct {
|
type sqlxStore struct {
|
||||||
sess *session.SessionDB
|
sess *session.SessionDB
|
||||||
|
db db.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *sqlxStore) Get(ctx context.Context, query *star.IsStarredByUserQuery) (bool, error) {
|
func (s *sqlxStore) Get(ctx context.Context, query *star.IsStarredByUserQuery) (bool, error) {
|
||||||
@ -31,6 +33,9 @@ func (s *sqlxStore) Insert(ctx context.Context, cmd *star.StarDashboardCommand)
|
|||||||
DashboardID: cmd.DashboardID,
|
DashboardID: cmd.DashboardID,
|
||||||
}
|
}
|
||||||
_, err := s.sess.NamedExec(ctx, `INSERT INTO star (user_id, dashboard_id) VALUES (:user_id, :dashboard_id)`, entity)
|
_, err := s.sess.NamedExec(ctx, `INSERT INTO star (user_id, dashboard_id) VALUES (:user_id, :dashboard_id)`, entity)
|
||||||
|
if s.db.GetDialect().IsUniqueConstraintViolation(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,6 @@ func TestIntegrationSQLxUserStarsDataAccess(t *testing.T) {
|
|||||||
t.Skip("skipping integration test")
|
t.Skip("skipping integration test")
|
||||||
}
|
}
|
||||||
testIntegrationUserStarsDataAccess(t, func(ss db.DB) store {
|
testIntegrationUserStarsDataAccess(t, func(ss db.DB) store {
|
||||||
return &sqlxStore{sess: ss.GetSqlxSession()}
|
return &sqlxStore{sess: ss.GetSqlxSession(), db: ss}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ func ProvideService(db db.DB, cfg *setting.Cfg) star.Service {
|
|||||||
return &Service{
|
return &Service{
|
||||||
store: &sqlxStore{
|
store: &sqlxStore{
|
||||||
sess: db.GetSqlxSession(),
|
sess: db.GetSqlxSession(),
|
||||||
|
db: db,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,10 @@ func (s *sqlStore) Insert(ctx context.Context, cmd *star.StarDashboardCommand) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, err := sess.Insert(&entity)
|
_, err := sess.Insert(&entity)
|
||||||
|
if s.db.GetDialect().IsUniqueConstraintViolation(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user