GoでToDoアプリを作ってる -2-

PublishedAt

2025/8/14

前回から引き続き進めた。
今回やったのは主に以下

  • 前回出てたDB接続の問題解消
  • TODOのCRUDができるようにした
  • フロント整えた

DB接続

割と単純な解決で、DB接続のpackageで宣言していたdbClientの変数をエクスポートできる形にして、APIの方で呼べばOKだった

// mysql.go

var DBClient *sql.DB

// api.go
import "github.com/andnandna/todo-app-go-react/database"
~~~
rows, err := database.DBClient.Query("SELECT * FROM tasks")

ただいちいち database.DBClient って書かないといけないのが冗長なので、今度はこれをどうにかしたい。(未解決)

TODOのCRUD

APIはシンプルに渡された値などで更新などできる形までやった。
例でCREATE部分だけ

// api.go

func createTasks(context *gin.Context) {
	var newTask Task
	if err := context.BindJSON(&newTask); err != nil {
		context.IndentedJSON(http.StatusInternalServerError, err)
	}

	_, err := database.DBClient.Exec("INSERT INTO tasks (title, isCompleted) VALUES (?, ?)", newTask.Title, false)
	if err != nil {
		context.IndentedJSON(http.StatusInternalServerError, err)
	}

	context.IndentedJSON(http.StatusCreated, nil)
}

フロント整えた

ちょっと面倒&今回はGoの学習が中心という理由で、ほぼAIに書かせたので特にコメントなし!


今後

ほんとに簡単なものでGoで作ってみようというのが目的なので、機能的には一旦これで終わりでいいかなと思っている。

この後はファイル/ディレクトリ構成を見直してみたり、ORM入れたり(Gormかなぁ)、テスト書いたり(書くとこあんま無いけど)、などしていきたい。

おわり