chat/internal/svc/cassandra.go

37 lines
1.1 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}