refactor: Rename currency parameter from 'currency' to 'curr' in currencyToModel helper method and add Service interface to rate plan package

- Rename currency parameter to curr in GormRepository.currencyToModel to avoid shadowing currency package name
- Add Service interface with rate plan, subscription, usage, and analytics operations
- Add CreateRatePlan, GetRatePlan, UpdateRatePlan, DeleteRatePlan, ListRatePlans, and SearchRatePlans methods
- Add SubscribeToPlan, GetSubscription, UpdateSubscription, CancelSubscription, GetActiveSubscription, and ListSubscriptions methods
- Add Rec
This commit is contained in:
nutcas3
2026-05-02 01:23:40 +03:00
parent eb7e05d967
commit a9df60801b
2 changed files with 39 additions and 9 deletions
@@ -4,6 +4,36 @@ import (
"context"
)
// Service defines the interface for rate plan business operations
type Service interface {
// Rate Plan operations
CreateRatePlan(ctx context.Context, plan *RatePlan) (*RatePlan, error)
GetRatePlan(ctx context.Context, id string) (*RatePlan, error)
UpdateRatePlan(ctx context.Context, plan *RatePlan) (*RatePlan, error)
DeleteRatePlan(ctx context.Context, id string) error
ListRatePlans(ctx context.Context, filter *RatePlanFilter) ([]*RatePlan, error)
SearchRatePlans(ctx context.Context, criteria SearchCriteria) ([]*RatePlan, error)
// Subscription operations
SubscribeToPlan(ctx context.Context, req *SubscribeRequest) (*RatePlanSubscription, error)
GetSubscription(ctx context.Context, id string) (*RatePlanSubscription, error)
UpdateSubscription(ctx context.Context, subscription *RatePlanSubscription) (*RatePlanSubscription, error)
CancelSubscription(ctx context.Context, subscriptionID string, reason string) error
GetActiveSubscription(ctx context.Context, profileID string) (*RatePlanSubscription, error)
ListSubscriptions(ctx context.Context, profileID string, filter *SubscriptionFilter) ([]*RatePlanSubscription, error)
// Usage operations
RecordUsage(ctx context.Context, req *RecordUsageRequest) (*RatePlanUsage, error)
GetUsage(ctx context.Context, id string) (*RatePlanUsage, error)
GetUsageHistory(ctx context.Context, profileID string, limit int) ([]*RatePlanUsage, error)
CalculateCost(ctx context.Context, req *CalculateCostRequest) (*RatePlanCostCalculation, error)
// Analytics operations
GetUsageAnalytics(ctx context.Context, filter *UsageAnalyticsFilter) (*UsageAnalytics, error)
GetRevenueAnalytics(ctx context.Context, filter *RevenueAnalyticsFilter) (*RevenueAnalytics, error)
GetPopularPlans(ctx context.Context, limit int) ([]*RatePlan, error)
}
// Repository defines the interface for rate plan data operations
type Repository interface {
// Rate Plan operations
@@ -9,16 +9,16 @@ import (
)
// currencyToModel converts currency domain model to database model
func (r *GormRepository) currencyToModel(currency *currency.Currency) *currency.CurrencyModel {
func (r *GormRepository) currencyToModel(curr *currency.Currency) *currency.CurrencyModel {
return &currency.CurrencyModel{
Code: currency.Code,
Name: currency.Name,
Symbol: currency.Symbol,
DecimalPlaces: currency.DecimalPlaces,
IsActive: currency.IsActive,
SupportedRegions: strings.Join(currency.SupportedRegions, ","),
CreatedAt: currency.CreatedAt,
UpdatedAt: currency.UpdatedAt,
Code: curr.Code,
Name: curr.Name,
Symbol: curr.Symbol,
DecimalPlaces: curr.DecimalPlaces,
IsActive: curr.IsActive,
SupportedRegions: strings.Join(curr.SupportedRegions, ","),
CreatedAt: curr.CreatedAt,
UpdatedAt: curr.UpdatedAt,
}
}