defmodule Noizu.Weaviate.Struct.DataObject do @moduledoc """ Struct for representing a data object in Weaviate. """ defstruct [:class_name, :properties, :additional_properties, :id, :vector, :tenant] @enforce_keys [:class_name, :properties] @type t :: %__MODULE__{ class_name: String.t(), properties: map(), additional_properties: map(), id: String.t(), vector: list(number()), tenant: String.t() } def from_json(json) when is_list(json) do Enum.map(json, & from_json(&1)) end def from_json(nil), do: nil def from_json(%{} = json) do %__MODULE__{ class_name: json[:className], properties: Noizu.Weaviate.Struct.Property.from_json(json[:properties]), additional_properties: json[:additionalProperties], vector: json[:vector], id: json[:id], tenant: json[:tenant] } end end