Browse Source

model.Phone

- add
Alexey Kim 2 năm trước cách đây
mục cha
commit
d8a7b03767
1 tập tin đã thay đổi với 17 bổ sung9 xóa
  1. 17 9
      model/phone.go

+ 17 - 9
model/phone.go

@@ -8,29 +8,37 @@ import (
 )
 
 type Phone struct {
-	number   *phonenumbers.PhoneNumber
-	Verified bool `mapstructure:"phone_verified"`
+	number *phonenumbers.PhoneNumber
 
+	Verified    bool   `mapstructure:"phone_verified"`
 	PhoneNumber string `mapstructure:"phone_number"`
 	PhoneRegion string `mapstructure:"phone_region"`
 }
 
 func ParsePhoneNumber(m map[string]any) (*Phone, error) {
-	var (
-		p   = Phone{}
-		err error
-	)
-
+	p := Phone{}
 	if err := mapstructure.Decode(m, &p); err != nil {
 		return nil, err
 	}
 
+	return NewPhoneNumber(p.PhoneNumber, p.PhoneRegion, p.Verified)
+}
+
+func NewPhoneNumber(number, region string, verified bool) (*Phone, error) {
+	var (
+		p = Phone{
+			PhoneNumber: number,
+			PhoneRegion: region,
+			Verified:    verified,
+		}
+		err error
+	)
+
 	if p.PhoneNumber == "" || p.PhoneRegion == "" {
 		return nil, nil
 	}
 
-	region := model.CountryCode(p.PhoneRegion)
-	if !region.IsValid() {
+	if r := model.CountryCode(p.PhoneRegion); !r.IsValid() {
 		return nil, fmt.Errorf("illegal country code: `%s`", p.PhoneRegion)
 	}