package scylla import ( "time" "github.com/aykhans/oh-my-chat/internal/adapter/config" "github.com/gocql/gocql" ) func NewDB(config *config.ScyllaConfig) (*gocql.Session, error) { cluster := gocql.NewCluster(config.Hosts...) cluster.Keyspace = config.Keyspace cluster.Consistency = gocql.LocalQuorum cluster.Authenticator = gocql.PasswordAuthenticator{ Username: config.User, Password: config.Password, } cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy( gocql.DCAwareRoundRobinPolicy(config.DataCenter), ) var session *gocql.Session var err error for range 20 { session, err = cluster.CreateSession() if err == nil { return session, nil } time.Sleep(3 * time.Second) } return nil, err }