Class: Foobara::Autocrud::BuildType
Constant Summary
TruncatedInspect::MAX_LENGTH
Instance Attribute Summary collapse
Instance Method Summary
collapse
#validate, #validate_base!
Methods inherited from Command
install!
#inspect, truncating
Methods included from Concern
foobara_class_methods_module_for, foobara_concern?, included
Instance Attribute Details
#domain ⇒ Object
Returns the value of attribute domain.
22
23
24
|
# File 'src/build_type.rb', line 22
def domain
@domain
end
|
#type ⇒ Object
Returns the value of attribute type.
22
23
24
|
# File 'src/build_type.rb', line 22
def type
@type
end
|
Instance Method Details
#build_type ⇒ Object
39
40
41
|
# File 'src/build_type.rb', line 39
def build_type
self.type = (domain || GlobalDomain).foobara_type_from_declaration(type_declaration)
end
|
#create_autocrud_commands_if_needed ⇒ Object
57
58
59
60
61
|
# File 'src/build_type.rb', line 57
def create_autocrud_commands_if_needed
if type.extends?(BuiltinTypes[:entity])
run_subcommand!(CreateCommands, entity_class: type.target_class)
end
end
|
#determine_domain ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'src/build_type.rb', line 24
def determine_domain
domain = inputs[:domain]
self.domain = Domain.to_domain(domain)
rescue Domain::NoSuchDomain => e
if domain.is_a?(::String) || domain.is_a?(::Symbol)
self.domain = Domain.create(domain)
else
raise e
end
end
|
#execute ⇒ Object
13
14
15
16
17
18
19
20
|
# File 'src/build_type.rb', line 13
def execute
determine_domain
build_type
register_type_if_needed
create_autocrud_commands_if_needed
type
end
|
#register_type_if_needed ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'src/build_type.rb', line 43
def register_type_if_needed
if type.registered?
if type_symbol && type_symbol.to_sym != type.type_symbol
raise "Type symbol mismatch: #{type_symbol} versus #{type.type_symbol}"
end
else
type.type_symbol = type_symbol
type.foobara_parent_namespace ||= domain
type.foobara_parent_namespace.foobara_register(type)
end
end
|