Bids schema and creating

This commit is contained in:
2026-07-17 23:22:13 +03:00
parent 7cff348d0d
commit 46c01a98dc
5 changed files with 90 additions and 1 deletions
@@ -1,6 +1,8 @@
defmodule NeonVertigoService.MessageProcessor do
alias NeonVertigoService.Repo
import Ecto.Query, only: [from: 2]
def process_message(mqtt_pid, {"auctions", "create"}, payload, properties) do
changeset = Auction.changeset(%Auction{}, payload)
reply = case Repo.insert(changeset) do
@@ -13,6 +15,28 @@ defmodule NeonVertigoService.MessageProcessor do
reply(reply, mqtt_pid, properties)
end
def process_message(mqtt_pid, {"auctions", auction_gid, "bid"}, payload, properties) do
auction = Repo.get(Auction, auction_gid)
if is_nil(auction) do
{:not_found, auction_gid}
else
changeset = Bid.changeset(%Bid{}, Map.put(payload, "auction_gid", auction.gid))
reply = case Repo.insert(changeset) do
{:ok, bid} ->
bid_data = %{
bid: bid.bid,
bidder_gid: bid.bidder_gid,
timestamp: bid.bid_timestamp
}
send_mqtt(bid_data, mqtt_pid, "notify/new_bid/#{auction.gid}")
%{ok: true}
{:error, changeset} -> %{ok: false}
end
reply(reply, mqtt_pid, properties)
end
end
def process_message(_, _, _, _) do
{:ok, :unknown_message}
end
+1 -1
View File
@@ -25,7 +25,7 @@ defmodule NeonVertigoService.Mqtt.Server do
)
{:ok, _mqtt_props} = :emqtt.connect(mqtt_pid)
:emqtt.subscribe(mqtt_pid, %{}, [{"$share/neon-vertigo-service/auctions/+", [{:qos, 1}]}])
:emqtt.subscribe(mqtt_pid, %{}, [{"$share/neon-vertigo-service/auctions/#", [{:qos, 1}]}])
{:noreply, %{state | mqtt_pid: mqtt_pid}}
end