Maison  >  Article  >  développement back-end  >  Comment créer une instance de base de données Singleton avec méthodes et gestion des erreurs ?

Comment créer une instance de base de données Singleton avec méthodes et gestion des erreurs ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 20:35:30984parcourir

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

Création d'une instance de base de données Singleton avec des méthodes

Le code d'origine fourni contient une implémentation singleton, mais manque de méthodes pouvant être appelées sur l'instance singleton . Cet article montre comment augmenter le singleton fourni avec des méthodes et répond aux questions liées à la gestion des erreurs.

Implémentation révisée de Singleton avec des méthodes

Dans le code mis à jour, nous définissons un exporté l'interface Manager avec les méthodes souhaitées (AddArticle dans ce cas). Nous créons ensuite un gestionnaire de types d'implémentation non exporté. Une variable globale Mgr de type interface est initialisée dans une fonction package init(), garantissant qu'elle n'est instanciée qu'une seule fois.

<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>

Utilisation du Singleton

Le L'instance Mgr peut désormais être utilisée pour ajouter des articles à la base de données :

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

if err := dbprovider.Mgr.AddArticle(someArticle); err != nil {
    // Handle error
}</code>

Gestion des erreurs

Pour intercepter et renvoyer les exceptions de gorm.Create(), nous vérifions l'erreur renvoyée par gorm.Create().Error. Si une erreur s'est produite, elle est renvoyée ; sinon, nul est renvoyé.

Conclusion

Cette implémentation révisée crée une instance de base de données singleton avec des méthodes qui peuvent être appelées sur la référence singleton. Il montre également comment gérer les exceptions de gorm.Create().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn