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/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/auth/jwt_strategy.rb,
lib/kabk/relation_hydrator.rb

Overview

Kabk module namespace

Defined Under Namespace

Modules: Auth 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.1.1"

Class Method Summary collapse

Class Method Details

.register(name:, table:) { ... } ⇒ Object

Register a new model as a resource

Parameters:

  • name (String, Symbol)

    The unique identifier for the resource

  • table (Class)

    The Sequel::Model class

Yields:

  • Block evaluated in the context of a ResourceBuilder



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/kabk.rb', line 26

def self.register(name:, table:, &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}"

  Registry.instance.register(resource)
  resource
end