From bb833561aa74f02970aee13cdc75973b29716491 Mon Sep 17 00:00:00 2001 From: leshe4ka46 Date: Mon, 27 Oct 2025 20:36:28 +0300 Subject: # This is a combination of 2 commits. # This is the 1st commit message: unmarshal all formats, merge them in the single table, users are truly unique # This is the commit message #2: i --- pkg/adapters/xml/registry.go | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 pkg/adapters/xml/registry.go (limited to 'pkg/adapters/xml/registry.go') diff --git a/pkg/adapters/xml/registry.go b/pkg/adapters/xml/registry.go new file mode 100644 index 0000000..f7b0507 --- /dev/null +++ b/pkg/adapters/xml/registry.go @@ -0,0 +1,51 @@ +package xml + +import ( + "errors" + "fmt" + "strings" + "time" + + "airlines/pkg/model" +) + +func (u XMLUser) ToUser() (*model.User, error) { + return &model.User{ + Nick: "", + Name: strings.ToUpper(strings.TrimSpace(u.Name.First)), + Surname: strings.ToUpper(strings.TrimSpace(u.Name.Last)), + Fathersname: "", + Sex: model.SexUnknown, + Birthday: model.SentinelBirthday(), + }, nil +} + +func (c XMLCard) ToCard() (*model.Card, error) { + prefix, number, _ := model.ParseCardLine(c.Number) + if prefix == "" && number == 0 && strings.TrimSpace(c.Program) == "" { + return nil, errors.New("bad card") + } + return &model.Card{ + Prefix: prefix, + Number: number, + Bonusprogramm: strings.TrimSpace(c.Program), + }, nil +} + +func (a XMLActivity) ToFlight() (*model.Flight, error) { + fromIATA := strings.ToUpper(strings.TrimSpace(a.Departure)) + toIATA := strings.ToUpper(strings.TrimSpace(a.Arrival)) + + d, err := time.Parse("2006-01-02", strings.TrimSpace(a.Date)) + if err != nil { + return nil, fmt.Errorf("invalid Date %q for flight %q: %w", a.Date, a.Code, err) + } + departUTC := time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, time.UTC) + + return &model.Flight{ + Number: strings.TrimSpace(a.Code), + From: fromIATA, + To: toIATA, + Date: departUTC, + }, nil +} -- cgit v1.2.3