traPtitech / knoQ

進捗部屋・イベント管理システム

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

verified=trueな部屋の一括作成

fuji8 opened this issue · comments

/rooms/all の実装

概要

https://github.com/traPtitech/knoQ/wiki/room
https://traptitech.github.io/knoQ/
一般にVerifiedRoom(進捗部屋)は複数がまとめて渡される。
現在のところ、VerifiedRoomを作成する手段は、/rooms にPOSTしてから/rooms/{roomId}/verifiedにPOSTするというフローであり、複数のリクエストが必要かつまとめて作成する手段はない。
予定では、swaggerに書いてあるcsvの形式で外部から情報が得られるため、そのデータを受けてVerifiedRoomを一括作成する。

  • POST /rooms

    knoQ/router/rooms.go

    Lines 12 to 25 in e11118f

    func (h *Handlers) HandlePostRoom(c echo.Context) error {
    var req presentation.RoomReq
    if err := c.Bind(&req); err != nil {
    return badRequest(err)
    }
    roomParams := presentation.ConvRoomReqTodomainWriteRoomParams(req)
    room, err := h.Repo.CreateUnVerifiedRoom(roomParams, getConinfo(c))
    if err != nil {
    return judgeErrorResponse(err)
    }
    return c.JSON(http.StatusCreated, presentation.ConvdomainRoomToRoomRes(*room))
    }
  • POST /rooms/{roomId}/verified

    knoQ/router/rooms.go

    Lines 74 to 85 in e11118f

    func (h *Handlers) HandleVerifyRoom(c echo.Context) error {
    roomID, err := getPathRoomID(c)
    if err != nil {
    return notFound(err)
    }
    err = h.Repo.VerifyRoom(roomID, getConinfo(c))
    if err != nil {
    return judgeErrorResponse(err)
    }
    return c.NoContent(http.StatusNoContent)
    }