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 }