github.com/christoph-karpowicz/db_mediator@v0.0.0-20210207102849-61a28a1071d8/internal/server/db/database.go (about)

     1  package db
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/christoph-karpowicz/db_mediator/internal/server/cfg"
     7  )
     8  
     9  // Database interface is the blueprint for all structs for specific databases.
    10  type Database interface {
    11  	GetConfig() *cfg.DbConfig
    12  	Init()
    13  	Select(tableName string, conditions string) []map[string]interface{}
    14  	TestConnection()
    15  	Insert(inDto InsertDto) error
    16  	Update(upDto UpdateDto) error
    17  }
    18  
    19  // DatabaseError is a custom db error.
    20  type DatabaseError struct {
    21  	DBName   string      `json:"dbName"`
    22  	ErrMsg   string      `json:"errMsg"`
    23  	KeyName  string      `json:"keyName"`
    24  	KeyValue interface{} `json:"keyVal"`
    25  }
    26  
    27  func (e *DatabaseError) Error() string {
    28  	if e.KeyName != "" && e.KeyValue != nil {
    29  		return fmt.Sprintf("[ERROR] database %s: %s (key: %s, val: %v).", e.DBName, e.ErrMsg, e.KeyName, e.KeyValue)
    30  	}
    31  
    32  	return fmt.Sprintf("[ERROR] database %s: %s", e.DBName, e.ErrMsg)
    33  }