package neo4j import ( "context" "e621_to_neo4j/database" "e621_to_neo4j/e621/models" "github.com/neo4j/neo4j-go-driver/v5/neo4j" "github.com/neo4j/neo4j-go-driver/v5/neo4j/config" ) type neo4jConnection struct { driver neo4j.DriverWithContext } func (c *neo4jConnection) CheckUserToPostLink(ctx context.Context, e621PostID int64, e621UserID int64) (bool, error) { return RelationshipCheckUserToPost(ctx, c.driver, e621PostID, e621UserID) } func (c *neo4jConnection) EstablishPostToTagLink(ctx context.Context, e621PostID int64, e621Tag string) error { return EstablishPostTagLink(ctx, c.driver, e621PostID, e621Tag) } func (c *neo4jConnection) EstablishPostToSourceLink(ctx context.Context, e621PostID int64, sourceURL string) error { return EstablishPostToSourceLink(ctx, c.driver, e621PostID, sourceURL) } func (c *neo4jConnection) EstablishUserToPostLink(ctx context.Context, e621PostID int64, e621UserID int64) 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, e621ID int64) error { return CreatePostNode(ctx, c.driver, e621ID) } func (c *neo4jConnection) UploadSource(ctx context.Context, SourceURL string) error { return CreateSourceNode(ctx, c.driver, SourceURL) } func (c *neo4jConnection) UploadUser(ctx context.Context, user models.E621User) 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, ""), useConsoleLogger(neo4j.INFO)) if err != nil { return err } err = driver.VerifyAuthentication(context.Background(), nil) if err != nil { return err } c.driver = driver return nil } func NewNeo4JConnection() database.GraphConnection { return &neo4jConnection{} } func useConsoleLogger(level neo4j.LogLevel) func(config *config.Config) { return func(config *config.Config) { config.Log = neo4j.ConsoleLogger(level) } }