42association / 42ActivityAPI

1 stars 1 forks source link

replace sql with gorm object method #22

Closed kotto5 closed 5 months ago

ShotaTanemura commented 5 months ago

あと、Activityの追加周りは今対応中?

kotto5 commented 5 months ago

db へのquery は db オブジェクトのメソッドでやっている. Let's say, creating activity records,

https://github.com/42association/server_with_m5/blob/4cb7ff4a7e2e5594c189819e1bda1bd9292697a3/src/server/main.go#L242-L248

I call db.Create() method here.

ShotaTanemura commented 5 months ago

db へのquery は db オブジェクトのメソッドでやっている. Let's say, creating activity records,

https://github.com/42association/server_with_m5/blob/4cb7ff4a7e2e5594c189819e1bda1bd9292697a3/src/server/main.go#L242-L248

I call db.Create() method here.

了解!自分が確認し損ねてた。ありがとう。

kotto5 commented 5 months ago

豆知識

command: --general-log=1 --general-log-file=/var/log/mysql/general.log

これを mariadb に設定すると、query のlog が取れる https://mariadb.com/kb/en/overview-of-mariadb-logs/

kotto5 commented 5 months ago

func addActivity2(c *gin.Context) {
    var requestData ActivityRequestData

    db, err := connectToDB()
    if err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        log.Fatal("Failed to initialize database:", err)
        return
    }

    user := User{ID: 0, UID: "foo", Login: "kakiba"}
    m5Stick := M5Stick{ID: 0, Mac: "00:00:00:00:00:00", RoleId: 0, LocationId: 0}

    // Add a new activity
    activity := Activity{UserID: user.ID, M5StickID: m5Stick.ID}
    if result := db.Create(&activity); result.Error != nil {
        log.Fatal("Failed to create activity:", result.Error)
        c.JSON(http.StatusBadRequest, gin.H{"error": result.Error.Error()})
        return
    }
    // 取得したuserDataを含めてレスポンスを返す
    c.JSON(http.StatusOK, gin.H{
        "uid": requestData.Uid, "mac": requestData.Mac})
    return
}

こういった関数をapi の handler に設定したら、実際に activity が作成されることが確認できた. テストとして残したいね (余談

@ShotaTanemura もう一個push したので確認して欲しい