Issue Boards - Backend

Summary

This is a meta issue to index Backend tasks related to the #17907 (closed). Issues in bold, means that someone is currently working on it.

Backend

  • Create Models
    • Board
      • Project (references)
    • List
      • Board (references)
      • Label (references)
      • Type (integer)
      • Position (integer)
  • Create Services
    • Boards::CreateService
    • Boards::Lists::CreateService
    • Boards::Lists::GenerateService
      • Create the default lists (Development, Testing, Production, Ready)
    • Boards::Lists::MoveService
      • Move position of the list inside the board
    • Boards::Lists::DestroyService
    • Boards::Issues::ListService
      • List issues for a specific list
    • Boards::Issues::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 the label of the list it came from and close the issue.
  • Create Endpoints
    • GET /:namespace_id/:project_id/board
      • Renders the issue board
      • Creates a new board if project does not have one
    • GET /:namespace_id/:project_id/board/lists
      • Returns board lists
    • POST /:namespace_id/:project_id/board/lists
      • Create a new list for the selected label
    • POST /:namespace_id/:project_id/board/lists/generate
      • Generate the default board lists for a project
    • PATCH /:namespace_id/:project_id/board/lists/:id
      • Move list (position)
    • DESTROY /:namespace_id/:project_id/boards/lists/:id
      • Remove list from board
    • GET /:namespace_id/:project_id/board/lists/:id/issues
      • Retrieve issues for a label/list that matches filter params
        • Reuse IssuesFinder
    • PATCH /:namespace_id/:project_id/board/issues/:id
      • Move issues between lists (:form_list_id, :to_list_id)
  • Add authorization to issues board related controllers