propel_rails 0.3.2 โ†’ 0.3.4

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: 3101c0f6052e304dc4f52c6a21e51fc10744711bc09514656a11f9134b2ce147
4
- data.tar.gz: f41e6bebbcc98e969c4dc862097a37f32c655507c41eafb7ebe882365385cc74
3
+ metadata.gz: 64e52f4ae9d9b07f9fe598734b83d45adae9c7f9beb94306a18dd04c755ffa46
4
+ data.tar.gz: 80d00b55f061bfb2790f62d4fb3a19e13a35a8f4d0d2ee86db7eb2c04a17d755
5
5
  SHA512:
6
- metadata.gz: 27bf3602f37029cf5c3040c99ec706060734c67a7f33cc5eae3f78ce38a686643df9f1749e1bd46fca4baaa57e7ee69163dd6278e1a04c16b56762af510b3e07
7
- data.tar.gz: 59490ca2d5cb467352193bc504b6ec1f39f0241d9e4a21b0d296acbfb93c03684d1286eeaef87e826a4295d23ac95f2cb849dcf6f8c0bf3025491353eb029409
6
+ metadata.gz: 4877ef5c47fb0ee805c3ab6955bdfdf28915a13d4f05454e58dc794bbf50926a29fda728755d26d957f911812d10d93d739befb90757286fe21492b31a235503
7
+ data.tar.gz: cea170f3a883093c170915d02d7cb9ad6a7c0c8ed561ccbda1c80554b71339173ea64cbe8567f4eb8014bb7ee4387303027cb068640b6ad7a9c60e062ff9f53b
data/CHANGELOG.md CHANGED
@@ -12,6 +12,65 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
12
12
  - Cross-component integration patterns
13
13
  - Advanced orchestration features
14
14
 
15
+ ## [0.3.4] - 2025-09-29
16
+
17
+ ### Added
18
+ - **New `propel_integration` gem**: Initial release of the `propel_integration` gem, which provides tools for integrating with third-party services.
19
+
20
+ ### Fixed
21
+ - **Custom `has_scope` definitions**: The dynamic scope generator in `propel_api` no longer overrides custom `has_scope` definitions.
22
+ - **`has_scope` parameter filtering**: All declared `has_scope` parameters are now automatically permitted.
23
+
24
+ ### Changed
25
+ - All Propel gems have been updated to version `0.3.4` for consistency.
26
+
27
+ ## [0.3.3] - 2025-01-XX
28
+
29
+ ### ๐ŸŽ‰ Major Features Added
30
+ - **Comprehensive Dynamic Filtering System**: Complete orchestration of PropelApi's new filtering capabilities across the entire Propel Rails ecosystem
31
+ - **Zero-Configuration Filtering**: Automatic filtering support for all generated API resources
32
+ - **Database-Agnostic Implementation**: Seamless filtering across SQLite, PostgreSQL, and MySQL
33
+ - **Multi-Component Integration**: PropelApi, PropelFacets, and PropelAuthentication work together for complete filtering solution
34
+
35
+ ### ๐Ÿ” Advanced Filtering Capabilities
36
+ - **Multi-Type Filtering Support**: Complete filtering support across all data types (string, numeric, boolean, datetime, date, time)
37
+ - **Intelligent Facet Integration**: PropelFacets automatically includes filterable fields in JSON responses
38
+ - **Security-First Filtering**: PropelAuthentication provides multi-tenancy scoping for all filtered queries
39
+ - **Performance-Optimized**: Efficient queries with proper indexing support and database-agnostic implementation
40
+
41
+ ### ๐Ÿ› ๏ธ Framework Orchestration Improvements
42
+ - **Enhanced Component Coordination**: Better coordination of filtering features across all Propel components
43
+ - PropelApi provides the core filtering infrastructure with dynamic scope generation
44
+ - PropelFacets ensures filterable fields are included in API responses
45
+ - PropelAuthentication maintains security and multi-tenancy across all filtered queries
46
+ - **Template System Integration**: Enhanced template coordination for filtering support
47
+ - Improved facet model templates with smart field inclusion
48
+ - Enhanced test templates for comprehensive filtering coverage
49
+ - Better integration test templates for filtering scenarios
50
+
51
+ ### ๐Ÿ”ง Dependency Updates
52
+ - **PropelApi 0.3.3**: Comprehensive dynamic filtering system with multi-type support
53
+ - **PropelAuthentication 0.3.3**: Enhanced test integration and filtering compatibility
54
+ - **PropelFacets 0.3.3**: Enhanced facet system for filtering with smart field inclusion
55
+
56
+ ### ๐Ÿงช Testing & Quality Assurance
57
+ - **Comprehensive Test Coverage**: Complete test suite with 992 tests covering all filtering scenarios
58
+ - **Multi-Component Testing**: Tests verify filtering works across all Propel components
59
+ - **Database Compatibility**: Tests pass across SQLite, PostgreSQL, and MySQL
60
+ - **Security Testing**: Multi-tenancy and authentication integration testing
61
+
62
+ ### ๐Ÿ“– Documentation & Examples
63
+ - **Comprehensive API Documentation**: Complete filtering documentation with examples for all operators
64
+ - **Framework Integration Guide**: How filtering works across all Propel components
65
+ - **Performance Guidelines**: Optimization recommendations for large datasets
66
+ - **Security Best Practices**: Multi-tenancy and authentication considerations
67
+
68
+ ### ๐Ÿ”’ Security & Performance
69
+ - **Multi-Tenant Filtering**: All filtered queries automatically scoped to user's organization
70
+ - **Input Validation**: Comprehensive validation of filter parameters across all components
71
+ - **SQL Injection Protection**: All parameters properly escaped and parameterized
72
+ - **Performance Optimization**: Efficient queries with proper indexing support
73
+
15
74
  ## [0.3.2] - 2025-09-15
