PatchWorkSheet updates a sheet.
(ctx context.Context, patch *PatchWorkSheetMessage)
| 231 | |
| 232 | // PatchWorkSheet updates a sheet. |
| 233 | func (s *Store) PatchWorkSheet(ctx context.Context, patch *PatchWorkSheetMessage) error { |
| 234 | set := qb.Q() |
| 235 | set.Comma("updated_at = ?", time.Now()) |
| 236 | if v := patch.Title; v != nil { |
| 237 | set.Comma("name = ?", *v) |
| 238 | } |
| 239 | if v := patch.Statement; v != nil { |
| 240 | set.Comma("statement = ?", *v) |
| 241 | } |
| 242 | if v := patch.Visibility; v != nil { |
| 243 | set.Comma("visibility = ?", *v) |
| 244 | } |
| 245 | if v := patch.InstanceID; v != nil { |
| 246 | if *v == "" { |
| 247 | set.Comma("instance = ?", nil) |
| 248 | } else { |
| 249 | set.Comma("instance = ?", *v) |
| 250 | } |
| 251 | } |
| 252 | if v := patch.DatabaseName; v != nil { |
| 253 | if *v == "" { |
| 254 | set.Comma("db_name = ?", nil) |
| 255 | } else { |
| 256 | set.Comma("db_name = ?", *v) |
| 257 | } |
| 258 | } |
| 259 | |
| 260 | query, args, err := qb.Q().Space("UPDATE worksheet SET ? WHERE resource_id = ?", set, patch.ResourceID).ToSQL() |
| 261 | if err != nil { |
| 262 | return errors.Wrapf(err, "failed to build sql") |
| 263 | } |
| 264 | if _, err := s.GetDB().ExecContext(ctx, query, args...); err != nil { |
| 265 | return err |
| 266 | } |
| 267 | return nil |
| 268 | } |
| 269 | |
| 270 | // DeleteWorkSheet deletes an existing sheet by resource ID. |
| 271 | // The worksheet_organizer rows are cascade-deleted via FK on worksheet(resource_id). |