37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
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
|
||
}
|