Packages
electric
1.4.8
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.16
1.4.16-beta-1
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.14
1.1.13
1.1.12
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
retired
1.1.5
retired
1.1.4
retired
1.1.3
retired
1.1.2
1.1.1
1.1.0
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.15
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-beta.23
1.0.0-beta.22
1.0.0-beta.20
1.0.0-beta.19
1.0.0-beta.18
1.0.0-beta.17
1.0.0-beta.16
1.0.0-beta.15
1.0.0-beta.14
1.0.0-beta.13
1.0.0-beta.12
1.0.0-beta.11
1.0.0-beta.10
1.0.0-beta.9
1.0.0-beta.8
1.0.0-beta.7
1.0.0-beta.6
1.0.0-beta.5
1.0.0-beta.4
1.0.0-beta.3
1.0.0-beta.2
1.0.0-beta.1
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.5.2
0.4.4
Postgres sync engine. Sync little subsets of your Postgres data into local apps and services.
Current section
Files
Jump to
Current section
Files
lib/electric/postgres/logical_replication/messages.ex
defmodule Electric.Postgres.LogicalReplication.Messages do
alias Electric.Postgres.LogicalReplication.Messages
alias Electric.Postgres.Lsn
@type relation_id() :: non_neg_integer
defmodule Begin do
defstruct([:final_lsn, :commit_timestamp, :xid])
@type t() :: %__MODULE__{
final_lsn: Lsn.t(),
commit_timestamp: DateTime.t(),
xid: Lsn.int32()
}
end
defmodule Message do
defstruct [:transactional?, :lsn, :prefix, :content]
@type t() :: %__MODULE__{
transactional?: boolean(),
lsn: Lsn.t(),
prefix: String.t(),
content: binary()
}
end
defmodule Commit do
defstruct([:flags, :lsn, :end_lsn, :commit_timestamp])
@type t() :: %__MODULE__{
flags: list(),
lsn: Lsn.t(),
end_lsn: Lsn.t(),
commit_timestamp: DateTime.t()
}
end
defmodule Origin do
defstruct([:origin_commit_lsn, :name])
@type t() :: %__MODULE__{
origin_commit_lsn: Lsn.t(),
name: String.t()
}
end
defmodule Relation do
defstruct([:id, :namespace, :name, :replica_identity, :columns])
@type t() :: %__MODULE__{
id: Messages.relation_id(),
namespace: String.t(),
name: String.t(),
replica_identity: :default | :nothing | :all_columns | :index,
columns: [Messages.Relation.Column.t()]
}
end
defmodule Insert do
defstruct([:relation_id, :tuple_data, :bytes])
@type t() :: %__MODULE__{
relation_id: Messages.relation_id(),
tuple_data: tuple(),
bytes: non_neg_integer()
}
end
defmodule Update do
defstruct([:relation_id, :changed_key_tuple_data, :old_tuple_data, :tuple_data, :bytes])
@type t() :: %__MODULE__{
relation_id: Messages.relation_id(),
changed_key_tuple_data: nil | {String.t(), nil | String.t()},
old_tuple_data: tuple(),
tuple_data: tuple(),
bytes: non_neg_integer()
}
end
defmodule Delete do
defstruct([:relation_id, :changed_key_tuple_data, :old_tuple_data, :bytes])
@type t() :: %__MODULE__{
relation_id: Messages.relation_id(),
changed_key_tuple_data: nil | {String.t(), nil | String.t()},
old_tuple_data: nil | tuple(),
bytes: non_neg_integer()
}
end
defmodule Truncate do
defstruct([:number_of_relations, :options, :truncated_relations])
@type t() :: %__MODULE__{
number_of_relations: non_neg_integer(),
options: [atom()],
truncated_relations: [Messages.relation_id()]
}
end
defmodule Type do
defstruct([:id, :namespace, :name])
@type t() :: %__MODULE__{
id: non_neg_integer(),
namespace: String.t(),
name: String.t()
}
end
defmodule Unsupported do
defstruct([:data])
@type t() :: %__MODULE__{data: binary()}
end
defmodule Relation.Column do
defstruct([:flags, :name, :type_oid, :type_modifier])
@type t() :: %__MODULE__{
flags: [:key],
name: String.t(),
type_oid: pos_integer(),
type_modifier: integer()
}
end
@type message ::
Begin.t()
| Commit.t()
| Message.t()
| Origin.t()
| Relation.t()
| Insert.t()
| Update.t()
| Delete.t()
| Truncate.t()
| Type.t()
| Unsupported.t()
end