rhino_project_core 0.30.0.alpha.6 → 0.30.0.alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7375d890b7e9ecf59b945b1ee1e46b4ae26aac484cde59f062b0ce36cb466e65
4
- data.tar.gz: b78b8369c48e61b6fc28780ac708649a20fbc18a41206b0abd7d12ea288ec2ad
3
+ metadata.gz: 16f50327ef636c37b845d5f8f2feeb58dfb2e53c86245e8f8f730dff87c9fab8
4
+ data.tar.gz: 2ee355cca95557979d484733a19117d11431772a1c89a9db6c76d5b164eb9ef2
5
5
  SHA512:
6
- metadata.gz: 4c67e043a995c9b6166cdf232b7c0c6d56f69001ba1e501fbc7ec395c9c5039c24ce460e3396b7fd2bd388e4ce5238ed50f39c5447606a4b6a9763fe1d54d143
7
- data.tar.gz: 1d87c78f76add2df4c33e5ac071ccf126a1cea7a8b29eb59cbb49c97cf22837a226d7c90877498ca683b1600370f1679f23306f171056e48f33f346cbbe2b8e1
6
+ metadata.gz: af624adac026cfa723d19489c9bca5af76927b44e02d0f308a2a0a7917a581e3509564a98f8ca34d783a46e9d2701753bce053e674ba902f2b97c6ef27176c99
7
+ data.tar.gz: 2e82c35378c75899ac9b36d9212d3934bb4f15aa9f3624463b80a88c19f7af81b599cf7d92429ca870f91031f4270c42b222d43cea5f1cc7ba8b84c841b8c289
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_admin/resource_dsl"
4
+
5
+ module ActiveAdmin
6
+ # This is the class where all the register blocks are evaluated.
7
+ class ResourceDSL
8
+ # Runs in the context of the ResourceDSL
9
+ def rhino_filters
10
+ klass = self.config.resource_class_name.constantize
11
+ klass.ransackable_filters.each do |attr|
12
+ filter attr.to_sym
13
+ end
14
+ end
15
+
16
+ # Runs in the context of the controller
17
+ def rhino_permit_params(permitted: [])
18
+ permit_params do
19
+ klass = self.active_admin_config.resource_class_name.constantize
20
+
21
+ permitted += klass.creatable_properties.map(&:to_sym) if params[:action] == "create"
22
+ permitted += klass.updatable_properties.map(&:to_sym) if params[:action] == "update"
23
+
24
+ # Allow owner and other references to be assigned or changed by admin
25
+ # All possible relations
26
+ references = klass.describe[:properties].select { |_p, d| d[:type] == :reference }.keys
27
+
28
+ # Restrict to the valid create/update properties
29
+ references.select! { |r| permitted.include?(r.to_sym) }
30
+ permitted += references.map { |r| klass.reflections[r].foreign_key }
31
+
32
+ permitted.uniq
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators"
4
+
5
+ module Rhino
6
+ class AdminGenerator < Rails::Generators::NamedBase
7
+ source_root File.expand_path("templates", __dir__)
8
+
9
+ def admin
10
+ template "resource.rb", "app/admin/#{file_path.tr('/', '_').pluralize}.rb" unless options[:skip_admin]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,4 @@
1
+ ActiveAdmin.register <%= class_name %> do
2
+ rhino_filters
3
+ rhino_permit_params
4
+ end
@@ -15,8 +15,6 @@ module Rhino
15
15
  class_option :db_port, type: :numeric, default: 5432, group: :database
16
16
  class_option :db_user, type: :string, group: :database
17
17
  class_option :db_password, type: :string, group: :database
18
- class_option :redis_port, type: :numeric, default: 6379, group: :redis
19
- class_option :redis_database, type: :numeric, default: 0, group: :redis
20
18
 
21
19
  attr_reader :server_port,
22
20
  :db_name,
@@ -24,9 +22,6 @@ module Rhino
24
22
  :db_port,
