package neo4j import ( "context" "git.dragse.it/anthrove/e621-sdk-go/pkg/e621/model" "git.dragse.it/anthrove/e621-to-graph/pkg/logic" "github.com/neo4j/neo4j-go-driver/v5/neo4j" "github.com/neo4j/neo4j-go-driver/v5/neo4j/config" ) type neo4jConnection struct { driver neo4j.DriverWithContext neo4jDebug bool } func NewNeo4JConnection(neo4jDebug bool) logic.GraphConnection { return &neo4jConnection{ driver: nil, neo4jDebug: neo4jDebug, } } func (c *neo4jConnection) GetUserFavoriteCount(ctx context.Context, userID model.UserID) (int64, error) { return GetUserFavoritesCount(ctx, c.driver, userID) } func (c *neo4jConnection) CheckUserToPostLink(ctx context.Context, e621PostID model.PostID, e621UserID model.UserID) (bool, error) { return CheckUserToPostLink(ctx, c.driver, e621PostID, e621UserID) } func (c *neo4jConnection) EstablishPostToTagLink(ctx context.Context, e621PostID model.PostID, e621Tag string) error { return EstablishPostTagLink(ctx, c.driver, e621PostID, e621Tag) } func (c *neo4jConnection) EstablishPostToSourceLink(ctx context.Context, e621PostID model.PostID, sourceURL string) error { return EstablishPostToSourceLink(ctx, c.driver, e621PostID, sourceURL) } func (c *neo4jConnection) EstablishUserToPostLink(ctx context.Context, e621PostID model.PostID, e621UserID model.UserID) error { return EstablishUserToPostLink(ctx, c.driver, e621PostID, e621UserID) } func (c *neo4jConnection) UploadTag(ctx context.Context, name string, tagType string) error { return CreateTagNode(ctx, c.driver, name, tagType) } func (c *neo4jConnection) UploadPost(ctx context.Context, postID model.PostID) error { return CreatePostNode(ctx, c.driver, postID) } func (c *neo4jConnection) UploadSource(ctx context.Context, SourceURL string) error { return CreateSourceNode(ctx, c.driver, SourceURL) } func (c *neo4jConnection) UploadUser(ctx context.Context, user model.User) error { return CreateUserNode(ctx, c.driver, user) } func (c *neo4jConnection) Connect(ctx context.Context, endpoint string, username string, password string) error { driver, err := neo4j.NewDriverWithContext(endpoint, neo4j.BasicAuth(username, password, ""), logger(c.neo4jDebug)) if err != nil { return err } err = driver.VerifyAuthentication(ctx, nil) if err != nil { return err } c.driver = driver return nil } func logger(neo4jDebug bool) func(config *config.Config) { return func(config *config.Config) { config.Log = NewNeo4jLogger(neo4jDebug) } }