Module: Kabk
- Defined in:
- lib/kabk.rb,
lib/kabk/field.rb,
lib/kabk/errors.rb,
lib/kabk/version.rb,
lib/kabk/registry.rb,
lib/kabk/resource.rb,
lib/kabk/validator.rb,
lib/kabk/concurrency.rb,
lib/kabk/rest_engine.rb,
lib/kabk/adapters/base.rb,
lib/kabk/query_builder.rb,
lib/kabk/export_handler.rb,
lib/kabk/upload_handler.rb,
lib/kabk/schema_renderer.rb,
lib/kabk/resource_builder.rb,
lib/kabk/relation_hydrator.rb,
lib/kabk/adapters/sequel_adapter.rb
Overview
Kabk module namespace
Defined Under Namespace
Modules: Adapters Classes: ApiError, Concurrency, ConcurrencyConflictError, Error, ExportHandler, Field, ForbiddenError, InvalidFieldError, InvalidOldPasswordError, NotFoundError, QueryBuilder, Registry, RelationHydrator, Resource, ResourceBuilder, RestEngine, SchemaRenderer, UnauthorizedError, UploadHandler, ValidationError, Validator
Constant Summary collapse
- VERSION =
"0.2.0"
Class Method Summary collapse
-
.register(name:, table:, adapter: nil) { ... } ⇒ Object
Register a new model as a resource.
Class Method Details
.register(name:, table:, adapter: nil) { ... } ⇒ Object
Register a new model as a resource
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/kabk.rb', line 28 def self.register(name:, table:, adapter: nil, &block) resource = Resource.new(name: name, model_class: table) builder = ResourceBuilder.new(resource) builder.instance_eval(&block) if block_given? # Fallbacks per protocol resource.plural_name ||= "#{name}s" resource.title ||= resource.plural_name.capitalize resource.icon ||= "Database" resource.api_path ||= "/api/admin/#{resource.plural_name}" # Determine and assign adapter if adapter resource.adapter = adapter elsif defined?(Sequel::Model) && table < Sequel::Model resource.adapter = Adapters::SequelAdapter.new(resource) else raise ArgumentError, "Could not determine appropriate adapter for #{table}. Please provide an explicit adapter." end Registry.instance.register(resource) resource end |