module Ollama::DTO

def ==(other)

def ==(other)
  as_json == other.as_json
end

def as_array(obj)

def as_array(obj)
  if obj.nil?
    obj
  elsif obj.respond_to?(:to_ary)
    obj.to_ary
  else
    [ obj ]
  end
end

def as_array_of_hashes(obj)

def as_array_of_hashes(obj)
  if obj.respond_to?(:to_hash)
    [ obj.to_hash ]
  elsif obj.respond_to?(:to_ary)
    obj.to_ary.map(&:to_hash)
  end
end

def as_hash(obj)

def as_hash(obj)
  obj&.to_hash
end

def as_json(*)

def as_json(*)
  self.class.attributes.each_with_object({}) { |a, h| h[a] = send(a) }.
    reject { _2.nil? || _2.ask_and_send(:size) == 0 }
end

def empty?

def empty?
  to_hash.empty?
end

def to_json(*)

def to_json(*)
  as_json.to_json(*)
end