Class: Togglefy::FeatureQuery
- Inherits:
-
Object
- Object
- Togglefy::FeatureQuery
- Defined in:
- lib/togglefy/feature_query.rb
Overview
The FeatureQuery class provides methods to query features based on various filters.
Constant Summary collapse
- FILTERS =
A mapping of filter keys to their corresponding query scopes.
{ identifier: :identifier, group: :for_group, role: :for_group, environment: :for_environment, env: :for_environment, tenant_id: :for_tenant, status: :with_status }.freeze
Instance Method Summary collapse
-
#feature(identifier) ⇒ Togglefy::Feature, ActiveRecord::Relation
Finds a feature by its identifier.
-
#features ⇒ ActiveRecord::Relation
Retrieves all features.
-
#for_environment(environment) ⇒ ActiveRecord::Relation
Retrieves features for a specific environment.
-
#for_filters(filters) ⇒ ActiveRecord::Relation
Applies filters to retrieve features.
-
#for_group(group) ⇒ ActiveRecord::Relation
Retrieves features for a specific group.
-
#for_tenant(tenant_id) ⇒ ActiveRecord::Relation
Retrieves features for a specific tenant.
-
#for_type(klass) ⇒ ActiveRecord::Relation
Retrieves feature assignments for a specific type.
-
#with_status(status) ⇒ ActiveRecord::Relation
Retrieves features with a specific status.
-
#without_environment ⇒ ActiveRecord::Relation
Retrieves features without an environment.
-
#without_group ⇒ ActiveRecord::Relation
Retrieves features without a group.
-
#without_tenant ⇒ ActiveRecord::Relation
Retrieves features without a tenant.
Instance Method Details
#feature(identifier) ⇒ Togglefy::Feature, ActiveRecord::Relation
Finds a feature by its identifier.
28 29 30 31 32 |
# File 'lib/togglefy/feature_query.rb', line 28 def feature(identifier) return Togglefy::Feature.identifier(identifier) if identifier.is_a?(Array) Togglefy::Feature.find_by!(identifier: identifier) end |
#features ⇒ ActiveRecord::Relation
Retrieves all features.
20 21 22 |
# File 'lib/togglefy/feature_query.rb', line 20 def features Togglefy::Feature.all end |
#for_environment(environment) ⇒ ActiveRecord::Relation
Retrieves features for a specific environment.
61 62 63 |
# File 'lib/togglefy/feature_query.rb', line 61 def for_environment(environment) Togglefy::Feature.for_environment(environment) end |
#for_filters(filters) ⇒ ActiveRecord::Relation
Applies filters to retrieve features.
99 100 101 102 103 104 105 106 |
# File 'lib/togglefy/feature_query.rb', line 99 def for_filters(filters) FILTERS.reduce(Togglefy::Feature) do |query, (key, scope)| value = filters[key] next query unless filters.key?(key) && nil_or_not_blank?(value) query.public_send(scope, value) end end |
#for_group(group) ⇒ ActiveRecord::Relation
Retrieves features for a specific group.
46 47 48 |
# File 'lib/togglefy/feature_query.rb', line 46 def for_group(group) Togglefy::Feature.for_group(group) end |
#for_tenant(tenant_id) ⇒ ActiveRecord::Relation
Retrieves features for a specific tenant.
76 77 78 |
# File 'lib/togglefy/feature_query.rb', line 76 def for_tenant(tenant_id) Togglefy::Feature.for_tenant(tenant_id) end |
#for_type(klass) ⇒ ActiveRecord::Relation
Retrieves feature assignments for a specific type.
38 39 40 |
# File 'lib/togglefy/feature_query.rb', line 38 def for_type(klass) Togglefy::FeatureAssignment.for_type(klass) end |
#with_status(status) ⇒ ActiveRecord::Relation
Retrieves features with a specific status.
91 92 93 |
# File 'lib/togglefy/feature_query.rb', line 91 def with_status(status) Togglefy::Feature.with_status(status) end |
#without_environment ⇒ ActiveRecord::Relation
Retrieves features without an environment.
68 69 70 |
# File 'lib/togglefy/feature_query.rb', line 68 def without_environment Togglefy::Feature.without_environment end |
#without_group ⇒ ActiveRecord::Relation
Retrieves features without a group.
53 54 55 |
# File 'lib/togglefy/feature_query.rb', line 53 def without_group Togglefy::Feature.without_group end |
#without_tenant ⇒ ActiveRecord::Relation
Retrieves features without a tenant.
83 84 85 |
# File 'lib/togglefy/feature_query.rb', line 83 def without_tenant Togglefy::Feature.without_tenant end |