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 }