Class: Async::Matrix::Bridge::Discord::DB::Message
- Inherits:
-
Sequel::Model
- Object
- Sequel::Model
- Async::Matrix::Bridge::Discord::DB::Message
- Defined in:
- lib/async/matrix/bridge/discord/db/message.rb
Overview
Maps a Discord message to one or more Matrix events.
A single Discord message may produce multiple Matrix events (one per attachment), distinguished by discord_attachment_id. The composite unique index on (discord_id, discord_attachment_id, discord_channel_id, discord_channel_receiver) ensures no duplicates.
msg = Message.create(
discord_id: "msg1", discord_channel_id: "ch1",
discord_sender: "user1", mxid: "$evt1", timestamp: 1234567890
)
msg.portal # => Portal
Class Method Summary collapse
-
.by_discord_id(discord_id, channel_id, receiver = "") ⇒ Object
Find all parts of a Discord message (text + attachments).
-
.by_mxid(mxid) ⇒ Object
Find a message by its Matrix event ID.
Instance Method Summary collapse
Class Method Details
.by_discord_id(discord_id, channel_id, receiver = "") ⇒ Object
Find all parts of a Discord message (text + attachments).
41 42 43 44 45 46 47 |
# File 'lib/async/matrix/bridge/discord/db/message.rb', line 41 def self.by_discord_id(discord_id, channel_id, receiver = "") where( discord_id: discord_id, discord_channel_id: channel_id, discord_channel_receiver: receiver ).order(:discord_attachment_id).all end |
.by_mxid(mxid) ⇒ Object
Find a message by its Matrix event ID.
50 51 52 |
# File 'lib/async/matrix/bridge/discord/db/message.rb', line 50 def self.by_mxid(mxid) first(mxid: mxid) end |
Instance Method Details
#validate ⇒ Object
33 34 35 36 37 38 |
# File 'lib/async/matrix/bridge/discord/db/message.rb', line 33 def validate super errors.add(:discord_id, "cannot be empty") if discord_id.nil? || discord_id.empty? errors.add(:mxid, "cannot be empty") if mxid.nil? || mxid.empty? errors.add(:discord_sender, "cannot be empty") if discord_sender.nil? || discord_sender.empty? end |