Neo4j.Transaction (Neo4jEx v0.1.4)

View Source

Neo4j Transaction for executing queries within a transactional context.

Transactions provide ACID guarantees and allow you to group multiple queries together. They can be committed or rolled back as a unit.

Usage

# Using driver transaction helper
result = Neo4j.Driver.transaction(driver, fn tx ->
  Neo4j.Transaction.run(tx, "CREATE (p:Person {name: $name})", %{name: "Alice"})
  Neo4j.Transaction.run(tx, "CREATE (p:Person {name: $name})", %{name: "Bob"})
  # Transaction is automatically committed if function succeeds
end)

# Manual transaction management
{:ok, session} = Neo4j.Driver.create_session(driver)
{:ok, tx} = Neo4j.Session.begin_transaction(session)
{:ok, result} = Neo4j.Transaction.run(tx, "CREATE (p:Person {name: $name})", %{name: "Carol"})
:ok = Neo4j.Transaction.commit(tx)
Neo4j.Session.close(session)

Summary

Functions

Commits the transaction.

Executes a function within a transaction context.

Gets transaction information.

Rolls back the transaction.

Executes a Cypher query within the transaction.

Functions

commit(transaction)

Commits the transaction.

Parameters

  • transaction: Transaction to commit

Returns

  • :ok on success
  • {:error, reason} on failure

Examples

:ok = Neo4j.Transaction.commit(tx)

execute(session, fun)

Executes a function within a transaction context.

The transaction is automatically committed if the function succeeds, or rolled back if it raises an exception.

Parameters

  • session: Session to create transaction in
  • fun: Function that receives the transaction as an argument

Returns

  • Result of the function on success
  • {:error, reason} on failure

Examples

result = Neo4j.Transaction.execute(session, fn tx ->
  Neo4j.Transaction.run(tx, "CREATE (p:Person {name: $name})", %{name: "Alice"})
  Neo4j.Transaction.run(tx, "MATCH (p:Person) RETURN count(p)")
end)

info(transaction)

Gets transaction information.

Parameters

  • transaction: Transaction map

Returns

Transaction information map

rollback(transaction)

Rolls back the transaction.

Parameters

  • transaction: Transaction to rollback

Returns

  • :ok on success
  • {:error, reason} on failure

Examples

:ok = Neo4j.Transaction.rollback(tx)

run(transaction, query, params \\ %{}, opts \\ [])

Executes a Cypher query within the transaction.

Parameters

  • transaction: Transaction map
  • query: Cypher query string
  • params: Query parameters map (default: %{})
  • opts: Query options (default: [])

Options

  • :timeout - Query timeout in milliseconds

Returns

  • {:ok, results} on success where results is a list of records
  • {:error, reason} on failure

Examples

{:ok, results} = Neo4j.Transaction.run(tx, "MATCH (n:Person) RETURN n.name")
{:ok, results} = Neo4j.Transaction.run(tx, "CREATE (p:Person {name: $name})", %{name: "Alice"})