mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-18 11:02:54 +00:00
- Replace interface{} with any in providerConfigure, doRequest, get, post, put method signatures
- Replace interface{} with any in dataSourceSubscriberRead, dataSourceSystemStatsRead functions
- Replace interface{} with any in resourceSubscriberCreate/Read/Update/Delete, resourceRatingPlanCreate/Read/Update/Delete functions
- Replace map[string]interface{} with map[string]any in subscriber create/update request bodies
- Update
146 lines
3.3 KiB
Go
146 lines
3.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strconv"
|
|
|
|
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
|
|
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
|
|
)
|
|
|
|
type SystemStats struct {
|
|
ActiveSessions int `json:"active_sessions"`
|
|
TotalAccounts int `json:"total_accounts"`
|
|
BlockedUsers int `json:"blocked_users"`
|
|
LowBalanceAlerts int `json:"low_balance_alerts"`
|
|
Uptime float64 `json:"uptime"`
|
|
}
|
|
|
|
func dataSourceSubscriber() *schema.Resource {
|
|
return &schema.Resource{
|
|
ReadContext: dataSourceSubscriberRead,
|
|
Schema: map[string]*schema.Schema{
|
|
"id": {
|
|
Type: schema.TypeString,
|
|
Required: true,
|
|
},
|
|
"imsi": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
"msisdn": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
"first_name": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
"last_name": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
"email": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
"organization_id": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
"status": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
"plan_id": {
|
|
Type: schema.TypeInt,
|
|
Computed: true,
|
|
},
|
|
"balance": {
|
|
Type: schema.TypeFloat,
|
|
Computed: true,
|
|
},
|
|
"created_at": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
"updated_at": {
|
|
Type: schema.TypeString,
|
|
Computed: true,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func dataSourceSubscriberRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
|
|
client := meta.(*APIClient)
|
|
id := d.Get("id").(string)
|
|
|
|
var result Subscriber
|
|
if err := client.get(ctx, "/api/subscribers/"+id, &result); err != nil {
|
|
return diag.FromErr(fmt.Errorf("failed to read subscriber: %w", err))
|
|
}
|
|
|
|
d.SetId(strconv.Itoa(result.ID))
|
|
d.Set("imsi", result.IMSI)
|
|
d.Set("msisdn", result.MSISDN)
|
|
d.Set("first_name", result.FirstName)
|
|
d.Set("last_name", result.LastName)
|
|
d.Set("email", result.Email)
|
|
d.Set("organization_id", result.OrganizationID)
|
|
d.Set("status", result.Status)
|
|
d.Set("plan_id", result.PlanID)
|
|
d.Set("balance", result.Balance)
|
|
d.Set("created_at", result.CreatedAt)
|
|
d.Set("updated_at", result.UpdatedAt)
|
|
|
|
return nil
|
|
}
|
|
|
|
func dataSourceSystemStats() *schema.Resource {
|
|
return &schema.Resource{
|
|
ReadContext: dataSourceSystemStatsRead,
|
|
Schema: map[string]*schema.Schema{
|
|
"active_sessions": {
|
|
Type: schema.TypeInt,
|
|
Computed: true,
|
|
},
|
|
"total_accounts": {
|
|
Type: schema.TypeInt,
|
|
Computed: true,
|
|
},
|
|
"blocked_users": {
|
|
Type: schema.TypeInt,
|
|
Computed: true,
|
|
},
|
|
"low_balance_alerts": {
|
|
Type: schema.TypeInt,
|
|
Computed: true,
|
|
},
|
|
"uptime": {
|
|
Type: schema.TypeFloat,
|
|
Computed: true,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func dataSourceSystemStatsRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
|
|
client := meta.(*APIClient)
|
|
|
|
var result SystemStats
|
|
if err := client.get(ctx, "/api/system/stats", &result); err != nil {
|
|
return diag.FromErr(fmt.Errorf("failed to read system stats: %w", err))
|
|
}
|
|
|
|
d.SetId("system-stats")
|
|
d.Set("active_sessions", result.ActiveSessions)
|
|
d.Set("total_accounts", result.TotalAccounts)
|
|
d.Set("blocked_users", result.BlockedUsers)
|
|
d.Set("low_balance_alerts", result.LowBalanceAlerts)
|
|
d.Set("uptime", result.Uptime)
|
|
|
|
return nil
|
|
}
|