common.go 2.59 KiB
Newer Older
Somnath Ghorpade's avatar
Somnath Ghorpade committed
package common

import (
	"encoding/json"
	"net"
	"net/http"
	_ "net/http/pprof"

	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/dalmdl/coreimmudb"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/dalmdl/coremongo"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/dalmdl/mysql"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/dalmdl/sqlserver"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/errormdl"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/loggermdl"
)

func InitMongoDBConnectionUsingJson(jsonString string) error {
	var hosts []coremongo.MongoHost
	json.Unmarshal([]byte(jsonString), &hosts)

	err := coremongo.InitUsingJSON(hosts)
	if err != nil {
		loggermdl.LogError(err)
		return errormdl.Wrap(err.Error())
	}
	return err
}

func InitMysqlDBConnectionUsingJson(jsonString string) error {
	var hosts []mysql.MySQLConnection
	json.Unmarshal([]byte(jsonString), &hosts)

	err := mysql.InitUsingJSON(hosts)
	// mysqlConnection, err := mysql.InitConnection(hosts)
	if err != nil {
		loggermdl.LogError(err)
		return errormdl.Wrap(err.Error())
	}
	return err
}

// Initialize sql server connection
func InitSQLServerConnectionUsingJson(jsonString string) error {
	var hosts []sqlserver.SQLServerConfig
	json.Unmarshal([]byte(jsonString), &hosts)

	err := sqlserver.InitUsingJSON(hosts)
	if err != nil {
		loggermdl.LogError(err)
		return errormdl.Wrap(err.Error())
	}
	return err
}

// GeneratePort - generate new availabe port
func GeneratePort() (net.Listener, string, error) {
	var ln net.Listener
	var err error
	// get new available port
	ln, err = net.Listen("tcp", ":0")
	if err != nil {
		loggermdl.LogError("Failed to generate new port - ", err)
		return ln, "", errormdl.Wrap(err.Error())
	}
	_, port, err := net.SplitHostPort(ln.Addr().String())
	if err != nil {
		loggermdl.LogError("Failed to get new port from address - ", err)
		return ln, "", errormdl.Wrap(err.Error())
	}
	return ln, port, nil
}

// startPprof - start the pprof server
func StartPprof(port string) (string, error) {
	if port == "0" || port == "" {
		loggermdl.LogError("Pporf port is empty")
		return "", errormdl.Wrap("Pporf port is empty")
	}
	go func(port string) {
		loggermdl.LogError(http.ListenAndServe("localhost:"+port, nil))
	}(port)
	return port, nil
}

func InitImmuDBConnectionUsingJson(jsonString string) error {
	var hosts []coreimmudb.ImmuHost
	if err := json.Unmarshal([]byte(jsonString), &hosts); err != nil {
		return err
	}
	err := coreimmudb.InitImmuDBConnections(hosts)
	if err != nil {
		loggermdl.LogError(err)
		return errormdl.Wrap(err.Error())
	}
	return err
}