Commit Graph

5 Commits

Author SHA1 Message Date
729ecaae1c feat: update terraform configuration
All checks were successful
kinec.tech/airun-pathfinder-crud-pricing/pipeline/head This commit looks good
- Updated main.tf with infrastructure changes
- Updated outputs configuration
2025-11-28 20:56:57 -05:00
4ba240c062 test: fix failing tests and expand coverage to 72.56%
All checks were successful
kinec.tech/airun-pathfinder-crud-pricing/pipeline/head This commit looks good
Fixed 3 failing tests by adding explicit serde rename attributes
to PricingOperation enum fields for camelCase JSON deserialization.

Added comprehensive test coverage:
- models.rs: 98.55% line coverage (25 -> 35 tests)
- db.rs: 73.70% line coverage (14 -> 22 tests)
- main.rs: 32.63% line coverage (0 -> 7 tests)

Total coverage improved from 56.35% to 72.56% lines.

Test additions:
- All PricingOperation variants (Get, Put, ListCommon, IncrementAccess)
- Reserved and Spot pricing serialization
- Complex pricing data with all optional fields
- Edge cases for parsing, expiration checks, and key building
- HTTP vs MCP request detection logic
- Path parameter extraction and validation

Remaining uncovered code is primarily async AWS SDK interactions
which require integration tests with mocked DynamoDB.

Generated cobertura coverage report (coverage.xml).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:55:33 -05:00
2745062bae Add comprehensive documentation, tests, and quality tooling
- Add comprehensive doc comments to all public functions, structs, and modules following RUST_STANDARDS.md format
- Add unit tests for models.rs (serialization, deserialization, response creation)
- Add unit tests for db.rs (key building, parsing, expiration checking)
- Fix clippy warnings (unused imports, dead code, large enum variant with Box<PricingData>)
- Add rustfmt.toml and clippy.toml configuration files
- Add check-quality.sh script for running all quality checks
- Add fix-quality.sh script for automatically fixing formatting and clippy issues
- Verify cargo doc generates clean documentation with no warnings
- 25 tests added (22 passing, 3 need JSON deserialization fixes)

Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:12:24 -05:00
ea8883d0da refactor: simplify crud-pricing to pure CRUD layer - remove AWS API clients
All checks were successful
kinec.tech/airun-pathfinder-crud-pricing/pipeline/head This commit looks good
Removed AWS Pricing API and Cost Explorer clients to make crud-pricing
a pure DynamoDB CRUD layer. This fixes layer violation where CRUD was
making external AWS API calls.

Changes:
- Deleted src/aws_pricing.rs (AWS Pricing API client)
- Deleted src/cost_explorer.rs (Cost Explorer client)
- Removed PricingClient and StsClient from main.rs
- Removed QueryAwsApi and QueryCostExplorer operations
- Removed fetch_if_missing behavior (Get operation now only reads from cache)
- Removed aws-sdk-pricing, aws-sdk-costexplorer, aws-sdk-sts dependencies
- Removed pricing_api_access and sts_assume_role IAM policies

Result: Pure CRUD layer with only DynamoDB operations (Get, Put, ListCommon, IncrementAccess)
Reduced from ~1100 lines to ~600 lines

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 04:44:44 -05:00
e88609d724 feat: crud-pricing initial implementation
All checks were successful
kinec.tech/airun-pathfinder-crud-pricing/pipeline/head This commit looks good
Complete CRUD service for AWS pricing operations - single source of truth.

Features:
- Dual pricing model (retail + account-specific with auto EDP/PPA detection)
- Get/Put pricing operations with intelligent caching
- AWS Pricing API integration for public list prices
- AWS Cost Explorer integration for account-specific pricing
- Access counting for self-learning 14-day refresh
- Query most-accessed instances (powers smart refresh)
- TTL: 30 days (retail), 7 days (account-specific)

Architecture:
- All other lambdas use this for pricing operations
- No direct DynamoDB access from other components
- Consistent schema enforcement
- Complete IAM setup for Pricing API, Cost Explorer, STS

Infrastructure:
- Complete Terraform configuration
- Full CI/CD pipeline (Jenkinsfile)
- Comprehensive documentation
- Production-ready scaffolding

Part of Phase 1 - foundation for pricing system.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 04:20:56 -05:00