25
23
  :db_user,
26
24
  :db_password,
27
- :redis_host,
28
- :redis_port,
29
- :redis_database,
30
25
  :dockerized
31
26
 
32
27
  source_root File.expand_path("templates", __dir__)
@@ -92,18 +87,6 @@ module Rhino
92
87
  options[:db_password] || ENV["DB_PASSWORD"] || ""
93
88
  end
94
89
 
95
- def redis_host_default
96
- options[:redis_host] || ENV["REDIS_HOST"] || "localhost"
97
- end
98
-
99
- def redis_port_default
100
- options[:redis_port] || ENV["REDIS_PORT"]
101
- end
102
-
103
- def redis_database_default
104
- options[:redis_database] || ENV["REDIS_DATABASE"]
105
- end
106
-
107
90
  def dockerized_default
108
91
  options[:defaults] == "docker" ? "Y" : "N"
109
92
  end
@@ -114,7 +97,6 @@ module Rhino
114
97
  @server_port = ask_prompt("Port?", server_port_default)
115
98
 
116
99
  collect_database_info
117
- collect_redis_info
118
100
  end
119
101
 
120
102
  def collect_docker_info
@@ -126,9 +108,6 @@ module Rhino
126
108
  @db_user = "postgres"
127
109
  @db_password = "password"
128
110
  @db_port = 5432
129
- @redis_host = "redis"
130
- @redis_port = 6379
131
- @redis_database = 0
132
111
 
133
112
  puts <<~HERE
134
113
  The following docker configuration has been automatically set for you:
@@ -136,9 +115,6 @@ module Rhino
136
115
  Database port: #{db_port}
137
116
  Database user: #{db_user}
138
117
  Database password: #{db_password}
139
- Redis host: #{redis_host}
140
- Redis port: #{redis_port}
141
- Redis database: #{redis_database}
142
118
  HERE
143
119
  end
144
120
 
@@ -152,14 +128,6 @@ module Rhino
152
128
  nil
153
129
  end
154
130
 
155
- def collect_redis_info
156
- @redis_host ||= ask_prompt("Redis host?", redis_host_default)
157
- @redis_port ||= ask_prompt("Redis port?", redis_port_default)
158
- @redis_database ||= ask_prompt("Redis database?", redis_database_default)
159
-
160
- nil
161
- end
162
-
163
131
  def project_file(file)
164
132
  File.join(project_dir, file)
165
133
  end
@@ -9,9 +9,6 @@ DB_HOST=<%= db_host %>
9
9
  DB_PORT=<%= db_port %>
10
10
  DB_USERNAME=<%= db_user %>
11
11
  DB_PASSWORD=<%= db_password %>
12
- REDIS_HOST=<%= redis_host %>
13
- REDIS_PORT=<%= redis_port %>
14
- REDIS_DATABASE=<%= redis_database %>
15
12
 
16
13
  # Client
17
14
  VITE_API_ROOT_PATH=$ROOT_URL
@@ -11,6 +11,7 @@ module Rhino
11
11
  class_option :owner, type: :string, desc: "The model is owned by the reference attribute", group: :owner
12
12
  class_option :base_owner, type: :boolean, default: false, desc: "The model is owned by the base owner", group: :owner
13
13
  class_option :global_owner, type: :boolean, default: false, desc: "The model is globally owned", group: :owner
14
+ class_option :skip_admin, type: :boolean, default: false, desc: "Skip generating ActiveAdmin resources", group: :admin
14
15
 
15
16
  # Parent source paths
16
17
  def source_paths
@@ -52,6 +53,10 @@ module Rhino
52
53
  end
53
54
  end
54
55
 
56
+ def active_admin_resource
57
+ generate "rhino:admin", class_name unless options[:skip_admin]
58
+ end
59
+
55
60
  protected
56
61
  def check_ownership
57
62
  raise Thor::Error, "Exactly one owner must be defined on a reference or globally" unless base_owner? ^ global_owner? ^ reference_owner?
