Added Ecto, Cassandra and Auctions repo

This commit is contained in:
2026-07-15 22:21:33 +03:00
parent 94d601a458
commit 06e86abf33
11 changed files with 83 additions and 49 deletions
+9 -15
View File
@@ -1,20 +1,14 @@
defmodule NeonVertigoService.MessageProcessor do
@ets_auctions NeonVertigoService.Auctions
@ets_bids NeonVertigoService.Bids
def init_tables() do
@ets_auctions = :ets.new(@ets_auctions, [:named_table])
@ets_bids = :ets.new(@ets_bids, [:named_table])
:ok
end
def process_message(["auctions", "create"], payload, _properties) do
gid = payload["gid"]
data = Map.take(payload, ["author_gid", "min_bet"]) |> Enum.map(fn {k, v} -> {String.to_atom(k), v} end) |> Map.new
{min_bet, _} = Decimal.parse(data[:min_bet])
data = Map.put(data, :min_bet, min_bet)
:ets.insert_new(@ets_auctions, {gid, data})
:noreply
changeset = Auction.changeset(%Auction{}, payload)
reply = case NeonVertigoService.Repo.insert(changeset) do
{:ok, auction} ->
%{ok: true, gid: auction.gid}
{:error, changeset} ->
%{ok: false, gid: changeset |> Ecto.Changeset.get_field(:gid)}
end
{:reply, reply}
end
def process_message(_, _, _) do