diff --git a/cmd/main-api/config.yml-example b/cmd/main-api/config.yml-example index 19893fd7..dfe3cb7e 100644 --- a/cmd/main-api/config.yml-example +++ b/cmd/main-api/config.yml-example @@ -15,6 +15,12 @@ dbCfg: maxIdleConns: 5 maxIdleTime: 100 +ssDbCfg: + dsn: + maxOpenConns: 5 + maxIdleConns: 5 + maxIdleTime: 100 + loggerCfg: hideTime: hideLevel: diff --git a/go.mod b/go.mod index 3d7e86f5..21d0e33e 100644 --- a/go.mod +++ b/go.mod @@ -7,9 +7,7 @@ toolchain go1.23.11 require ( github.com/karincake/apem v0.0.16-g github.com/karincake/dodol v0.0.1 - github.com/karincake/getuk v0.1.0 github.com/karincake/lepet v0.0.1 - golang.org/x/crypto v0.40.0 gopkg.in/yaml.v3 v3.0.1 gorm.io/driver/postgres v1.5.7 gorm.io/gorm v1.25.10 @@ -28,8 +26,11 @@ require ( github.com/mattn/go-isatty v0.0.19 // indirect github.com/nxadm/tail v1.4.11 // indirect github.com/rs/zerolog v1.33.0 // indirect + golang.org/x/crypto v0.40.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect ) + +replace github.com/karincake/apem => D:/Kuli/Sabbi/external/apem diff --git a/go.sum b/go.sum index 1550a098..7d1e7a14 100644 --- a/go.sum +++ b/go.sum @@ -20,12 +20,8 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/karincake/apem v0.0.16-g h1:jPIr/YiaJhVSftdA1PyB2tlDiQtFeTVZohO1qf0qpw0= -github.com/karincake/apem v0.0.16-g/go.mod h1:cQP2sJfDrLRIiwWoaLWw/z8uAya+DWu/FpmYeinMQXM= github.com/karincake/dodol v0.0.1 h1:jUXmJh1r0Ei4fmHPZ6IUkoplW/V9d27L63JEl6zudL0= github.com/karincake/dodol v0.0.1/go.mod h1:2f1NcvkvY0J3GMUkwILNDYVvRUpz0W3lpPp/Ha/Ld24= -github.com/karincake/getuk v0.1.0 h1:jcIsASrr0UDE528GN7Ua6n9UFyRgUypsWh8Or8wzCO0= -github.com/karincake/getuk v0.1.0/go.mod h1:NVnvxSGAkQ/xuq99FzWACvY5efyKPLFla1cKB8czm7c= github.com/karincake/lepet v0.0.1 h1:eq/cwn5BBg0jWZ1c/MmvhFIBma0zBpVs2LwkfDOncy4= github.com/karincake/lepet v0.0.1/go.mod h1:U84w7olXO3BPJw2Hu6MBonFmJmPKaFjtyAj1HTu3z1A= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= diff --git a/internal/infra/gorm-setting/gorm-setting.go b/internal/infra/gorm-setting/gorm-setting.go new file mode 100644 index 00000000..95f18f0e --- /dev/null +++ b/internal/infra/gorm-setting/gorm-setting.go @@ -0,0 +1,19 @@ +package gormsetting + +import ( + dg "github.com/karincake/apem/db-gorm-pg" + // "gorm.io/gorm" + + "gorm.io/gorm" + "gorm.io/gorm/schema" +) + +func Adjust() { + dg.GormConfig = &gorm.Config{ + // Logger: logger.Default.LogMode(logger.Error), + NamingStrategy: schema.NamingStrategy{ + SingularTable: true, + NoLowerCase: true, + }, + } +} diff --git a/internal/infra/ss-db/ss-db.go b/internal/infra/ss-db/ss-db.go new file mode 100644 index 00000000..3c239540 --- /dev/null +++ b/internal/infra/ss-db/ss-db.go @@ -0,0 +1,36 @@ +package ssdb + +import ( + "log" + + a "github.com/karincake/apem" + lo "github.com/karincake/apem/loggero" + "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/schema" +) + +func Init() { + SetConfig() + NewInstance() +} + +func SetConfig() { + a.ParseSingleCfg(&Cfg) +} + +func NewInstance() { + // create database connection + db, err := gorm.Open(postgres.Open(Cfg.Dsn), &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + SingularTable: true, + NoLowerCase: true, + }, + }) + if err != nil { + log.Fatal(err) + } + + SSDb = db + lo.I.Println("Instantiation for satu-sehat database-connetion using db-gorm-pg, status: DONE!!") +} diff --git a/internal/infra/ss-db/tycovar.go b/internal/infra/ss-db/tycovar.go new file mode 100644 index 00000000..ff084508 --- /dev/null +++ b/internal/infra/ss-db/tycovar.go @@ -0,0 +1,13 @@ +package ssdb + +import "gorm.io/gorm" + +type SsDbCfg struct { + Dsn string + MaxOpenConns int `yaml:"maxOpenConns"` + MaxIdleConns int `yaml:"maxIdleConns"` + MaxIdleTime int `yaml:"maxIdleTime"` +} + +var Cfg SsDbCfg = SsDbCfg{} +var SSDb *gorm.DB diff --git a/internal/interface/main-handler/main-handler.go b/internal/interface/main-handler/main-handler.go index b959178b..ef390c43 100644 --- a/internal/interface/main-handler/main-handler.go +++ b/internal/interface/main-handler/main-handler.go @@ -3,7 +3,14 @@ package handler import ( "net/http" - ///// PKG + /******************** external ********************/ + a "github.com/karincake/apem" + + /******************** infra ********************/ + gs "simrs-vx/internal/infra/gorm-setting" + ssdb "simrs-vx/internal/infra/ss-db" + + /******************** pkg ********************/ handlerlogger "simrs-vx/pkg/middleware/handler-logger" ///// Internal @@ -13,7 +20,8 @@ import ( // One place route to relatively easier to manage, ESPECIALLY in tracking func SetRoutes() http.Handler { ///// - // a.RegisterExtCall(gs.Adjust) + a.RegisterExtCall(gs.Adjust) + a.RegisterExtCall(ssdb.Init) r := http.NewServeMux()