def build_schema()

in src/aaz_dev/swagger/model/schema/cmd_builder.py [0:0]


    def build_schema(self, schema):
        schema_type = getattr(schema, 'type', None)
        if schema_type == "string":
            if schema.format is None or schema.format == "uri":
                if self.in_base:
                    model = CMDStringSchemaBase()
                else:
                    model = CMDStringSchema()
            elif schema.format == "byte":
                if self.in_base:
                    model = CMDByteSchemaBase()
                else:
                    model = CMDByteSchema()
            elif schema.format == "binary":
                if self.in_base:
                    model = CMDBinarySchemaBase()
                else:
                    model = CMDBinarySchema()
            elif schema.format == "date":
                if self.in_base:
                    model = CMDDateSchemaBase()
                else:
                    model = CMDDateSchema()
            elif schema.format == "date-time":
                if self.in_base:
                    model = CMDDateTimeSchemaBase()
                else:
                    model = CMDDateTimeSchema()
            elif schema.format == "time":
                if self.in_base:
                    model = CMDTimeSchemaBase()
                else:
                    model = CMDTimeSchema()
            elif schema.format == "password":
                if self.in_base:
                    model = CMDPasswordSchemaBase()
                else:
                    model = CMDPasswordSchema()
            elif schema.format == "duration":
                if self.in_base:
                    model = CMDDurationSchemaBase()
                else:
                    model = CMDDurationSchema()
            elif schema.format == "uuid":
                if self.in_base:
                    model = CMDUuidSchemaBase()
                else:
                    model = CMDUuidSchema()
            elif schema.format == "arm-id":
                if self.in_base:
                    model = CMDResourceIdSchemaBase()
                else:
                    model = CMDResourceIdSchema()
            else:
                raise exceptions.InvalidSwaggerValueError(
                    f"format is not supported", key=getattr(schema, "traces", None), value=[schema_type, schema.format])
        elif schema_type == "integer":
            if schema.format is None:
                if self.in_base:
                    model = CMDIntegerSchemaBase()
                else:
                    model = CMDIntegerSchema()
            elif schema.format == "int32":
                if self.in_base:
                    model = CMDInteger32SchemaBase()
                else:
                    model = CMDInteger32Schema()
            elif schema.format == "int64":
                if self.in_base:
                    model = CMDInteger64SchemaBase()
                else:
                    model = CMDInteger64Schema()
            else:
                raise exceptions.InvalidSwaggerValueError(
                    f"format is not supported", key=getattr(schema, "traces", None), value=[schema_type, schema.format])
        elif schema_type == "boolean":
            if schema.format is None:
                if self.in_base:
                    model = CMDBooleanSchemaBase()
                else:
                    model = CMDBooleanSchema()
            else:
                raise exceptions.InvalidSwaggerValueError(
                    f"format is not supported", key=getattr(schema, "traces", None), value=[schema_type, schema.format])
        elif schema_type == "number":
            if schema.format is None:
                if self.in_base:
                    model = CMDFloatSchemaBase()
                else:
                    model = CMDFloatSchema()
            elif schema.format == "float":
                if self.in_base:
                    model = CMDFloat32SchemaBase()
                else:
                    model = CMDFloat32Schema()
            elif schema.format == "double":
                if self.in_base:
                    model = CMDFloat64SchemaBase()
                else:
                    model = CMDFloat64Schema()
            else:
                raise exceptions.InvalidSwaggerValueError(
                    f"format is not supported", key=getattr(schema, "traces", None), value=[schema_type, schema.format])
        elif schema_type == "array":
            if schema.format is None:
                if self.in_base:
                    model = CMDArraySchemaBase()
                else:
                    model = CMDArraySchema()
            else:
                raise exceptions.InvalidSwaggerValueError(
                    f"format is not supported", key=getattr(schema, "traces", None), value=[schema_type, schema.format])
        elif schema_type == "object" or getattr(schema, "properties", None) or \
                getattr(schema, "additional_properties", None):
            if schema.format is None:
                if self.in_base:
                    model = CMDObjectSchemaBase()
                else:
                    model = CMDObjectSchema()
            else:
                raise exceptions.InvalidSwaggerValueError(
                    f"format is not supported", key=getattr(schema, "traces", None), value=[schema_type, schema.format])
        # for swagger schema only
        elif getattr(schema, "all_of", None) is not None:
            model = self.build_schema(schema.all_of[0])
        elif getattr(schema, "ref_instance", None) is not None:
            model = self.build_schema(schema.ref_instance)
        elif schema_type is None:  # according to the swagger spec, the type is any if not defined
            if self.in_base:
                model = CMDAnyTypeSchemaBase()
            else:
                model = CMDAnyTypeSchema()
        else:
            raise exceptions.InvalidSwaggerValueError(
                f"type is not supported", key=getattr(schema, "traces", None), value=[schema_type])

        model.read_only = self.read_only
        model.frozen = self.frozen
        return model