Sha256: 62dd72e005b3f6bc0000dfd043cb6cde7ca6fa596b2924c62f33a947440de127

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

module OasRails
  module EsquemaBuilder
    class << self
      # Builds a schema for a class when it is used as incoming API data.
      #
      # @param klass [Class] The class for which the schema is built.
      # @return [Hash] The schema as a JSON-compatible hash.
      def build_incoming_schema(klass:)
        configure_common_settings
        Esquema.configuration.excluded_columns = OasRails.config.excluded_columns_incoming

        Esquema::Builder.new(klass).build_schema.as_json
      end

      # Builds a schema for a class when it is used as outgoing API data.
      #
      # @param klass [Class] The class for which the schema is built.
      # @return [Hash] The schema as a JSON-compatible hash.
      def build_outgoing_schema(klass:)
        configure_common_settings
        Esquema.configuration.excluded_columns = OasRails.config.excluded_columns_outgoing

        Esquema::Builder.new(klass).build_schema.as_json
      end

      private

      # Configures common settings for schema building.
      #
      # Excludes associations and foreign keys from the schema.
      def configure_common_settings
        Esquema.configuration.exclude_associations = true
        Esquema.configuration.exclude_foreign_keys = true
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
oas_rails-0.4.1 lib/oas_rails/esquema_builder.rb
oas_rails-0.4.0 lib/oas_rails/esquema_builder.rb
oas_rails-0.3.0 lib/oas_rails/esquema_builder.rb