/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.0.1 * User agent: apibuilder app.apibuilder.io/nccloud/reporting-api/0.0.1/flow_erm_schema */ package de.nccloud.reporting.api.v0.erm import io.flow.event.relation.mapper.schema.ErmSpec import io.apibuilder.spec.v0.models.{Enum, EnumValue, Field, Model, Union, UnionType} import de.nccloud.common.v0.models.Audit import de.nccloud.common.v0.models.PageResponse import de.nccloud.common.v0.models.ServiceInfo import de.nccloud.common.v0.models.Sort import de.nccloud.reporting.api.v0.models.DeleteEvent import de.nccloud.reporting.api.v0.models.Field import de.nccloud.reporting.api.v0.models.Filter import de.nccloud.reporting.api.v0.models.ProjectionField import de.nccloud.reporting.api.v0.models.ProjectionFieldSource import de.nccloud.reporting.api.v0.models.QueryForm import de.nccloud.reporting.api.v0.models.QueryResponse import de.nccloud.reporting.api.v0.models.ReportingEvent import de.nccloud.reporting.api.v0.models.ScalarType import de.nccloud.reporting.api.v0.models.Topic import de.nccloud.reporting.api.v0.models.TopicResponse import de.nccloud.reporting.api.v0.models.UpdateEvent import de.nccloud.reporting.api.v0.models.View import de.nccloud.reporting.api.v0.models.ViewForm import de.nccloud.reporting.api.v0.models.ViewResponse object GeneratedErmSchema { implicit lazy val ermSpecAudit: ErmSpec[Audit] = ErmSpec.model( qualifiedName = "de.nccloud.common.v0.models.audit", spec = Model(name = "audit", plural = "audits", fields = Seq( Field(name = "created_at", `type` = "date-time-iso8601", required = true), Field(name = "created_by", `type` = "uuid", required = true), Field(name = "updated_at", `type` = "date-time-iso8601", required = true), Field(name = "updated_by", `type` = "uuid", required = true), )), ) implicit lazy val ermSpecDeleteEvent: ErmSpec[DeleteEvent] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.delete_event", spec = Model(name = "delete_event", plural = "delete_events", fields = Seq( Field(name = "tracking_id", `type` = "string", required = true), Field(name = "audit", `type` = "de.nccloud.common.v0.models.audit", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.common.v0.models.audit" -> ermSpecAudit, ), ) implicit lazy val ermSpecField: ErmSpec[Field] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.field", spec = Model(name = "field", plural = "fields", fields = Seq( Field(name = "type", `type` = "scalar_type", required = true), Field(name = "is_array", `type` = "boolean", required = true), Field(name = "fields", `type` = "map[field]", required = false), Field(name = "label", `type` = "string", required = false), Field(name = "description", `type` = "string", required = false), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.reporting.api.v0.enums.scalar_type" -> ermSpecScalarType, "de.nccloud.reporting.api.v0.models.field" -> ermSpecField, ), ) implicit lazy val ermSpecFilter: ErmSpec[Filter] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.filter", spec = Model(name = "filter", plural = "filters", fields = Seq( Field(name = "expression", `type` = "string", required = false), Field(name = "variables", `type` = "map[json]", required = false), )), ) implicit lazy val ermSpecProjectionFieldSource: ErmSpec[ProjectionFieldSource] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.projection_field_source", spec = Model(name = "projection_field_source", plural = "projection_field_sources", fields = Seq( Field(name = "topic", `type` = "string", required = true), Field(name = "path", `type` = "string", required = true), Field(name = "filter", `type` = "string", required = true), )), ) implicit lazy val ermSpecProjectionField: ErmSpec[ProjectionField] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.projection_field", spec = Model(name = "projection_field", plural = "projection_fields", fields = Seq( Field(name = "label", `type` = "string", required = false), Field(name = "description", `type` = "string", required = false), Field(name = "source", `type` = "projection_field_source", required = false), Field(name = "fields", `type` = "map[projection_field]", required = false), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.reporting.api.v0.models.projection_field_source" -> ermSpecProjectionFieldSource, "de.nccloud.reporting.api.v0.models.projection_field" -> ermSpecProjectionField, ), ) implicit lazy val ermSpecSort: ErmSpec[Sort] = ErmSpec.model( qualifiedName = "de.nccloud.common.v0.models.sort", spec = Model(name = "sort", plural = "sorts", fields = Seq( Field(name = "property", `type` = "string", required = true), Field(name = "direction", `type` = "sort_direction", required = true), )), ) implicit lazy val ermSpecQueryForm: ErmSpec[QueryForm] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.query_form", spec = Model(name = "query_form", plural = "query_forms", fields = Seq( Field(name = "view", `type` = "string", required = false), Field(name = "projection", `type` = "map[projection_field]", required = false), Field(name = "variables", `type` = "map[json]", required = true), Field(name = "sort", `type` = "[de.nccloud.common.v0.models.sort]", required = false), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.reporting.api.v0.models.projection_field" -> ermSpecProjectionField, "de.nccloud.common.v0.models.sort" -> ermSpecSort, ), ) implicit lazy val ermSpecPageResponse: ErmSpec[PageResponse] = ErmSpec.model( qualifiedName = "de.nccloud.common.v0.models.page_response", spec = Model(name = "page_response", plural = "page_responses", fields = Seq( Field(name = "offset", `type` = "integer", required = true), Field(name = "limit", `type` = "integer", required = true), Field(name = "sort", `type` = "[sort]", required = true), Field(name = "total_results", `type` = "long", required = true), Field(name = "total_pages", `type` = "long", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.common.v0.models.sort" -> ermSpecSort, ), ) implicit lazy val ermSpecQueryResponse: ErmSpec[QueryResponse] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.query_response", spec = Model(name = "query_response", plural = "query_responses", fields = Seq( Field(name = "page", `type` = "de.nccloud.common.v0.models.page_response", required = true), Field(name = "data", `type` = "object", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.common.v0.models.page_response" -> ermSpecPageResponse, ), ) implicit lazy val ermSpecServiceInfo: ErmSpec[ServiceInfo] = ErmSpec.model( qualifiedName = "de.nccloud.common.v0.models.service_info", spec = Model(name = "service_info", plural = "service_infos", fields = Seq( Field(name = "name", `type` = "string", required = true), Field(name = "version", `type` = "string", required = true), Field(name = "uri", `type` = "string", required = true), Field(name = "title", `type` = "string", required = false), Field(name = "description", `type` = "string", required = false), )), ) implicit lazy val ermSpecTopic: ErmSpec[Topic] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.topic", spec = Model(name = "topic", plural = "topics", fields = Seq( Field(name = "name", `type` = "string", required = true), Field(name = "service", `type` = "de.nccloud.common.v0.models.service_info", required = true), Field(name = "schema", `type` = "map[field]", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.common.v0.models.service_info" -> ermSpecServiceInfo, "de.nccloud.reporting.api.v0.models.field" -> ermSpecField, ), ) implicit lazy val ermSpecTopicResponse: ErmSpec[TopicResponse] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.topic_response", spec = Model(name = "topic_response", plural = "topic_responses", fields = Seq( Field(name = "page", `type` = "de.nccloud.common.v0.models.page_response", required = true), Field(name = "data", `type` = "[topic]", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.common.v0.models.page_response" -> ermSpecPageResponse, "de.nccloud.reporting.api.v0.models.topic" -> ermSpecTopic, ), ) implicit lazy val ermSpecUpdateEvent: ErmSpec[UpdateEvent] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.update_event", spec = Model(name = "update_event", plural = "update_events", fields = Seq( Field(name = "tracking_id", `type` = "string", required = true), Field(name = "payload", `type` = "object", required = true), Field(name = "audit", `type` = "de.nccloud.common.v0.models.audit", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.common.v0.models.audit" -> ermSpecAudit, ), ) implicit lazy val ermSpecView: ErmSpec[View] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.view", spec = Model(name = "view", plural = "views", fields = Seq( Field(name = "guid", `type` = "uuid", required = true), Field(name = "name", `type` = "string", required = true), Field(name = "projection", `type` = "map[projection_field]", required = true), Field(name = "variables", `type` = "map[scalar_type]", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.reporting.api.v0.models.projection_field" -> ermSpecProjectionField, "de.nccloud.reporting.api.v0.enums.scalar_type" -> ermSpecScalarType, ), ) implicit lazy val ermSpecViewForm: ErmSpec[ViewForm] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.view_form", spec = Model(name = "view_form", plural = "view_forms", fields = Seq( Field(name = "name", `type` = "string", required = true), Field(name = "projection", `type` = "map[projection_field]", required = true), Field(name = "variables", `type` = "map[scalar_type]", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.reporting.api.v0.models.projection_field" -> ermSpecProjectionField, "de.nccloud.reporting.api.v0.enums.scalar_type" -> ermSpecScalarType, ), ) implicit lazy val ermSpecViewResponse: ErmSpec[ViewResponse] = ErmSpec.model( qualifiedName = "de.nccloud.reporting.api.v0.models.view_response", spec = Model(name = "view_response", plural = "view_responses", fields = Seq( Field(name = "page", `type` = "de.nccloud.common.v0.models.page_response", required = true), Field(name = "data", `type` = "[view]", required = true), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.common.v0.models.page_response" -> ermSpecPageResponse, "de.nccloud.reporting.api.v0.models.view" -> ermSpecView, ), ) implicit lazy val ermSpecReportingEvent: ErmSpec[ReportingEvent] = ErmSpec.union( qualifiedName = "de.nccloud.reporting.api.v0.unions.reporting_event", spec = Union(name = "reporting_event", plural = "reporting_events", discriminator = Some("type"), types = Seq( UnionType(`type` = "update_event", discriminatorValue = Some("update_event")), UnionType(`type` = "delete_event", discriminatorValue = Some("delete_event")), )), resolved = Map[String, ErmSpec[_]]( "de.nccloud.reporting.api.v0.models.update_event" -> ermSpecUpdateEvent, "de.nccloud.reporting.api.v0.models.delete_event" -> ermSpecDeleteEvent, ), ) implicit lazy val ermSpecScalarType: ErmSpec[ScalarType] = ErmSpec.`enum`( qualifiedName = "de.nccloud.reporting.api.v0.enums.scalar_type", spec = Enum(name = "scalar_type", plural = "scalar_types", values = Seq( EnumValue(name = "boolean"), EnumValue(name = "date-iso8601"), EnumValue(name = "date-time-iso8601"), EnumValue(name = "decimal"), EnumValue(name = "double"), EnumValue(name = "integer"), EnumValue(name = "long"), EnumValue(name = "string"), EnumValue(name = "uuid"), EnumValue(name = "object"), )), ) val all: Seq[ErmSpec[_]] = Seq( ermSpecAudit, ermSpecDeleteEvent, ermSpecField, ermSpecFilter, ermSpecProjectionFieldSource, ermSpecProjectionField, ermSpecSort, ermSpecQueryForm, ermSpecPageResponse, ermSpecQueryResponse, ermSpecServiceInfo, ermSpecTopic, ermSpecTopicResponse, ermSpecUpdateEvent, ermSpecView, ermSpecViewForm, ermSpecViewResponse, ermSpecReportingEvent, ermSpecScalarType, ) }