Skip to content

Commit

Permalink
feat: test implementation
Browse files Browse the repository at this point in the history
1 - created implementation from multi database.
2 - update all packags
Pening
1 - change tests file, with new implementation
  • Loading branch information
DiegoSantosWS committed Dec 21, 2020
1 parent 0ed1159 commit fed4469
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 49 deletions.
6 changes: 2 additions & 4 deletions adapters/postgres/internal/connection/conn.go
Expand Up @@ -2,7 +2,6 @@ package connection

import (
"fmt"
"log"
"sync"

"github.com/jmoiron/sqlx"
Expand Down Expand Up @@ -31,15 +30,14 @@ func GetURI(DBName string) string {
if len(DBName) == 0 {
DBName = config.PrestConf.PGDatabase
}
log.Println("test", DBName)

con, ok := config.PrestConf.Databases[DBName]
if ok {
DBName = con.Database
config.PrestConf.PGUser = con.User
config.PrestConf.PGHost = con.Host
config.PrestConf.PGPort = con.Port
}
log.Println(DBName)
dbURI = fmt.Sprintf("user=%s dbname=%s host=%s port=%v sslmode=%v connect_timeout=%d",
config.PrestConf.PGUser,
DBName,
Expand Down Expand Up @@ -136,7 +134,7 @@ func MustGet() *sqlx.DB {
func SetDatabase(name string) {
db, ok := config.PrestConf.Databases[name]
if !ok {
currDatabase = name
currDatabase = config.PrestConf.PGDatabase
return
}
currDatabase = db.Database
Expand Down
29 changes: 11 additions & 18 deletions config/config.go
Expand Up @@ -111,14 +111,12 @@ func viperCfg() {
viper.SetDefault("auth.type", "body")
viper.SetDefault("http.host", "0.0.0.0")
viper.SetDefault("http.port", 3000)
viper.SetDefault("databases.pg.host", "127.0.0.1")
viper.SetDefault("databases.pg.port", 5432)
viper.SetDefault("ssl.mode", "disable")
viper.SetDefault("pg.maxidleconn", 10)
viper.SetDefault("pg.maxopenconn", 10)
viper.SetDefault("pg.conntimeout", 10)
viper.SetDefault("debug", false)
viper.SetDefault("jwt.default", true)
viper.SetDefault("jwt.default", false)
viper.SetDefault("jwt.algo", "HS256")
viper.SetDefault("jwt.whitelist", []string{"/auth"})
viper.SetDefault("cors.allowheaders", []string{"*"})
Expand Down Expand Up @@ -170,32 +168,27 @@ func Parse(cfg *Prest) (err error) {
cfg.HTTPHost = viper.GetString("http.host")
cfg.HTTPPort = viper.GetInt("http.port")
cfg.PGURL = viper.GetString("pg.url")
cfg.PGHost = viper.GetString("databases.pg.host")
cfg.PGPort = viper.GetInt("databases.pg.port")
cfg.PGUser = viper.GetString("databases.pg.user")
cfg.PGPass = viper.GetString("databases.pg.pass")
cfg.PGDatabase = viper.GetString("databases.pg.database")
cfg.SSLMode = viper.GetString("ssl.mode")
cfg.SSLCert = viper.GetString("ssl.cert")
cfg.SSLKey = viper.GetString("ssl.key")
cfg.SSLRootCert = viper.GetString("ssl.rootcert")

err = viper.UnmarshalKey("databases", &cfg.Databases)
if err != nil {
log.Println("error unmarchal")
return
}

if len(cfg.Databases) > 1 {
for k, i := range cfg.Databases {
log.Printf("Teste: %s %v - %T\n\r", k, i, i)
cfg.PGHost = i.Host
cfg.PGPort = i.Port
cfg.PGUser = i.User
cfg.PGPass = i.Pass
cfg.PGDatabase = i.Database
cfg.PGSchema = i.Schema
if len(cfg.Databases) >= 1 {
for k, _ := range cfg.Databases {
cfg.PGHost = viper.GetString(fmt.Sprintf("databases.%s.host", k))
cfg.PGPort = viper.GetInt(fmt.Sprintf("databases.%s.port", k))
cfg.PGUser = viper.GetString(fmt.Sprintf("databases.%s.user", k))
cfg.PGPass = viper.GetString(fmt.Sprintf("databases.%s.pass", k))
cfg.PGDatabase = viper.GetString(fmt.Sprintf("databases.%s.database", k))
cfg.PGSchema = viper.GetString(fmt.Sprintf("databases.%s.schema", k))
}
}
log.Printf("Teste: %+v", cfg.Databases)
err = portFromEnv(cfg)
if err != nil {
return
Expand Down
20 changes: 0 additions & 20 deletions controllers/go.mod

This file was deleted.

14 changes: 7 additions & 7 deletions controllers/tables.go
Expand Up @@ -57,6 +57,7 @@ func GetTablesByDatabaseAndSchema(w http.ResponseWriter, r *http.Request) {
schema := vars["schema"]

config.PrestConf.Adapter.SetDatabase(database)
database = config.PrestConf.PGDatabase

requestWhere, values, err := config.PrestConf.Adapter.WhereByRequest(r, 3)
if err != nil {
Expand Down Expand Up @@ -103,12 +104,10 @@ func SelectFromTables(w http.ResponseWriter, r *http.Request) {
database := vars["database"]
schema := vars["schema"]
table := vars["table"]
log.Println("database:", database)

config.PrestConf.Adapter.SetDatabase(database)
database = config.PrestConf.PGDatabase

log.Println("database CHANGE:", database)
// get selected columns, "*" if empty "_columns"
cols, err := config.PrestConf.Adapter.FieldsPermissions(r, table, "read")
if err != nil {
Expand Down Expand Up @@ -224,7 +223,7 @@ func InsertInTables(w http.ResponseWriter, r *http.Request) {
return
}

sql := config.PrestConf.Adapter.InsertSQL(database, schema, table, names, placeholders)
sql := config.PrestConf.Adapter.InsertSQL(config.PrestConf.PGDatabase, schema, table, names, placeholders)

sc := config.PrestConf.Adapter.Insert(sql, values...)
if err = sc.Err(); err != nil {
Expand Down Expand Up @@ -259,10 +258,10 @@ func BatchInsertInTables(w http.ResponseWriter, r *http.Request) {
var sc adapters.Scanner
method := r.Header.Get("Prest-Batch-Method")
if strings.ToLower(method) != "copy" {
sql := config.PrestConf.Adapter.InsertSQL(database, schema, table, names, placeholders)
sql := config.PrestConf.Adapter.InsertSQL(config.PrestConf.PGDatabase, schema, table, names, placeholders)
sc = config.PrestConf.Adapter.BatchInsertValues(sql, values...)
} else {
sc = config.PrestConf.Adapter.BatchInsertCopy(database, schema, table, strings.Split(names, ","), values...)
sc = config.PrestConf.Adapter.BatchInsertCopy(config.PrestConf.PGDatabase, schema, table, strings.Split(names, ","), values...)
}
if err = sc.Err(); err != nil {
errorMessage := sc.Err().Error()
Expand Down Expand Up @@ -294,7 +293,7 @@ func DeleteFromTable(w http.ResponseWriter, r *http.Request) {
return
}

sql := config.PrestConf.Adapter.DeleteSQL(database, schema, table)
sql := config.PrestConf.Adapter.DeleteSQL(config.PrestConf.PGDatabase, schema, table)
if where != "" {
sql = fmt.Sprint(sql, " WHERE ", where)
}
Expand Down Expand Up @@ -342,7 +341,7 @@ func UpdateTable(w http.ResponseWriter, r *http.Request) {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
sql := config.PrestConf.Adapter.UpdateSQL(database, schema, table, setSyntax)
sql := config.PrestConf.Adapter.UpdateSQL(config.PrestConf.PGDatabase, schema, table, setSyntax)

pid := len(values) + 1 // placeholder id

Expand Down Expand Up @@ -397,6 +396,7 @@ func ShowTable(w http.ResponseWriter, r *http.Request) {
table := vars["table"]

config.PrestConf.Adapter.SetDatabase(database)
database = config.PrestConf.PGDatabase
sc := config.PrestConf.Adapter.ShowTable(schema, table)
if sc.Err() != nil {
log.Println(fmt.Sprintf(" There error to excute the query. schema %s error %s", schema, sc.Err()))
Expand Down
5 changes: 5 additions & 0 deletions go.mod
Expand Up @@ -16,3 +16,8 @@ require (
github.com/spf13/viper v1.7.1
github.com/urfave/negroni v1.0.0
)

replace (
github.com/prest/prest/adapters => ../adapters
github.com/prest/prest/controllers => ../controllers
)
8 changes: 8 additions & 0 deletions go.sum
Expand Up @@ -165,6 +165,14 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/prest/prest/adapters v0.0.0-20200729234819-07cc1b6b492f h1:C8Nn2Q2EfLAiRm57YXfZvb7WFo784ZebmGsbABsY8pg=
github.com/prest/prest/adapters v0.0.0-20200729234819-07cc1b6b492f/go.mod h1:RHI0ViCEsguMFajw2ljYKIdWbrGvkFBCTPsvCEQPg/4=
github.com/prest/prest/config v0.0.0-20200729234819-07cc1b6b492f h1:e3zzUvc/t3b8Q+eYhIUd1jL6ndGECH8CYwLhDmpUq7g=
github.com/prest/prest/config v0.0.0-20200729234819-07cc1b6b492f/go.mod h1:gQ6el6Zzd5rD6rC+2xxIZIJDRJch2uRRcWy3apkXVF0=
github.com/prest/prest/controllers v0.0.0-20201101142512-f646e763875a h1:g+Ip2ZDnyYrvcK7IgZvL9BPTucKhwoLdLDX3Q5dhfmg=
github.com/prest/prest/controllers v0.0.0-20201101142512-f646e763875a/go.mod h1:vU3JoXHAJ6GMfknvjxQAIGsJzDW+qTQ28rwCJIuok9s=
github.com/prest/prest/middlewares v0.0.0-20200729234819-07cc1b6b492f h1:6CA1NhdOvxMhIlS/k6uYQECFr4BoaNZOzFZmTeZLTnw=
github.com/prest/prest/middlewares v0.0.0-20200729234819-07cc1b6b492f/go.mod h1:urzqrisuia5/h4jInrHUpPXbE1DQI+SnSsi2nRknIf8=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
Expand Down

0 comments on commit fed4469

Please sign in to comment.