0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ecommerce-go main.go コード解説

Last updated at Posted at 2023-06-26

package main

import (
"log"
"os"

"github.com/akhil/ecommerce-yt/controllers"
"github.com/akhil/ecommerce-yt/database"
"github.com/akhil/ecommerce-yt/middleware"
"github.com/akhil/ecommerce-yt/routes"

"github.com/gin-gonic/gin"

)

func main() {
// 環境変数からポート番号を取得します
port := os.Getenv("PORT")
if port == "" {
port = "8000"
}

// データベースの初期化と必要な依存関係を注入して、アプリケーションを作成します
// ProductDataとUserData関数は、データベースクライアントとコレクション名を受け取り、

   それぞれのデータベースを初期化します
productDB := database.ProductData(database.Client, "Products")
userDB := database.UserData(database.Client, "Users")
app := controllers.NewApplication(productDB, userDB)

// Ginルーターを作成します
router := gin.New()

// ロガーミドルウェアを使用して、リクエストのログを出力します
router.Use(gin.Logger())

// ユーザールートを設定します
routes.UserRoutes(router)

// 認証ミドルウェアを使用して、認証を必要とするエンドポイントを保護します
router.Use(middleware.Authentication())

// カートに商品を追加するエンドポイントを設定します
// app.AddToCart()は、カートに商品を追加するコントローラー関数です
router.GET("/addtocart", app.AddToCart())

// アイテムをカートから削除するエンドポイントを設定します
// app.RemoveItem()は、カートからアイテムを削除するコントローラー関数です
router.GET("/removeitem", app.RemoveItem())

// カート内のアイテムをリストするエンドポイントを設定します
// controllers.GetItemFromCart()は、カート内のアイテムをリストするコントローラー関数です
router.GET("/listcart", controllers.GetItemFromCart())

// 住所を追加するエンドポイントを設定します
// controllers.AddAddress()は、住所を追加するコントローラー関数です
router.POST("/addaddress", controllers.AddAddress())

// 自宅の住所を編集するエンドポイントを設定します
// controllers.EditHomeAddress()は、自宅の住所を編集するコントローラー関数です
router.PUT("/edithomeaddress", controllers.EditHomeAddress())

// 仕事の住所を編集するエンドポイントを設定します
// controllers.EditWorkAddress()は、仕事の住所を編集するコントローラー関数です
router.PUT("/editworkaddress", controllers.EditWorkAddress())

// 住所を削除するエンドポイントを設定します
// controllers.DeleteAddress()は、住所を削除するコントローラー関数です
router.GET("/deleteaddresses", controllers.DeleteAddress())

// カートのチェックアウトを行うエンドポイントを設定します
// app.BuyFromCart()は、カートのチェックアウトを行うコントローラー関数です
router.GET("/cartcheckout", app.BuyFromCart())

// 即時購入を行うエンドポイントを設定します
// app.InstantBuy()は、即時購入を行うコントローラー関数です
router.GET("/instantbuy", app.InstantBuy())

// 指定したポートでアプリケーションを実行し、エラーが発生した場合にログに出力します
log.Fatal(router.Run(":" + port))

}

このコードは、eコマースアプリケーションのメインパッケージです。以下に、各部分の説明を提供します。

os.Getenv("PORT") は、環境変数からポート番号を取得するために使用されます。ポートが設定されていない場合はデフォルト値として "8000" が使用されます。

controllers.NewApplication() は、データベースの初期化と依存関係の注入を行って、アプリケーションを作成します。これにより、controllers パッケージ内の NewApplication 関数が呼び出されます。

gin.New() は、Ginフレームワークのインスタンスであるルーターを作成します。

router.Use(gin.Logger()) は、リクエストのログを出力するために Gin のロガーミドルウェアを使用します。

routes.UserRoutes(router) は、ユーザールートを設定するために routes パッケージ内の UserRoutes 関数を呼び出します。

router.Use(middleware.Authentication()) は、認証が必要なエンドポイントを保護するために middleware パッケージ内の Authentication ミドルウェアを使用します。

router.GET("/addtocart", app.AddToCart()) は、"/addtocart" エンドポイントに対して GET リクエストがあった場合に app.AddToCart() メソッドを呼び出します。

同様に、他のエンドポイントも設定されています。例えば、"/removeitem"、"/listcart"、"/addaddress"、"/edithomeaddress" などです。

log.Fatal(router.Run(":" + port)) は、指定したポートでアプリケーションを実行し、エラーが発生した場合にログに出力します。

このコードは、eコマースアプリケーションの基本的な機能を実装しており、ユーザーのカートへのアイテムの追加や削除、住所の管理、チェックアウトなどを扱うことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?