From ec3961fde5a4dfe42a4069c9b8a42653e8b7297b Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 23 Apr 2025 08:38:49 +0700 Subject: [PATCH] update code --- .env | 8 +-- docker-compose.yml | 4 +- internal/database/database.go | 63 +++++++++++++---------- internal/server/routes.go | 1 + pkg/database/simrs/database.go | 2 +- pkg/database/simrs/dokter.go | 2 +- pkg/database/simrs/mikrobiologi.go | 2 +- pkg/database/simrs/pasien.go | 2 +- pkg/database/simrs/pendaftaran.go | 2 +- pkg/database/simrs/ruang.go | 2 +- pkg/handlers/mikrobiologi/mikrobiologi.go | 11 ++-- pkg/handlers/mikrobiologi/response.go | 4 -- 12 files changed, 58 insertions(+), 45 deletions(-) diff --git a/.env b/.env index 6620ef7..9d3ba3f 100644 --- a/.env +++ b/.env @@ -6,15 +6,15 @@ SATUDATA_PASSWORD=stim*RS54 SATUDATA_NAME=satu_db SATUDATA_PORT=5000 -SIMRS_HOST=10.10.123.160 +SIMRS_HOST=10.10.123.163 SIMRS_USERNAME=simrs SIMRS_PASSWORD=simrs.rssa SIMRS_NAME=simrs -SIMRS_PORT=5000 +SIMRS_PORT=5432 SIMRS_STAG_HOST=10.10.123.223 -SIMRS_STAG_USERNAME=simtest -SIMRS_STAG_PASSWORD=12345 +SIMRS_STAG_USER=simtest +SIMRS_STAG_PASS=12345 SIMRS_STAG_NAME=simrs-stag SIMRS_STAG_PORT=5432 diff --git a/docker-compose.yml b/docker-compose.yml index df6b6c4..7da0f98 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,8 +22,8 @@ services: - SIMRS_STAG_PASS=12345 # DATABASE SATU DATA - SATUDATA_HOST=10.10.123.165 - - SATUDATA_USERNAME=stim - - SATUDATA_PASSWORD=stim*RS54 + - SATUDATA_USER=stim + - SATUDATA_PASS=stim*RS54 - SATUDATA_NAME=satu_db - SATUDATA_PORT=5000 # BPJS diff --git a/internal/database/database.go b/internal/database/database.go index 784974c..62a3214 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -6,6 +6,7 @@ import ( "log" "os" "strconv" + "strings" "time" _ "github.com/jackc/pgx/v5/stdlib" @@ -14,14 +15,14 @@ import ( "gorm.io/gorm" ) -type Service interface { +type Services interface { Health() map[string]string - Close() error - GetDB() *gorm.DB + GetDB(string) *gorm.DB } type service struct { - db *gorm.DB + simrsDB *gorm.DB + satuDataDB *gorm.DB } var ( @@ -30,10 +31,17 @@ var ( passwordSimrs = os.Getenv("SIMRS_STAG_PASS") dbNameSimrs = os.Getenv("SIMRS_STAG_NAME") portSimrs = os.Getenv("SIMRS_STAG_PORT") - dbInstance *service + + hostSatuData = os.Getenv("SATUDATA_HOST") + userNameSatuData = os.Getenv("SATUDATA_USERNAME") + passwordSatuData = os.Getenv("SATUDATA_PASSWORD") + dbNameSatuData = os.Getenv("SATUDATA_NAME") + portSatuData = os.Getenv("SATUDATA_PORT") + + dbInstance *service ) -func New() Service { +func New() Services { // Reuse Connection if dbInstance != nil { return dbInstance @@ -42,12 +50,25 @@ func New() Service { SimrsDB, err := gorm.Open(postgres.Open(simrs), &gorm.Config{}) if err != nil { - log.Fatal("Failed to connect to SIM database: ", err) + log.Fatal("Failed to connect to database SIMRS: ", err) } else { - log.Println("Successfully connected to the database") + log.Println("Successfully connected to the database SIMRS") } + satuData := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatuData, userNameSatuData, passwordSatuData, dbNameSatuData, portSatuData) + + satuDataDB, err := gorm.Open(postgres.Open(satuData), &gorm.Config{}) + if err != nil { + log.Fatal("Failed to connect to database SatuData: ", err) + } else { + log.Println("Successfully connected to the database SatuData") + } + + mongoURI := fmt.Sprintf("mongodb://%s:%s@%s:%s/%s?authSource=admin", + user, pass, host, port, database) + dbInstance = &service{ - db: SimrsDB, + simrsDB: SimrsDB, + satuDataDB: satuDataDB, } return dbInstance } @@ -61,7 +82,7 @@ func (s *service) Health() map[string]string { stats := make(map[string]string) // Ping the database using GORM - db, err := s.db.DB() // Retrieve the underlying sql.DB instance from GORM + db, err := s.simrsDB.DB() // Retrieve the underlying sql.DB instance from GORM if err != nil { stats["status"] = "down" stats["error"] = fmt.Sprintf("failed to get sql.DB from GORM: %v", err) @@ -115,23 +136,13 @@ func (s *service) Health() map[string]string { // It logs a message indicating the disconnection from the specific database. // If the connection is successfully closed, it returns nil. // If an error occurs while closing the connection, it returns the error. -func (s *service) Close() error { - db, err := s.db.DB() // Retrieve the underlying sql.DB instance from GORM - if err != nil { - log.Printf("Failed to retrieve sql.DB from GORM: %v", err) - return err - } - err = db.Close() - if err != nil { - log.Printf("Error closing the database connection: %v", err) - return err +func (s *service) GetDB(database string) *gorm.DB { + if strings.ToLower(database) == "simrs" { + return s.simrsDB + } else if strings.ToLower(database) == "satudata" { + return s.satuDataDB } - - log.Printf("Disconnected from database successfully") + log.Println("Database tidak ditemukan") return nil } - -func (s *service) GetDB() *gorm.DB { - return s.db -} diff --git a/internal/server/routes.go b/internal/server/routes.go index 92f6bfd..d392b24 100644 --- a/internal/server/routes.go +++ b/internal/server/routes.go @@ -11,6 +11,7 @@ import ( func (s *Server) RegisterRoutes() http.Handler { r := gin.Default() + r.GET("/hello", s.HelloWorldHandler) r.GET("/health", s.healthHandler) v1 := r.Group("/api") diff --git a/pkg/database/simrs/database.go b/pkg/database/simrs/database.go index f088da1..cb705e2 100644 --- a/pkg/database/simrs/database.go +++ b/pkg/database/simrs/database.go @@ -1,4 +1,4 @@ -package databaserepo +package simrs import "gorm.io/gorm" diff --git a/pkg/database/simrs/dokter.go b/pkg/database/simrs/dokter.go index 3de5a8b..7ca2157 100644 --- a/pkg/database/simrs/dokter.go +++ b/pkg/database/simrs/dokter.go @@ -1,4 +1,4 @@ -package databaserepo +package simrs import ( "log" diff --git a/pkg/database/simrs/mikrobiologi.go b/pkg/database/simrs/mikrobiologi.go index e34ea2c..b26c77f 100644 --- a/pkg/database/simrs/mikrobiologi.go +++ b/pkg/database/simrs/mikrobiologi.go @@ -1,4 +1,4 @@ -package databaserepo +package simrs import ( "api-lis/pkg/models/simrs/mikrobiologi" diff --git a/pkg/database/simrs/pasien.go b/pkg/database/simrs/pasien.go index 1d48ff6..273d70e 100644 --- a/pkg/database/simrs/pasien.go +++ b/pkg/database/simrs/pasien.go @@ -1,4 +1,4 @@ -package databaserepo +package simrs import ( "api-lis/pkg/models/simrs/mikrobiologi" diff --git a/pkg/database/simrs/pendaftaran.go b/pkg/database/simrs/pendaftaran.go index ee7e2e8..59556ff 100644 --- a/pkg/database/simrs/pendaftaran.go +++ b/pkg/database/simrs/pendaftaran.go @@ -1,4 +1,4 @@ -package databaserepo +package simrs import ( "api-lis/pkg/models/simrs/mikrobiologi" diff --git a/pkg/database/simrs/ruang.go b/pkg/database/simrs/ruang.go index 6c2ea59..85d85a8 100644 --- a/pkg/database/simrs/ruang.go +++ b/pkg/database/simrs/ruang.go @@ -1,4 +1,4 @@ -package databaserepo +package simrs import ( "api-lis/pkg/models/simrs/ruang" diff --git a/pkg/handlers/mikrobiologi/mikrobiologi.go b/pkg/handlers/mikrobiologi/mikrobiologi.go index 38c3210..d69e62d 100644 --- a/pkg/handlers/mikrobiologi/mikrobiologi.go +++ b/pkg/handlers/mikrobiologi/mikrobiologi.go @@ -2,7 +2,7 @@ package mikrobiologi import ( "api-lis/internal/database" - connDatabase "api-lis/pkg/database/simrs" + "api-lis/pkg/database/simrs" "api-lis/pkg/models/simrs/mikrobiologi" "log" "net/http" @@ -12,8 +12,13 @@ import ( ) func SendDataLISMikro(c *gin.Context) { - db := database.New().GetDB() - simrsDB := connDatabase.NewDatabaseService(db) + db := database.New().GetDB("simrs") + if db == nil { + log.Println("DB nil") + c.JSON(500, gin.H{"message": "DB nil"}) + return + } + simrsDB := simrs.NewDatabaseService(db) var req *mikrobiologi.RequestPasienMikrobiologi err := c.Bind(&req) diff --git a/pkg/handlers/mikrobiologi/response.go b/pkg/handlers/mikrobiologi/response.go index 645a1fd..82f0f5b 100644 --- a/pkg/handlers/mikrobiologi/response.go +++ b/pkg/handlers/mikrobiologi/response.go @@ -77,7 +77,3 @@ func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response return responses, nil } - -func ResponseBatalMikro(request *mikrobiologi.RequestBatalMikro) { - -}