add good_id
All checks were successful
Build and push image / deploy (push) Successful in 2m36s

This commit is contained in:
2024-01-03 01:01:56 +03:00
parent 7acb7393a3
commit c4e71fca93
5 changed files with 53 additions and 0 deletions

View File

@ -86,6 +86,7 @@ func convertGoodsToGorm(cat *plati.Category, goods []*plati.Good) []*gorm.Good {
for _, g := range goods {
gormGood := gorm.Good{
ID: uuid.NewV4().String(),
GoodID: g.GoodID(),
Name: g.Name,
IDC: cat.ID,
IDR: cat.ParentID,

View File

@ -4,6 +4,7 @@ import "time"
type Good struct {
ID string
GoodID int
Name string
IDC int
IDR int

View File

@ -0,0 +1,14 @@
-- +goose Up
-- +goose StatementBegin
ALTER TABLE goods
ADD COLUMN good_id INTEGER NOT NULL DEFAULT 0;
UPDATE goods
SET good_id = split_part(goodlink, '/', 4)::integer;
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
ALTER TABLE goods
DROP COLUMN good_id;
-- +goose StatementEnd

View File

@ -181,6 +181,16 @@ type Good struct {
Price float64
}
func (g *Good) GoodID() int {
linkArr := strings.Split(g.GoodLink, "/")
if len(linkArr) < 3 {
return 0
}
id, _ := strconv.Atoi(linkArr[3])
return id
}
func parseGoodsCategory(r io.Reader) ([]*Good, error) {
doc, err := goquery.NewDocumentFromReader(r)
if err != nil {

View File

@ -51,3 +51,30 @@ func Test_parseGoodsCategory(t *testing.T) {
})
}
}
func TestGood_GoodID(t *testing.T) {
type fields struct {
GoodLink string
}
tests := []struct {
fields fields
want int
}{
{
fields: fields{
GoodLink: "/itm/mortal-kombat-1-ua-kz-auto-24-7/4107232",
},
want: 4107232,
},
}
for _, tt := range tests {
t.Run(tt.fields.GoodLink, func(t *testing.T) {
g := &Good{
GoodLink: tt.fields.GoodLink,
}
if got := g.GoodID(); got != tt.want {
t.Errorf("Good.GoodID() = %v, want %v", got, tt.want)
}
})
}
}