Skip to content

Commit

Permalink
board member - working
Browse files Browse the repository at this point in the history
  • Loading branch information
practice-golang committed Mar 30, 2024
1 parent f8897e4 commit 18cc0cb
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 36 deletions.
37 changes: 28 additions & 9 deletions handler/member.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,49 @@ import (
"log"
"net/http"
"strconv"
"strings"
"time"

"github.com/gofiber/fiber/v2"
"gopkg.in/guregu/null.v4"
)

func GetMemberListAPI(c *fiber.Ctx) error {
queries := c.Queries()
func GetMemberListAPI(c *fiber.Ctx) (err error) {
boardCode := c.Params("board_code")
board := BoardListData[boardCode]

log.Println(queries)
members, err := crud.GetMemberList(board.Idx.Int64)
if err != nil {
return c.Status(http.StatusInternalServerError).Send([]byte(err.Error()))
}

return c.Status(http.StatusOK).JSON("result")
return c.Status(http.StatusOK).JSON(members)
}

func AddMemberAPI(c *fiber.Ctx) (err error) {
var member model.MemberRequest
boardCode := c.Params("board_code")
userIdxSTR := c.Params("user_idx")

err = c.BodyParser(&member)
board := BoardListData[boardCode]
userIDX, err := strconv.ParseInt(userIdxSTR, 10, 64)
grade := "member"
now := time.Now().Format("20060102150405")
if !board.Idx.Valid || board.Idx.Int64 < 1 {
return c.Status(http.StatusBadRequest).Send([]byte("board code is wrong"))
}
if err != nil {
return c.Status(http.StatusBadRequest).SendString(err.Error())
return c.Status(http.StatusBadRequest).Send([]byte(err.Error()))
}
if strings.TrimSpace(userIdxSTR) == "" || !board.Idx.Valid || board.Idx.Int64 < 1 {
return c.Status(http.StatusBadRequest).Send([]byte("user idx is wrong"))
}

now := time.Now().Format("20060102150405")
member.RegDate = null.StringFrom(now)
member := model.Member{
BoardIdx: null.IntFrom(board.Idx.Int64),
UserIdx: null.IntFrom(userIDX),
Grade: null.StringFrom(grade),
RegDate: null.StringFrom(now),
}

_, idx, err := crud.AddMember(member)
if err != nil {
Expand Down
39 changes: 24 additions & 15 deletions internal/crud/member.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,41 @@ import (
"9minutes/internal/db"
"9minutes/internal/np"
"9minutes/model"
"log"

"github.com/blockloop/scan"
)

func GetMemberList(boardIDX int64) {
func GetMemberList(boardIDX int64) ([]model.Member, error) {
var result []model.Member

dbtype := db.GetDatabaseTypeString()
tablename := db.GetFullTableName(db.Info.UserTable)

columnList, _ := GetUserColumnsList()
columnNames := map[string]interface{}{}
for _, column := range columnList {
if column.ColumnName.Valid {
columnNames["A."+column.ColumnName.String] = nil
}
}
columns := np.CreateString(columnNames, dbtype, "", false)
tablename := db.GetFullTableName(db.Info.MemberTable)

columns := np.CreateString(model.Member{}, dbtype, "select", false)
whereVar := map[string]interface{}{"BOARD_IDX": boardIDX}
where := np.CreateWhereString(whereVar, dbtype, "=", "AND", "", false)

sql := `
SELECT
` + columns.Name + `
FROM ` + tablename + ` AS A
`
` + where + ``

r, err := db.Con.Query(sql)
if err != nil {
return result, err
}
defer r.Close()

err = scan.Rows(&result, r)
if err != nil {
return result, err
}

log.Println(sql)
return result, nil
}

func AddMember(data model.MemberRequest) (count, idx int64, err error) {
func AddMember(data model.Member) (count, idx int64, err error) {
dbtype := db.GetDatabaseTypeString()
tablename := db.GetFullTableName(db.Info.MemberTable)

Expand Down
11 changes: 2 additions & 9 deletions misc/requests/requests_admin_member.http
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,9 @@ Origin: {{uri}}


### Get member list
GET {{uri}}/api/admin/member
GET {{uri}}/api/admin/member/scratch
Cookie: {{cookie}}

### Add member
POST {{uri}}/api/admin/member
POST {{uri}}/api/admin/member/scratch/1
Cookie: {{cookie}}
content-type: application/json

{
"board-idx": 1,
"user-idx": 1,
"grade": "member"
}
2 changes: 1 addition & 1 deletion model/member.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"gopkg.in/guregu/null.v4"
)

type MemberRequest struct {
type Member struct {
Idx null.Int `json:"idx" db:"IDX" npskip:"insert, update"`
BoardIdx null.Int `json:"board-idx" db:"BOARD_IDX"`
UserIdx null.Int `json:"user-idx" db:"USER_IDX"`
Expand Down
4 changes: 2 additions & 2 deletions router.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ func setApiAdmin(a *fiber.App) {
gaboard.Delete("/", handler.DeleteBoardAPI)

/* API Board Member */
gamember := gadmin.Group("/member") // required add auth middleware
gamember := gadmin.Group("/member/:board_code") // required add auth middleware
gamember.Get("/", handler.GetMemberListAPI)
gamember.Post("/", handler.AddMemberAPI)
gamember.Post("/:user_idx", handler.AddMemberAPI)
gamember.Put("/", handler.UpdateMemberAPI)
gamember.Delete("/", handler.DeleteMemberAPI)
}
Expand Down

0 comments on commit 18cc0cb

Please sign in to comment.