Skip to content

Multiple Issue Boards - Backend

Summary

This is a meta issue to index Backend tasks related to the #929 (closed).

Backend

  • Models
    • Board
      • name (String)
      • backlog_list_enabled (Boolean - default: true)
      • done_list_enabled (Boolean - default: true)
    • Project
      • boards (has_many)
      • restrict numbers of boards to 1 on CE
  • Services
    • Boards
      • Update CreateService
        • Create a new board
      • Create ListService
      • Create UpdateService
      • Create DestroyService
        • can't delete board if project have only 1 board
    • Boards::Lists
      • Create ListService
        • List lists for a specific board
      • Update CreateService
      • Update DestroyService
      • Update GenerateService
      • Update MoveService
    • Boards::Issues
      • Update ListService
      • Update MoveService
        • When moving from the backlog, just add the new label.
        • Moving an issue between lists removes the label from the list it came from (exception: backlog) and adds the label of the list it goes to.
        • When moving to Done, remove all list-labels from project boards
        • When moving to Done, remove all list-labels for boards that use the pre-defined Done list and close the issue.
  • Endpoints
    • Create GET /:namespace_id/:project_id/boards
      • Create if doesn't have one
      • Returns issues boards
      • Filter boards by name
    • Create POST /:namespace_id/:project_id/boards
      • Create a new board
    • Create PATCH /:namespace_id/:project_id/board/:id
      • Update board (name)
    • Create DESTROY /:namespace_id/:project_id/boards/:id
      • Remove board from project
    • Update GET /:namespace_id/:project_id/boards/:id
      • Should receive the board id
      • Renders the issue board
    • Update GET /:namespace_id/:project_id/board/:board_id/lists
      • Returns board lists
    • Update POST /:namespace_id/:project_id/board/:board_id/lists
      • Create a new list for the selected label
    • Update POST /:namespace_id/:project_id/board/:board_id/lists/generate
      • Generate the default board lists for a specific board
    • Update PATCH /:namespace_id/:project_id/board/:board_id/lists/:id
      • Move list (position)
    • Update DESTROY /:namespace_id/:project_id/boards/:board_id/lists/:id
      • Remove list from board
    • Update GET /:namespace_id/:project_id/board/:board_id/lists/:id/issues
      • Retrieve issues for a label/list that matches filter params
    • Update PATCH /:namespace_id/:project_id/board/:board_id/issues/:id
      • Move issues between lists (:form_list_id, :to_list_id)
  • Check authorization to issues board related controllers
  • Minimize conflicts between CE/EE
  • Remove unused code
    • Projects::BoardListsController - CE
    • Projects::BoardListsController - EE