16
75
 
17
76
  ### ๐Ÿ› Enhanced Generator Reliability
data/README.md CHANGED
@@ -1,6 +1,51 @@
1
1
  # Propel Rails
2
2
 
3
- A modular Ruby framework meta gem that orchestrates the installation of Propel components for building modern web applications.
3
+ A modular Ruby framework meta gem that orchestrates the installation of Propel components for building modern web applications with **comprehensive dynamic filtering capabilities**.
4
+
5
+ ## ๐ŸŽ‰ NEW in v0.3.3: Dynamic Filtering System
6
+
7
+ Propel Rails now orchestrates a complete automatic URL query string filtering and scoping system across all components. This provides powerful, database-agnostic filtering with zero configuration required.
8
+
9
+ ### Quick Filtering Examples
10
+
11
+ ```bash
12
+ # String filtering
13
+ GET /api/v1/meetings?title_contains=Project&status_in=active,pending
14
+
15
+ # Numeric filtering
16
+ GET /api/v1/meetings?max_participants_gte=50&max_participants_lte=200
17
+
18
+ # Boolean filtering
19
+ GET /api/v1/meetings?recording_enabled_eq=true&ai_research_enabled_eq=false
20
+
21
+ # DateTime filtering
22
+ GET /api/v1/meetings?start_time_after=2024-01-01T00:00:00Z&start_time_before=2024-12-31T23:59:59Z
23
+
24
+ # Range filtering
25
+ GET /api/v1/meetings?max_participants_range=150,350
26
+
27
+ # Combined filtering with sorting and pagination
28
+ GET /api/v1/meetings?title_contains=Project&max_participants_gte=50&order_by=start_time&page=1&limit=20
29
+ ```
30
+
31
+ ### Supported Filter Operators
32
+
33
+ | Data Type | Operators | Examples |
34
+ |-----------|-----------|----------|
35
+ | **String** | `_eq`, `_contains`, `_starts_with`, `_ends_with`, `_in` | `name_eq=Acme`, `title_contains=Project` |
36
+ | **Numeric** | `_eq`, `_gt`, `_lt`, `_gte`, `_lte`, `_range`, `_in` | `max_participants_gte=50`, `price_range=100,500` |
37
+ | **Boolean** | `_eq` (supports `true`/`false`, `1`/`0`, `yes`/`no`, `on`/`off`) | `recording_enabled_eq=true` |
38
+ | **DateTime** | `_before`, `_after`, `_year`, `_month`, `_day`, `_date` | `start_time_after=2024-01-01`, `created_at_year=2024` |
39
+ | **Date** | Same as DateTime | `event_date_after=2024-01-01` |
40
+ | **Time** | Same as DateTime | `start_time_hour=14` |
41
+
42
+ ### Automatic Features
43
+
44
+ - **Zero Configuration**: Filtering works automatically for all generated resources
45
+ - **Database Agnostic**: Works with SQLite, PostgreSQL, and MySQL
46
+ - **Security Built-in**: SQL injection protection and input validation
47
+ - **Multi-tenancy Ready**: Automatic organization scoping
48
+ - **Performance Optimized**: Efficient queries with proper indexing support
4
49
 
5
50
  ## Overview
6
51
 
@@ -80,7 +80,7 @@ module Propel
80
80
 
81
81
  install_components(components)
82
82
  run_migrations unless options[:skip_migrations]
83
- copy_secure_api_explorer if components.include?(:api)
83
+ # copy_api_explorer if components.include?(:api) # TODO: Re-enable for future release when API Explorer is ready
84
84
  show_completion_message
85
85
  end
86
86
 
@@ -204,44 +204,38 @@ module Propel
204
204
  end
205
205
  end
206
206
 
