ホームページ >バックエンド開発 >Golang >Go言語で開発した注文システムにおける注文クエリ機能の実装方法

Go言語で開発した注文システムにおける注文クエリ機能の実装方法

PHPz
PHPzオリジナル
2023-11-01 11:07:491144ブラウズ

Go言語で開発した注文システムにおける注文クエリ機能の実装方法

Go 言語は、注文システムでの注文クエリ関数の実装方法を開発します。これには、特定のコード例が必要です。

食品注文システムでは、注文クエリは非常に重要な機能です。 1つ。ユーザーは、過去の注文だけでなく、注文クエリ機能を通じて注文ステータスと詳細を表示できます。この記事では、Go 言語を使用して簡単な注文クエリ関数を開発する方法と、コードの詳細な実装プロセスを紹介します。

  1. データベース モデルの作成

まず、注文を保存するためのデータベース モデルを作成する必要があります。 GORM ライブラリを使用してモデルを作成および管理できます。以下は単純な順序モデルです:

type Order struct {
    ID       uint   `gorm:"primary_key"`
    UserID   uint   `gorm:"not null"`
    Amount   uint   `gorm:"not null"`
    Status   string `gorm:"not null"`
    CreatedAt time.Time
    UpdatedAt time.Time
}

上記のコードは、次のフィールドを含む順序モデルを定義します:

  • ID: 主キーを表す uint 型を使用した注文 ID。 ;
  • UserID: 注文が属するユーザーの ID;
  • Amount: uint 型で表される注文の合計金額;
  • Status: 注文ステータス、文字列タイプで表されます;
  • CreatedAt: 注文作成時間、time.Time タイプで表されます;
  • UpdatedAt: 注文更新時間、time.Time タイプで表されます。
  1. データベース接続の作成

次に、注文モデルを操作するためのデータベース接続を作成する必要があります。 MySQL データベースの使用を選択できますが、対応する MySQL ドライバーをインストールする必要があります。以下はデータベース接続の例です。

import (
    "fmt"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

func ConnectDB() (*gorm.DB, error) {
    db, err := gorm.Open("mysql", "root:@/orders_db?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        return nil, err
    }
    fmt.Println("Database connection established")
    return db, nil
}

上記のコードは、「orders_db」という名前の MySQL データベースに接続し、データベースへのポインタを返すか、エラーが発生した場合はエラーを返します。

  1. 注文クエリ API の作成

ここで、ユーザーの注文をクエリする API を作成できます。簡単な HTTP GET リクエスト ハンドラーの例を次に示します。

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func GetOrders(c *gin.Context) {
    user_id := c.Query("user_id")
    db, err := ConnectDB()
    if err != nil {
        c.JSON(http.StatusInternalServerError, err.Error())
        return
    }
    defer db.Close()

    var orders []Order
    db.Where("user_id=?", user_id).Find(&orders)
    c.JSON(http.StatusOK, orders)
}

上記のコードは、特定のユーザー ID の注文をクエリし、結果を JSON 応答として返します。

  1. テスト ケースの作成

最後に、注文クエリ機能用のテスト ケースをいくつか作成する必要があります。以下は簡単なテスト ケースです:

import (
    "encoding/json"
    "github.com/stretchr/testify/assert"
    "net/http"
    "net/http/httptest"
    "testing"
)

func TestGetOrders(t *testing.T) {
    router := gin.Default()
    router.GET("/orders", GetOrders)

    w := httptest.NewRecorder()
    req, _ := http.NewRequest("GET", "/orders?user_id=1", nil)
    router.ServeHTTP(w, req)

    assert.Equal(t, http.StatusOK, w.Code)

    var orders []Order
    json.Unmarshal(w.Body.Bytes(), &orders)
    assert.Equal(t, 1, len(orders))
}

上記のコードは、testify ライブラリと httptest ライブラリを使用して、API が期待どおりに返すかどうかをテストします。

概要

この記事では、Go 言語を使用して単純な注文クエリ関数を開発する方法を紹介し、詳細なコード例を示しました。次の手順に従って、独自の注文クエリ機能を開発し、必要に応じて変更およびカスタマイズできます。

以上がGo言語で開発した注文システムにおける注文クエリ機能の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。