From 14450226a3600879902b9c736694ab2437cb09d7 Mon Sep 17 00:00:00 2001 From: shin0729 Date: Sat, 2 Mar 2024 15:24:36 +0900 Subject: [PATCH] =?UTF-8?q?feat:HTTP=E3=82=B5=E3=83=BC=E3=83=90=E3=83=BC?= =?UTF-8?q?=E3=81=AE=E9=9D=9E=E5=90=8C=E6=9C=9F=E8=B5=B7=E5=8B=95=E3=81=A8?= =?UTF-8?q?=E7=B5=82=E4=BA=86=E5=BE=85=E6=A9=9F=E3=81=AE=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=E3=80=81=E5=8F=8A=E3=81=B3=E3=83=AD=E3=82=B0=E5=87=BA=E5=8A=9B?= =?UTF-8?q?=E3=81=AE=E5=BC=B7=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/api/cmd/main.go | 53 ++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/typing-server/api/cmd/main.go b/typing-server/api/cmd/main.go index d195e0a6..bd875fb2 100644 --- a/typing-server/api/cmd/main.go +++ b/typing-server/api/cmd/main.go @@ -2,9 +2,9 @@ package main import ( "context" - "fmt" - "log/slog" + "log" "net/http" + "sync" "time" "github.com/go-sql-driver/mysql" @@ -13,41 +13,60 @@ import ( ) func main() { - logger := slog.Default() + // 標準のログパッケージを使用 + logger := log.Default() + // タイムゾーンの設定 jst, err := time.LoadLocation("Asia/Tokyo") if err != nil { - logger.Error("failed to load location", fmt.Errorf("error: %w", err)) + logger.Printf("failed to load location: %v", err) + return } + // MySQLの接続設定 mysqlConfig := &mysql.Config{ - DBName: "typing-db", - User: "user", - Passwd: "password", // 環境変数から取得するか、直接指定 - Net: "tcp", - Addr: "db:3306", // Docker Compose内でのサービス名とポート - ParseTime: true, - Loc: jst, + DBName: "typing-db", // データベース名 + User: "user", // ユーザー名 + Passwd: "password", // パスワード + Net: "tcp", // ネットワークタイプ + Addr: "db:3306", // アドレス(Docker Compose内でのサービス名とポート) + ParseTime: true, // 時刻をtime.Timeで解析する + Loc: jst, // タイムゾーン } + // entクライアントの初期化 entClient, err := ent.Open("mysql", mysqlConfig.FormatDSN()) if err != nil { - logger.Error("failed to open ent client", fmt.Errorf("error: %w", err)) + logger.Printf("failed to open ent client: %v", err) + return } else { - logger.Info("ent client is opened") + logger.Println("ent client is opened") } + // スキーマの作成 if err := entClient.Schema.Create(context.Background()); err != nil { - logger.Error("failed to create schema", fmt.Errorf("error: %w", err)) + logger.Printf("failed to create schema: %v", err) + return } else { - logger.Info("schema is created") + logger.Println("schema is created") } + // ルートの登録 presenter.RegisterRoutes() + + // WaitGroupの宣言 + var wg sync.WaitGroup + + // HTTPサーバーの非同期起動 + wg.Add(1) go func() { - logger.Info("server is running") + defer wg.Done() // 関数終了時にWaitGroupをデクリメント + + logger.Println("server is running at http://localhost:8080") if err := http.ListenAndServe(":8080", nil); err != nil { - logger.Error("failed to listen and serve", fmt.Errorf("error: %w", err)) + logger.Printf("failed to listen and serve: %v", err) } }() + + wg.Wait() // HTTPサーバーの終了を待機 }