package graph import ( "context" "fmt" "strings" "git.dragse.it/anthrove/otter-space-sdk/pkg/graph" "git.dragse.it/anthrove/plug-template/config" log "github.com/sirupsen/logrus" ) var cfg config.OtterSpaceConfig func init() { localCfg, err := config.LoadConfig[config.OtterSpaceConfig](cfg) if err != nil { log.Panic(err) } cfg = localCfg } // ConnectToGraphDatabase establishes a connection to a graph database specified in the config. // Currently, it only supports Neo4j. If the database type is not supported, it returns an error. func ConnectToGraphDatabase(ctx context.Context) (graph.OtterSpace, error) { var connection graph.OtterSpace var err error switch strings.ToLower(cfg.Type) { case "neo4j": connection = graph.NewGraphConnection(cfg.Debug) err = connection.Connect(ctx, cfg.Endpoint, cfg.Username, cfg.Password) if err != nil { return nil, fmt.Errorf("graph: failed to connect to Neo4j: %w", err) } default: return nil, fmt.Errorf("graph: unsupported database type: %s", cfg.Type) } log.WithFields(log.Fields{ "graph_type": cfg.Type, "graph_endpoint": cfg.Endpoint, }, ).Info("graph: successfully connected") return connection, nil }