mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-27 15:12:16 +00:00
- Add Repository interface with rate plan CRUD, subscription management, usage tracking, and analytics operations - Add GORM table name methods for RatePlan, RatePlanSubscription, and RatePlanUsage models - Add GORM hooks with automatic timestamp handling for BeforeCreate and BeforeUpdate operations - Add SearchCriteria with carrier, region, plan type, price range, pagination, and sorting fields
37 lines
1.7 KiB
Go
37 lines
1.7 KiB
Go
package rateplan
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
// Repository defines the interface for rate plan data operations
|
|
type Repository interface {
|
|
// Rate Plan operations
|
|
CreateRatePlan(ctx context.Context, plan *RatePlan) error
|
|
GetRatePlan(ctx context.Context, id string) (*RatePlan, error)
|
|
UpdateRatePlan(ctx context.Context, plan *RatePlan) error
|
|
DeleteRatePlan(ctx context.Context, id string) error
|
|
ListRatePlans(ctx context.Context, filter *RatePlanFilter) ([]*RatePlan, error)
|
|
CountRatePlans(ctx context.Context, filter *RatePlanFilter) (int, error)
|
|
|
|
// Subscription operations
|
|
CreateSubscription(ctx context.Context, subscription *RatePlanSubscription) error
|
|
GetSubscription(ctx context.Context, id string) (*RatePlanSubscription, error)
|
|
UpdateSubscription(ctx context.Context, subscription *RatePlanSubscription) error
|
|
DeleteSubscription(ctx context.Context, id string) error
|
|
ListSubscriptions(ctx context.Context, profileID string, filter *SubscriptionFilter) ([]*RatePlanSubscription, error)
|
|
GetActiveSubscription(ctx context.Context, profileID string) (*RatePlanSubscription, error)
|
|
|
|
// Usage tracking operations
|
|
CreateUsage(ctx context.Context, usage *RatePlanUsage) error
|
|
GetUsage(ctx context.Context, id string) (*RatePlanUsage, error)
|
|
UpdateUsage(ctx context.Context, usage *RatePlanUsage) error
|
|
GetCurrentUsage(ctx context.Context, profileID string) (*RatePlanUsage, error)
|
|
ListUsageHistory(ctx context.Context, profileID string, limit int) ([]*RatePlanUsage, error)
|
|
|
|
// Analytics and reporting
|
|
GetUsageAnalytics(ctx context.Context, filter *UsageAnalyticsFilter) (*UsageAnalytics, error)
|
|
GetRevenueAnalytics(ctx context.Context, filter *RevenueAnalyticsFilter) (*RevenueAnalytics, error)
|
|
GetPopularPlans(ctx context.Context, limit int) ([]*RatePlan, error)
|
|
}
|