mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-11-11 06:25:13 +00:00
feat: Refactor GraphQL resolvers to extract domain methods into separate files and retain only shared helpers
- Add package documentation mapping resolver files to domains (subscriber/usage/billing/mutations/esim/alerts/subscriptions) - Remove models package import and add blank imports for context/base64 to preserve helper function dependencies - Remove all resolver method implementations (Subscriber/SubscriberByImsi/Subscribers/SubscriberAccount/UsageEvents/UsageStats/RealTimeUsage/Invoices/Invoice
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package graphql
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/nutcas3/telecom-platform/apps/api-server/internal/models"
|
||||
"github.com/nutcas3/telecom-platform/apps/api-server/internal/services"
|
||||
)
|
||||
|
||||
// CreateSubscriber creates a new subscriber from GraphQL input.
|
||||
func (r *Resolver) CreateSubscriber(ctx context.Context, input CreateSubscriberInput) (*models.Subscriber, error) {
|
||||
req := &services.CreateSubscriberRequest{
|
||||
MSISDN: input.MSISDN,
|
||||
FirstName: input.FirstName,
|
||||
LastName: input.LastName,
|
||||
Email: input.Email,
|
||||
PlanID: uint(input.PlanID),
|
||||
}
|
||||
if input.OrganizationID != nil {
|
||||
req.OrganizationID = *input.OrganizationID
|
||||
}
|
||||
if input.EUICCID != nil {
|
||||
req.EUICCID = *input.EUICCID
|
||||
}
|
||||
return r.subscriber.CreateSubscriber(ctx, req)
|
||||
}
|
||||
|
||||
// UpdateSubscriber updates subscriber fields.
|
||||
func (r *Resolver) UpdateSubscriber(ctx context.Context, id string, input UpdateSubscriberInput) (*models.Subscriber, error) {
|
||||
sid, err := parseID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var planID *uint
|
||||
if input.PlanID != nil {
|
||||
p := uint(*input.PlanID)
|
||||
planID = &p
|
||||
}
|
||||
return r.subscriber.UpdateSubscriber(ctx, sid, &services.UpdateSubscriberRequest{
|
||||
FirstName: input.FirstName,
|
||||
LastName: input.LastName,
|
||||
Email: input.Email,
|
||||
PlanID: planID,
|
||||
})
|
||||
}
|
||||
|
||||
// DeleteSubscriber deletes a subscriber by GraphQL ID.
|
||||
func (r *Resolver) DeleteSubscriber(ctx context.Context, id string) (bool, error) {
|
||||
sid, err := parseID(id)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return r.subscriber.DeleteSubscriber(ctx, sid)
|
||||
}
|
||||
|
||||
// SuspendSubscriber suspends and returns the refreshed subscriber.
|
||||
func (r *Resolver) SuspendSubscriber(ctx context.Context, id string) (*models.Subscriber, error) {
|
||||
sid, err := parseID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := r.subscriber.SuspendSubscriber(ctx, sid); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return r.subscriber.GetSubscriber(ctx, sid)
|
||||
}
|
||||
|
||||
// ActivateSubscriber activates and returns the subscriber.
|
||||
func (r *Resolver) ActivateSubscriber(ctx context.Context, id string) (*models.Subscriber, error) {
|
||||
sid, err := parseID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return r.subscriber.ActivateSubscriber(ctx, sid)
|
||||
}
|
||||
|
||||
// TerminateSubscriber terminates and returns the refreshed subscriber.
|
||||
func (r *Resolver) TerminateSubscriber(ctx context.Context, id string) (*models.Subscriber, error) {
|
||||
sid, err := parseID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := r.subscriber.TerminateSubscriber(ctx, sid); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return r.subscriber.GetSubscriber(ctx, sid)
|
||||
}
|
||||
Reference in New Issue
Block a user