@@ -77,6 +77,12 @@ module Rhino
77
77
  # Identifier is a special format for identification on the front end
78
78
  format = :identifier if name == identifier_property
79
79
 
80
+ # Float is double precision in postgres by default
81
+ if type == :float
82
+ type = :number
83
+ format = :double
84
+ end
85
+
80
86
  # Dates and times are strings
81
87
  if DATE_FORMATS.include?(type)
82
88
  format = type
@@ -11,6 +11,8 @@ module Rhino
11
11
  included do
12
12
  attribute :url
13
13
  attribute :url_attachment
14
+ attribute :previews, :json, default: {}
15
+ attribute :representations, :json, default: {}
14
16
  attribute :variants, :json, default: {}
15
17
 
16
18
  rhino_policy :active_storage_attachment
@@ -23,20 +25,35 @@ module Rhino
23
25
  url(attachment, disposition: :attachment)
24
26
  end
25
27
 
26
- def variants
27
- # Not everything may be processed into a variant based on mime type
28
- return unless variable?
28
+ def representations
29
+ return unless representable?
29
30
 
30
31
  record.attachment_reflections[self.name]&.named_variants&.keys&.index_with do |v|
31
- variant = variant(v)
32
+ representation = representation(v)
32
33
 
33
34
  {
34
- url: url(variant),
35
- url_attachment: url_attachment(variant)
35
+ url: url(representation),
36
+ url_attachment: url_attachment(representation)
36
37
  }
37
38
  end
38
39
  end
39
40
 
41
+ # FIXME: Cache for performance
42
+ def previews
43
+ # Not everything may be processed into a preview based on mime type
44
+ return unless previewable?
45
+
46
+ representations
47
+ end
48
+
49
+ # FIXME: Cache for performance
50
+ def variants
51
+ # Not everything may be processed into a variant based on mime type
52
+ return unless variable?
53
+
54
+ representations
55
+ end
56
+
40
57
  def display_name
41
58
  filename.to_s
42
59
  end
@@ -44,7 +61,7 @@ module Rhino
44
61
 
45
62
  class_methods do
46
63
  def readable_properties
47
- super + [ "variants", "signed_id"]
64
+ super + [ "previews", "representations", "variants", "signed_id"]
48
65
  end
49
66
  end
50
67
 
data/lib/rhino/version.rb CHANGED
@@ -10,7 +10,7 @@ module Rhino
10
10
  MAJOR = 0
11
11
  MINOR = 30
12
12
  TINY = 0
13
- PRE = "alpha.6"
13
+ PRE = "alpha.13"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhino_project_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0.alpha.6
4
+ version: 0.30.0.alpha.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Rosevear
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-27 00:00:00.000000000 Z
11
+ date: 2025-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -395,6 +395,7 @@ files:
395
395
  - app/models/rhino/current.rb
396
396
  - app/models/rhino/user.rb
397
397
  - app/overrides/active_record/nested_error_override.rb
398
+ - app/overrides/activeadmin/resource_dsl_override.rb
398
399
  - app/overrides/activestorage/direct_uploads_controller_override.rb
399
400
  - app/overrides/activestorage/redirect_controller_override.rb
400
401
  - app/overrides/activestorage/redirect_representation_controller_override.rb
@@ -426,6 +427,8 @@ files:
426
427
  - lib/commands/rhino/module/new_command.rb
427
428
  - lib/commands/rhino/module/rails_command.rb
428
429
  - lib/commands/rhino/module/test_command.rb
430
+ - lib/generators/rhino/admin/admin_generator.rb
431
+ - lib/generators/rhino/admin/templates/resource.rb.tt
429
432
  - lib/generators/rhino/dev/setup/setup_generator.rb
430
433
  - lib/generators/rhino/dev/setup/templates/env.tt
431
434
  - lib/generators/rhino/dev/setup/templates/prepare-commit-msg