(ctx context.Context, workspaceId string, name string, meta waveobj.MetaMapType)
| 268 | } |
| 269 | |
| 270 | func createTabObj(ctx context.Context, workspaceId string, name string, meta waveobj.MetaMapType) (*waveobj.Tab, error) { |
| 271 | ws, err := GetWorkspace(ctx, workspaceId) |
| 272 | if err != nil { |
| 273 | return nil, fmt.Errorf("workspace %s not found: %w", workspaceId, err) |
| 274 | } |
| 275 | layoutStateId := uuid.NewString() |
| 276 | tab := &waveobj.Tab{ |
| 277 | OID: uuid.NewString(), |
| 278 | Name: name, |
| 279 | BlockIds: []string{}, |
| 280 | LayoutState: layoutStateId, |
| 281 | Meta: meta, |
| 282 | } |
| 283 | layoutState := &waveobj.LayoutState{ |
| 284 | OID: layoutStateId, |
| 285 | } |
| 286 | ws.TabIds = append(ws.TabIds, tab.OID) |
| 287 | wstore.DBInsert(ctx, tab) |
| 288 | wstore.DBInsert(ctx, layoutState) |
| 289 | wstore.DBUpdate(ctx, ws) |
| 290 | return tab, nil |
| 291 | } |
| 292 | |
| 293 | // Must delete all blocks individually first. |
| 294 | // Also deletes LayoutState. |
no test coverage detected