# frozen_string_literal: true

require "discourse_dev/record"
require "faker"

module DiscourseDev
  class Message < Record
    def initialize
      super(::ChatMessage, 200)
    end

    def data
      if Faker::Boolean.boolean(true_ratio: 0.5)
        channel = ::ChatChannel.where(chatable_type: "DirectMessage").order("RANDOM()").first
        channel.user_chat_channel_memberships.update_all(following: true)
        user = channel.chatable.users.order("RANDOM()").first
      else
        membership = ::UserChatChannelMembership.order("RANDOM()").first
        channel = membership.chat_channel
        user = membership.user
      end

      { user: user, content: Faker::Lorem.paragraph, chat_channel: channel }
    end

    def create!
      Chat::ChatMessageCreator.create(data)
    end
  end
end