package neo4j import ( "context" "git.dragse.it/anthrove/e621-sdk-go/pkg/e621/model" "github.com/neo4j/neo4j-go-driver/v5/neo4j" ) func CreateUserNode(ctx context.Context, driver neo4j.DriverWithContext, user model.User) error { query := ` MERGE (u:e621User {e621ID: $id, e621Username: $name}); ` params := map[string]interface{}{ "id": user.ID, "name": user.Name, } _, err := neo4j.ExecuteQuery(ctx, driver, query, params, neo4j.EagerResultTransformer) if err != nil { return err } return nil } func GetUserFavoritesCount(ctx context.Context, driver neo4j.DriverWithContext, userID model.UserID) (int64, error) { var userFavoriteCount int64 query := ` MATCH (:e621User {e621ID: $userID})-[:IS_FAVORITE]->(:e621Post) RETURN count(*) AS numberOfFavoritedPosts; ` params := map[string]interface{}{ "userID": userID, } result, err := neo4j.ExecuteQuery(ctx, driver, query, params, neo4j.EagerResultTransformer) if err != nil { return 0, err } if len(result.Records) == 0 { // no matches -> user does not exist, return count 0 return userFavoriteCount, err } record := result.Records[0] userFavoriteCount, _, err = neo4j.GetRecordValue[int64](record, "numberOfFavoritedPosts") if err != nil { return userFavoriteCount, err } return userFavoriteCount, nil }