code: func (r *GormBoardRepository) List(ctx context.Context, spaceTemplateID uuid.UUID) ([]*Board, error) {
  	log.Debug(ctx, map[string]interface{}{"space_template_id": spaceTemplateID}, "loading work item boards for space template")
  	// check space template exists
  	if err := spacetemplate.NewRepository(r.db).CheckExists(ctx, spaceTemplateID); err != nil {
  		return nil, errors.NewNotFoundError("space template", spaceTemplateID.String())
  	}
  	res := []*Board{}
  	db := r.db.Model(&res).Where("space_template_id=?", spaceTemplateID).Order("name ASC").Find(&res)
  	if db.RecordNotFound() {
  		log.Error(ctx, map[string]interface{}{"space_template_id": spaceTemplateID}, "work item boards not found")
  		return nil, errors.NewNotFoundError("work item boards for space template", spaceTemplateID.String())
  	}
  	if err := db.Error; err != nil {
  		return nil, errors.NewInternalError(ctx, err)
  	}
  	for _, board := range res {
  		columns, err := r.loadColumns(ctx, board.ID)
  		if err != nil {
  			return nil, errs.Wrapf(err, "failed to load columns for board with ID %s", board.ID)
  		}
  		board.Columns = columns
  	}
  	return res, nil
  }
docs: // List returns all boards for the given space template ID
  // ordered by their position value.