chat/internal/svc/cassandra.go

37 lines
1.1 KiB
Go
Raw Normal View History

2025-12-31 09:36:02 +00:00
package svc
import (
"chat/internal/config"
"chat/internal/library/cassandra"
repoImpl "chat/internal/repository"
"context"
"github.com/zeromicro/go-zero/core/logx"
)
func initCassandra(ctx context.Context, c config.CassandraConf) (*cassandra.DB, error) {
// 初始化 Cassandra DB
var cassandraOpts []cassandra.Option
cassandraOpts = append(cassandraOpts, cassandra.WithHosts(c.Hosts...))
cassandraOpts = append(cassandraOpts, cassandra.WithPort(c.Port))
cassandraOpts = append(cassandraOpts, cassandra.WithKeyspace(c.Keyspace))
if c.UseAuth {
cassandraOpts = append(cassandraOpts, cassandra.WithAuth(c.Username, c.Password))
}
cassandraDB, err := cassandra.New(cassandraOpts...)
if err != nil {
logx.Errorf("Failed to connect to Cassandra: %v", err)
return nil, err
}
logx.Infof("Connected to Cassandra at %v:%d", c.Hosts, c.Port)
// 初始化 schema創建 keyspace 和表)
if err := repoImpl.InitSchema(ctx, cassandraDB, c.Keyspace); err != nil {
logx.Errorf("Failed to initialize Cassandra schema: %v", err)
return nil, err
}
logx.Infof("Cassandra schema initialized for keyspace: %s", c.Keyspace)
return cassandraDB, nil
}