Current section
Files
Jump to
Current section
Files
lib/sitemaps/pagemap_dataobject.ex
defmodule AshSitemap.Sitemaps.PageMap.DataObject do
@moduledoc """
A struct module representing a pagemap dataobject. This module can also be used to implement manual pagemap dataobjects.
See more https://developers.google.com/search/docs/crawling-indexing/sitemaps/news-sitemap
"""
@callback generate(record :: Ash.Resource.t()) :: __MODULE__.t()
defmacro __using__(_opts) do
quote do
@behaviour AshSitemap.Sitemaps.PageMap.DataObject
end
end
@enforce_keys [
:type
]
@fields quote(
do: [
type: String.t(),
id: String.t() | nil,
attribute: [AshSitemap.Sitemaps.PageMap.DataObject.Attribute.t()]
]
)
@derive []
defstruct Keyword.keys(@fields)
@type t() :: %__MODULE__{unquote_splicing(@fields)}
end