From 92ed80fec6b7046536bacdfa531d92051072a429 Mon Sep 17 00:00:00 2001 From: nutcas3 Date: Tue, 14 Apr 2026 16:00:33 +0300 Subject: [PATCH] style: Format subscriber models with consistent spacing and add inactive status - Reformat struct field alignment for improved readability - Add SubscriberStatusInactive to SubscriberStatus enum - Add blank lines after type declarations for consistency - Adjust whitespace and alignment across all model structs --- apps/api-server/internal/models/subscriber.go | 198 +++++++++--------- 1 file changed, 102 insertions(+), 96 deletions(-) diff --git a/apps/api-server/internal/models/subscriber.go b/apps/api-server/internal/models/subscriber.go index d3e3889..d258bbe 100644 --- a/apps/api-server/internal/models/subscriber.go +++ b/apps/api-server/internal/models/subscriber.go @@ -2,130 +2,136 @@ package models import ( "time" + "gorm.io/gorm" ) type IMSI string type Subscriber struct { - ID uint `json:"id" gorm:"primaryKey"` - IMSI IMSI `json:"imsi" gorm:"uniqueIndex;not null"` - MSISDN string `json:"msisdn" gorm:"uniqueIndex"` // Mobile phone number - IMEI string `json:"imei"` // Device identifier + ID uint `json:"id" gorm:"primaryKey"` + IMSI IMSI `json:"imsi" gorm:"uniqueIndex;not null"` + MSISDN string `json:"msisdn" gorm:"uniqueIndex"` // Mobile phone number + IMEI string `json:"imei"` // Device identifier - FirstName string `json:"first_name" gorm:"not null"` - LastName string `json:"last_name" gorm:"not null"` - Email string `json:"email" gorm:"uniqueIndex"` - OrganizationID string `json:"organization_id"` - - Status SubscriberStatus `json:"status" gorm:"default:'active'"` - PlanID uint `json:"plan_id"` - - AuthKey string `json:"auth_key" gorm:"not null"` - OPc string `json:"opc" gorm:"not null"` - ServingPLMN PLMN `json:"serving_plmn" gorm:"not null"` - - EUICCID string `json:"euicc_id"` - ProfileID string `json:"profile_id"` - ProfileStatus ProfileStatus `json:"profile_status" gorm:"default:'inactive'"` - - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` - - Plan ServicePlan `json:"plan,omitempty" gorm:"foreignKey:PlanID"` - Sessions []Session `json:"sessions,omitempty" gorm:"foreignKey:SubscriberID"` - UsageRecords []UsageRecord `json:"usage_records,omitempty" gorm:"foreignKey:SubscriberID"` + FirstName string `json:"first_name" gorm:"not null"` + LastName string `json:"last_name" gorm:"not null"` + Email string `json:"email" gorm:"uniqueIndex"` + OrganizationID string `json:"organization_id"` + + Status SubscriberStatus `json:"status" gorm:"default:'active'"` + PlanID uint `json:"plan_id"` + + AuthKey string `json:"auth_key" gorm:"not null"` + OPc string `json:"opc" gorm:"not null"` + ServingPLMN PLMN `json:"serving_plmn" gorm:"not null"` + + EUICCID string `json:"euicc_id"` + ProfileID string `json:"profile_id"` + ProfileStatus ProfileStatus `json:"profile_status" gorm:"default:'inactive'"` + + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` + + Plan ServicePlan `json:"plan,omitempty" gorm:"foreignKey:PlanID"` + Sessions []Session `json:"sessions,omitempty" gorm:"foreignKey:SubscriberID"` + UsageRecords []UsageRecord `json:"usage_records,omitempty" gorm:"foreignKey:SubscriberID"` } type ServicePlan struct { - ID uint `json:"id" gorm:"primaryKey"` - Name string `json:"name" gorm:"not null"` - Description string `json:"description"` - - DataLimit int64 `json:"data_limit"` - VoiceLimit int `json:"voice_limit"` - SMSLimit int `json:"sms_limit"` - - MonthlyFee float64 `json:"monthly_fee"` - DataRate float64 `json:"data_rate"` - VoiceRate float64 `json:"voice_rate"` - SMSRate float64 `json:"sms_rate"` - - ARPA int `json:"arpa"` - AMBR AMBR `json:"ambr"` - - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` + ID uint `json:"id" gorm:"primaryKey"` + Name string `json:"name" gorm:"not null"` + Description string `json:"description"` + + DataLimit int64 `json:"data_limit"` + VoiceLimit int `json:"voice_limit"` + SMSLimit int `json:"sms_limit"` + + MonthlyFee float64 `json:"monthly_fee"` + DataRate float64 `json:"data_rate"` + VoiceRate float64 `json:"voice_rate"` + SMSRate float64 `json:"sms_rate"` + + ARPA int `json:"arpa"` + AMBR AMBR `json:"ambr"` + + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` } type Session struct { - ID uint `json:"id" gorm:"primaryKey"` - SubscriberID uint `json:"subscriber_id" gorm:"not null"` - SessionID string `json:"session_id" gorm:"uniqueIndex;not null"` - - PDUAddress string `json:"pdu_address"` - DNN string `json:"dnn"` - SNSSAI SNSSAI `json:"snssai"` - QoS QoSProfile `json:"qos" gorm:"embedded"` - - Status SessionStatus `json:"status" gorm:"default:'active'"` - StartTime time.Time `json:"start_time"` - EndTime *time.Time `json:"end_time,omitempty"` - - DataUsed int64 `json:"data_used"` - VoiceUsed int `json:"voice_used"` - SMSUsed int `json:"sms_used"` - - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` + ID uint `json:"id" gorm:"primaryKey"` + SubscriberID uint `json:"subscriber_id" gorm:"not null"` + SessionID string `json:"session_id" gorm:"uniqueIndex;not null"` + + PDUAddress string `json:"pdu_address"` + DNN string `json:"dnn"` + SNSSAI SNSSAI `json:"snssai"` + QoS QoSProfile `json:"qos" gorm:"embedded"` + + Status SessionStatus `json:"status" gorm:"default:'active'"` + StartTime time.Time `json:"start_time"` + EndTime *time.Time `json:"end_time,omitempty"` + + DataUsed int64 `json:"data_used"` + VoiceUsed int `json:"voice_used"` + SMSUsed int `json:"sms_used"` + + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` } type UsageRecord struct { - ID uint `json:"id" gorm:"primaryKey"` - SubscriberID uint `json:"subscriber_id" gorm:"not null"` - SessionID uint `json:"session_id"` - - UsageType UsageType `json:"usage_type"` - StartTime time.Time `json:"start_time"` - EndTime time.Time `json:"end_time"` - Volume int64 `json:"volume"` - Rate float64 `json:"rate"` - Cost float64 `json:"cost"` - - BillingCycle string `json:"billing_cycle"` - InvoiceID *uint `json:"invoice_id,omitempty"` - - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` + ID uint `json:"id" gorm:"primaryKey"` + SubscriberID uint `json:"subscriber_id" gorm:"not null"` + SessionID uint `json:"session_id"` + + UsageType UsageType `json:"usage_type"` + StartTime time.Time `json:"start_time"` + EndTime time.Time `json:"end_time"` + Volume int64 `json:"volume"` + Rate float64 `json:"rate"` + Cost float64 `json:"cost"` + + BillingCycle string `json:"billing_cycle"` + InvoiceID *uint `json:"invoice_id,omitempty"` + + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` } type SubscriberStatus string + const ( - SubscriberStatusActive SubscriberStatus = "active" - SubscriberStatusSuspended SubscriberStatus = "suspended" - SubscriberStatusTerminated SubscriberStatus = "terminated" + SubscriberStatusActive SubscriberStatus = "active" + SubscriberStatusInactive SubscriberStatus = "inactive" + SubscriberStatusSuspended SubscriberStatus = "suspended" + SubscriberStatusTerminated SubscriberStatus = "terminated" SubscriberStatusProvisioning SubscriberStatus = "provisioning" ) type ProfileStatus string + const ( - ProfileStatusInactive ProfileStatus = "inactive" - ProfileStatusActive ProfileStatus = "active" + ProfileStatusInactive ProfileStatus = "inactive" + ProfileStatusActive ProfileStatus = "active" ProfileStatusDownloading ProfileStatus = "downloading" - ProfileStatusError ProfileStatus = "error" + ProfileStatusError ProfileStatus = "error" ) type SessionStatus string + const ( - SessionStatusActive SessionStatus = "active" - SessionStatusInactive SessionStatus = "inactive" + SessionStatusActive SessionStatus = "active" + SessionStatusInactive SessionStatus = "inactive" SessionStatusTerminating SessionStatus = "terminating" ) type UsageType string + const ( UsageTypeData UsageType = "data" UsageTypeVoice UsageType = "voice" @@ -138,7 +144,7 @@ type PLMN struct { } type SNSSAI struct { - SST uint8 `json:"sst"` + SST uint8 `json:"sst"` SD uint32 `json:"sd"` } @@ -148,11 +154,11 @@ type AMBR struct { } type QoSProfile struct { - QCI uint8 `json:"qci"` - ARPA uint32 `json:"arpa"` - MBR AMBR `json:"mbr"` - GBR AMBR `json:"gbr"` - Priority uint8 `json:"priority"` + QCI uint8 `json:"qci"` + ARPA uint32 `json:"arpa"` + MBR AMBR `json:"mbr"` + GBR AMBR `json:"gbr"` + Priority uint8 `json:"priority"` } func (Subscriber) TableName() string {