@@ -19,7 +19,7 @@ import (
1919 "github.com/nicolashery/simply-shared-notes/app/views/pages"
2020)
2121
22- func handleSpacesNew (cfg * config.Config ) http.HandlerFunc {
22+ func handleSpacesNew (cfg * config.Config , logger * slog. Logger ) http.HandlerFunc {
2323 return func (w http.ResponseWriter , r * http.Request ) {
2424 requiresCode := cfg .RequiresInvitationCode ()
2525
@@ -28,7 +28,15 @@ func handleSpacesNew(cfg *config.Config) http.HandlerFunc {
2828 form .Code = r .URL .Query ().Get ("code" )
2929 }
3030
31- pages .SpacesNew (requiresCode , & form , forms .EmptyErrors ()).Render (r .Context (), w )
31+ err := pages .SpacesNew (requiresCode , & form , forms .EmptyErrors ()).Render (r .Context (), w )
32+ if err != nil {
33+ logger .Error (
34+ "failed to render template" ,
35+ slog .Any ("error" , err ),
36+ slog .String ("template" , "SpacesNew" ),
37+ )
38+ http .Error (w , "internal server error" , http .StatusInternalServerError )
39+ }
3240 }
3341}
3442
@@ -39,7 +47,15 @@ func handleSpacesCreate(cfg *config.Config, logger *slog.Logger, sqlDB *sql.DB,
3947 form , errors := forms .ParseCreateSpace (r , requiresCode )
4048 if errors != nil {
4149 w .WriteHeader (http .StatusUnprocessableEntity )
42- pages .SpacesNew (requiresCode , & form , errors ).Render (r .Context (), w )
50+ err := pages .SpacesNew (requiresCode , & form , errors ).Render (r .Context (), w )
51+ if err != nil {
52+ logger .Error (
53+ "failed to render template" ,
54+ slog .Any ("error" , err ),
55+ slog .String ("template" , "SpacesNew" ),
56+ )
57+ http .Error (w , "internal server error" , http .StatusInternalServerError )
58+ }
4359 return
4460 }
4561
@@ -116,7 +132,12 @@ func createSpaceAndFirstMember(
116132 if err != nil {
117133 return nil , nil , err
118134 }
119- defer tx .Rollback ()
135+ defer func () {
136+ if rbErr := tx .Rollback (); rbErr != nil && err == nil {
137+ // Only overwrite main err if it's nil and rollback failed
138+ err = fmt .Errorf ("tx rollback error: %w" , rbErr )
139+ }
140+ }()
120141 qtx := queries .WithTx (tx )
121142
122143 space , err := qtx .CreateSpace (ctx , db.CreateSpaceParams {
@@ -169,19 +190,35 @@ func createSpaceAndFirstMember(
169190 return & space , & member , nil
170191}
171192
172- func handleSpacesShow () http.HandlerFunc {
193+ func handleSpacesShow (logger * slog. Logger ) http.HandlerFunc {
173194 return func (w http.ResponseWriter , r * http.Request ) {
174- pages .SpacesShow ().Render (r .Context (), w )
195+ err := pages .SpacesShow ().Render (r .Context (), w )
196+ if err != nil {
197+ logger .Error (
198+ "failed to render template" ,
199+ slog .Any ("error" , err ),
200+ slog .String ("template" , "SpacesShow" ),
201+ )
202+ http .Error (w , "internal server error" , http .StatusInternalServerError )
203+ }
175204 }
176205}
177206
178- func handleSpacesEdit () http.HandlerFunc {
207+ func handleSpacesEdit (logger * slog. Logger ) http.HandlerFunc {
179208 return func (w http.ResponseWriter , r * http.Request ) {
180- pages .SpacesEdit ().Render (r .Context (), w )
209+ err := pages .SpacesEdit ().Render (r .Context (), w )
210+ if err != nil {
211+ logger .Error (
212+ "failed to render template" ,
213+ slog .Any ("error" , err ),
214+ slog .String ("template" , "SpacesEdit" ),
215+ )
216+ http .Error (w , "internal server error" , http .StatusInternalServerError )
217+ }
181218 }
182219}
183220
184- func handleTokensShow () http.HandlerFunc {
221+ func handleTokensShow (logger * slog. Logger ) http.HandlerFunc {
185222 return func (w http.ResponseWriter , r * http.Request ) {
186223 space := rctx .GetSpace (r .Context ())
187224 tokens := access.AccessTokens {
@@ -196,12 +233,28 @@ func handleTokensShow() http.HandlerFunc {
196233 }
197234 baseURL := scheme + "://" + r .Host
198235
199- pages .TokensShow (baseURL , tokens ).Render (r .Context (), w )
236+ err := pages .TokensShow (baseURL , tokens ).Render (r .Context (), w )
237+ if err != nil {
238+ logger .Error (
239+ "failed to render template" ,
240+ slog .Any ("error" , err ),
241+ slog .String ("template" , "TokensShow" ),
242+ )
243+ http .Error (w , "internal server error" , http .StatusInternalServerError )
244+ }
200245 }
201246}
202247
203- func handleActivityList () http.HandlerFunc {
248+ func handleActivityList (logger * slog. Logger ) http.HandlerFunc {
204249 return func (w http.ResponseWriter , r * http.Request ) {
205- pages .ActivityList ().Render (r .Context (), w )
250+ err := pages .ActivityList ().Render (r .Context (), w )
251+ if err != nil {
252+ logger .Error (
253+ "failed to render template" ,
254+ slog .Any ("error" , err ),
255+ slog .String ("template" , "ActivityList" ),
256+ )
257+ http .Error (w , "internal server error" , http .StatusInternalServerError )
258+ }
206259 }
207260}
0 commit comments