17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/aepic/concerns/api_controller.rb', line 17
def has_api!
human_name = resource_class.model_name.human
param_group_id = "#{resource_class.model_name.singular}_id".to_sym
param_group_resource = resource_class.model_name.singular.to_sym
param_group_id_resource = "#{resource_class.model_name.singular}_resource".to_sym
resource_description do
formats ['json']
error 404, 'Missing'
error 500, 'Server crashed for some reason'
end
if block_given?
yield
else
def_param_group(param_group_id) do
param :id, Integer, "ID of #{human_name}"
end
columns = resource_class.columns_hash
def_param_group(param_group_resource) do
param param_group_resource, Hash, action_aware: true do
columns.each do |name, column|
param name.to_sym, column.sql_type.classify.safe_constantize || String, required: !column.null unless name == 'id'
end
end
end
def_param_group(param_group_id_resource) do
param_group(param_group_id)
param_group(param_group_resource)
end
end
class_eval do
api! "List #{human_name.pluralize}"
formats %w(json jsonld)
def index
super
end
api! "Show #{human_name}"
param_group(param_group_id)
def show
super
end
api! "Create #{human_name}"
param_group(param_group_resource)
def create
super
end
api! "Update #{human_name}"
param_group(param_group_id_resource)
def update
super
end
api! "Delete #{human_name}"
param_group(param_group_id)
def destroy
super
end
end
end
|