@@ -1944,15 +1944,56 @@ func (h *HttpHandler) SetDashboardWithWidgets(echoCtx echo.Context) error {
1944
1944
if err := bindValidate (echoCtx , & req ); err != nil {
1945
1945
return echo .NewHTTPError (http .StatusBadRequest , "invalid request" )
1946
1946
}
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 {
1947
1989
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
+ }
1956
1997
1957
1998
return echoCtx .JSON (http .StatusAccepted ,nil )
1958
1999
}
0 commit comments