Skip to content

Accessing a connection's state right after it connected #299

Open
@greg-rychlewski

Description

@greg-rychlewski

Background

I implemented data change notifications for the SQLite driver. Given a connection and a pid, whenever an insert/update/delete on the connection is performed, the SQLite NIF will send a message to the pid.

This works well on the driver level but on the Ecto level it's not so straight forward for a couple reasons:

  1. We are accessing a pool and not creating the connections ourselves directly
  2. The SQLite driver stores the handle for the database in the connection's state.

Why # 2 is relevant is because I thought about using :after_connect to hook the connections to the listener. But the only argument passed to it is %DBConnection{}, which doesn't have the database handle. Without access to the state it's not possible to use the SQLite connection.

Proposal/question

Would it make sense to allow users to supply a 2-arity function which receives the connection and the state? If the answer is yes, we also allow {m, f, a} so should that one be deprecated to avoid confusion (i.e. why is state not passed to mfa)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions