Skip to content

Commit a112e29

Browse files
committed
feat: add set whole dashboard API
1 parent 7439004 commit a112e29

File tree

1 file changed

+49
-8
lines changed

1 file changed

+49
-8
lines changed

Diff for: services/core/http_routes.go

+49-8
Original file line numberDiff line numberDiff line change
@@ -1944,15 +1944,56 @@ func (h *HttpHandler) SetDashboardWithWidgets(echoCtx echo.Context) error {
19441944
if err := bindValidate(echoCtx, &req); err != nil {
19451945
return echo.NewHTTPError(http.StatusBadRequest, "invalid request")
19461946
}
1947+
var widgets []models.Widget
1948+
for _, widget := range req.Widgets {
1949+
widgets = append(widgets, models.Widget{
1950+
ID: uuid.New().String(),
1951+
UserID: widget.UserID,
1952+
Title: widget.Title,
1953+
Description: widget.Description,
1954+
WidgetType: widget.WidgetType,
1955+
WidgetProps: func() pgtype.JSONB {
1956+
var jsonb pgtype.JSONB
1957+
if err := jsonb.Set(widget.WidgetProps); err != nil {
1958+
h.logger.Error("failed to convert WidgetProps to JSONB", zap.Error(err))
1959+
}
1960+
return jsonb
1961+
}(),
1962+
RowSpan: widget.RowSpan,
1963+
ColumnSpan: widget.ColumnSpan,
1964+
ColumnOffset: widget.ColumnOffset,
1965+
CreatedAt: time.Now(),
1966+
UpdatedAt: time.Now(),
1967+
IsPublic: widget.IsPublic,
1968+
})
1969+
}
1970+
// add widgets
1971+
err:= h.db.AddWidgets(widgets)
1972+
if err != nil {
1973+
h.logger.Error("failed to add widgets", zap.Error(err))
1974+
return echo.NewHTTPError(http.StatusInternalServerError, "failed to add widgets")
1975+
}
1976+
// add dashboard
1977+
dashboard := models.Dashboard{
1978+
ID: uuid.New().String(),
1979+
UserID: req.UserID,
1980+
Name: req.Name,
1981+
Description: req.Description,
1982+
IsDefault: req.IsDefault,
1983+
IsPrivate: req.IsPrivate,
1984+
CreatedAt: time.Now(),
1985+
UpdatedAt: time.Now(),
1986+
}
1987+
dashboard.Widgets = make([]models.Widget, 0)
1988+
for _, widget := range widgets {
19471989

1948-
1949-
1950-
1951-
1952-
1953-
1954-
1955-
1990+
dashboard.Widgets = append(dashboard.Widgets, models.Widget{ID: widget.ID})
1991+
}
1992+
err = h.db.SetUserLayout(dashboard)
1993+
if err != nil {
1994+
h.logger.Error("failed to set user layout", zap.Error(err))
1995+
return echo.NewHTTPError(http.StatusInternalServerError, "failed to set user layout")
1996+
}
19561997

19571998
return echoCtx.JSON(http.StatusAccepted,nil)
19581999
}

0 commit comments

Comments
 (0)