File size: 950 Bytes
8da2481 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | defmodule Plausible.Event.WriteBuffer do
@moduledoc false
%{
header: header,
insert_sql: insert_sql,
insert_opts: insert_opts,
fields: fields,
encoding_types: encoding_types
} =
Plausible.Ingestion.WriteBuffer.compile_time_prepare(Plausible.ClickhouseEventV2)
def child_spec(opts) do
opts =
Keyword.merge(opts,
name: __MODULE__,
header: unquote(header),
insert_sql: unquote(insert_sql),
insert_opts: unquote(insert_opts)
)
Plausible.Ingestion.WriteBuffer.child_spec(opts)
end
def insert(event) do
row_binary =
[Enum.map(unquote(fields), fn field -> Map.fetch!(event, field) end)]
|> Ch.RowBinary._encode_rows(unquote(encoding_types))
|> IO.iodata_to_binary()
:ok = Plausible.Ingestion.WriteBuffer.insert(__MODULE__, row_binary)
{:ok, event}
end
def flush do
Plausible.Ingestion.WriteBuffer.flush(__MODULE__)
end
end
|