メソッドとエラー処理を備えたシングルトン DB インスタンスを作成する方法

Linda Hamilton
リリース: 2024-11-02 20:35:30
オリジナル
1038 人が閲覧しました

How to Create a Singleton DB Instance with Methods and Error Handling?

メソッドを使用したシングルトン DB インスタンスの作成

提供された元のコードにはシングルトン実装が含まれていますが、シングルトン インスタンスで呼び出すことができるメソッドがありません。この記事では、提供されたシングルトンをメソッドで拡張する方法を示し、エラー処理に関連する質問に対処します。

メソッドを使用した改訂されたシングルトン実装

更新されたコードでは、エクスポートされたインターフェース Manager と必要なメソッド (この場合は AddArticle)。次に、エクスポートされていない実装タイプ マネージャーを作成します。インターフェイス タイプのグローバル変数 Mgr は、パッケージの init() 関数で初期化され、インスタンス化が 1 回だけ行われるようにします。

<code class="go">package dbprovider

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/sqlite"
    "rest/article"
    "log"
)

type Manager interface {
    AddArticle(article *article.Article) error
}

type manager struct {
    db *gorm.DB
}

var Mgr Manager // Global variable of the interface type

func init() {
    db, err := gorm.Open("sqlite3", "../articles.db")
    if err != nil {
        log.Fatal("Failed to initialize database:", err)
    }
    Mgr = &manager{db: db}
}

func (mgr *manager) AddArticle(article *article.Article) error {
    if err := mgr.db.Create(article).Error; err != nil {
        return err
    }
    return nil
}</code>
ログイン後にコピー

シングルトンの使用

Mgr インスタンスを使用してデータベースに記事を追加できるようになりました。

<code class="go">import "dbprovider"

if err := dbprovider.Mgr.AddArticle(someArticle); err != nil {
    // Handle error
}</code>
ログイン後にコピー

エラー処理

gorm.Create() からの例外をキャッチして返すために、次のチェックを行います。 gorm.Create().Error によって返されるエラー。エラーが発生した場合は、エラーが返されます。それ以外の場合は、nil が返されます。

結論

この改訂された実装では、シングルトン参照で呼び出すことができるメソッドを備えたシングルトン DB インスタンスが作成されます。 gorm.Create().

からの例外を処理する方法も示します。

以上がメソッドとエラー処理を備えたシングルトン DB インスタンスを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート