defmodule SmartCity.TestDataGenerator.Schema do @moduledoc """ Module containing retrieval functions for schema definitions. """ @doc """ Returns a map containing schema based on requested type. """ @spec get(atom()) :: map() | {:error, String.t()} def get(:basic) do {:ok, %{ "schema" => [ %{ name: "id", type: "integer", ingestion_field_selector: "id" }, %{ name: "name", type: "string", ingestion_field_selector: "name" } ] }} end def get(:big_data) do {:ok, %{ "schema" => [ %{ name: "big", type: "string", ingestion_field_selector: "big" }, %{ name: "bigbig", type: "integer", ingestion_field_selector: "bigbig" }, %{ name: "data", type: "float", ingestion_field_selector: "data" }, %{ name: "bigger_data", type: "date", format: "{ISO:Extended:Z}", ingestion_field_selector: "bigger_data" } ] }} end def get(:pirate_dilemma) do {:ok, %{ "schema" => [ %{ name: "go", type: "integer", ingestion_field_selector: "go" }, %{ name: "fund", type: "string", ingestion_field_selector: "fund" }, %{ name: "yourself", type: "string", ingestion_field_selector: "yourself" } ] }} end def get(:test) do {:ok, %{ "schema" => [ %{ name: "my_int", type: "integer", ingestion_field_selector: "my_int" }, %{ name: "my_string", type: "string", ingestion_field_selector: "my_string" }, %{ name: "my_date", type: "date", format: "{ISO:Extended:Z}", ingestion_field_selector: "my_date" }, %{ name: "my_float", type: "float", ingestion_field_selector: "my_float" }, %{ name: "my_boolean", type: "boolean", ingestion_field_selector: "my_boolean" } ] }} end def get(_) do {:error, "Schema not found"} end end