mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-18 11:02:54 +00:00
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:
@@ -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 ¤cy.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,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user