Some checks failed
ci/woodpecker/push/ledger Pipeline is pending
ci/woodpecker/push/nats Pipeline is pending
ci/woodpecker/push/notification Pipeline is pending
ci/woodpecker/push/payments_orchestrator Pipeline is pending
ci/woodpecker/push/billing_fees Pipeline was successful
ci/woodpecker/push/bff Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/chain_gateway Pipeline was successful
ci/woodpecker/push/fx_ingestor Pipeline was successful
ci/woodpecker/push/fx_oracle Pipeline failed
ci/woodpecker/push/bump_version unknown status
ci/woodpecker/push/frontend Pipeline failed
50 lines
902 B
Go
50 lines
902 B
Go
package mongo
|
|
|
|
import (
|
|
"net"
|
|
"strings"
|
|
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
func buildOptions(s *DBSettings) *options.ClientOptions {
|
|
opts := options.Client()
|
|
|
|
if s.URI != "" {
|
|
return opts.ApplyURI(s.URI)
|
|
}
|
|
|
|
hosts := make([]string, 0, len(s.Hosts)+1)
|
|
for _, h := range s.Hosts {
|
|
if trimmed := strings.TrimSpace(h); trimmed != "" {
|
|
hosts = append(hosts, trimmed)
|
|
}
|
|
}
|
|
|
|
if len(hosts) == 0 && s.Host != "" {
|
|
host := s.Host
|
|
if _, _, err := net.SplitHostPort(host); err != nil && s.Port != "" {
|
|
host = net.JoinHostPort(host, s.Port)
|
|
}
|
|
hosts = append(hosts, host)
|
|
}
|
|
|
|
if len(hosts) > 0 {
|
|
opts.SetHosts(hosts)
|
|
}
|
|
|
|
if s.ReplicaSet != "" {
|
|
opts.SetReplicaSet(s.ReplicaSet)
|
|
}
|
|
|
|
cred := options.Credential{
|
|
AuthMechanism: s.AuthMechanism,
|
|
AuthSource: s.AuthSource,
|
|
Username: s.User,
|
|
Password: s.Password,
|
|
}
|
|
opts.SetAuth(cred)
|
|
|
|
return opts
|
|
}
|