207
- def copy_secure_api_explorer
208
- say "\n๐Ÿ”’ Installing Secure API Explorer...", :blue
209
-
210
- # Find the gem root directory and secure distribution files
211
- gem_root = File.expand_path("../../../..", __dir__)
212
- dist_dir = File.join(gem_root, "dist")
213
- api_explorer_dest = File.join(destination_root, "api-explorer")
214
-
215
- if Dir.exist?(dist_dir)
216
- # Create the api-explorer directory
217
- empty_directory "api-explorer"
218
-
219
- # Copy each file from dist to api-explorer using absolute paths
220
- Dir.glob(File.join(dist_dir, "*")).each do |file|
221
- if File.file?(file)
222
- dest_file = File.join(api_explorer_dest, File.basename(file))
223
- FileUtils.cp(file, dest_file)
224
- say " create api-explorer/#{File.basename(file)}", :green
225
- end
226
- end
227
-
228
- say " โœ… Secure API Explorer installed at ./api-explorer/", :green
229
- show_api_explorer_usage
230
- else
231
- say " โš ๏ธ Secure API Explorer distribution not found", :yellow
232
- say " Run './scripts/build_secure_api_explorer.sh' first", :yellow
233
- end
234
- end
235
-
236
- def show_api_explorer_usage
237
- say "\n๐Ÿš€ API Explorer Usage:", :cyan
238
- say " 1. cd api-explorer", :white
239
- say " 2. yarn install", :white
240
- say " 3. yarn start", :white
241
- say " 4. Open http://localhost:8080", :white
242
-
243
- say "\n๐Ÿ”’ Secure & Obfuscated", :green
244
- end
207
+ # TODO: Re-enable this method for future release when API Explorer is ready
208
+ # def copy_api_explorer
209
+ # say "\n๐Ÿ“‹ Installing API Explorer...", :blue
210
+ #
211
+ # # Find the api-explorer source directory (in the gem root, not propel_rails subdirectory)
212
+ # # __dir__ is: propel_rails/lib/generators/propel/
213
+ # # We need to go up 4 levels to reach the gem root
214
+ # gem_root = File.expand_path("../../../../", __dir__)
215
+ # api_explorer_source = File.join(gem_root, "api-explorer")
216
+ # api_explorer_dest = File.join(destination_root, "api-explorer")
217
+ #
218
+ # begin
219
+ # if Dir.exist?(api_explorer_source)
220
+ # # Use FileUtils to copy the entire directory
221
+ # FileUtils.cp_r(api_explorer_source, api_explorer_dest)
222
+ #
223
+ # say "โœ… API Explorer installed at ./api-explorer/", :green
224
+ # say "\n๐Ÿš€ To use the API Explorer:", :cyan
225
+ # say " 1. cd api-explorer", :white
226
+ # say " 2. yarn install (or npm install)", :white
227
+ # say " 3. yarn start (or npm start)", :white
228
+ # say " 4. Open http://localhost:3000 in your browser", :white
229
+ # say " 5. Configure API endpoints in api-explorer/api-cache/", :white
230
+ # else
231
+ # say "โš ๏ธ API Explorer source not found at #{api_explorer_source}", :yellow
232
+ # say " Skipping API Explorer installation", :yellow
233
+ # end
234
+ # rescue => e
235
+ # say "โš ๏ธ Could not install API Explorer: #{e.message}", :yellow
236
+ # say " Please copy the api-explorer folder manually from the gem", :yellow
237
+ # end
238
+ # end
245
239
 
246
240
  def show_completion_message
247
241
  say "\n" + "="*70, :green
data/lib/propel_rails.rb CHANGED
@@ -4,7 +4,7 @@ require "pathname"
4
4
 
5
5
  module Propel
6
6
  module Rails
7
- VERSION = "0.3.2"
7
+ VERSION = "0.3.4"
8
8
 
9
9
  class Error < StandardError; end
10
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: propel_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Propel Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-09-15 00:00:00.000000000 Z
11
+ date: 2025-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,10 +136,11 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.10'
139
- description: |
140
- Propel Rails is a modular framework built as a collection of independent gems
141
- that work together seamlessly. It provides authentication, API generation, access control,
142
- AI integration, and more - all designed to work individually or as a cohesive framework.
139
+ description: "Propel Rails is a modular framework built as a collection of independent
140
+ gems\nthat work together seamlessly. It provides authentication, API generation
141
+ with automatic\nURL query string filtering and scoping, access control, AI integration,
142
+ and more - all \ndesigned to work individually or as a cohesive framework with zero-configuration
143
+ filtering.\n"
143
144
  email:
144
145
  - admin@propel-hq.dev
145
146
  executables: []
@@ -176,5 +177,5 @@ requirements: []
176
177
  rubygems_version: 3.4.19
177
178
  signing_key:
178
179
  specification_version: 4
179
- summary: A modular Ruby framework for building modern web applications
180
+ summary: A modular Ruby framework with comprehensive dynamic filtering system
180
181
  test_files: []