This commit is contained in:
@ -86,6 +86,7 @@ func convertGoodsToGorm(cat *plati.Category, goods []*plati.Good) []*gorm.Good {
|
|||||||
for _, g := range goods {
|
for _, g := range goods {
|
||||||
gormGood := gorm.Good{
|
gormGood := gorm.Good{
|
||||||
ID: uuid.NewV4().String(),
|
ID: uuid.NewV4().String(),
|
||||||
|
GoodID: g.GoodID(),
|
||||||
Name: g.Name,
|
Name: g.Name,
|
||||||
IDC: cat.ID,
|
IDC: cat.ID,
|
||||||
IDR: cat.ParentID,
|
IDR: cat.ParentID,
|
||||||
|
@ -4,6 +4,7 @@ import "time"
|
|||||||
|
|
||||||
type Good struct {
|
type Good struct {
|
||||||
ID string
|
ID string
|
||||||
|
GoodID int
|
||||||
Name string
|
Name string
|
||||||
IDC int
|
IDC int
|
||||||
IDR int
|
IDR int
|
||||||
|
14
migrations/20240103005325_goods_id.sql
Normal file
14
migrations/20240103005325_goods_id.sql
Normal 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
|
@ -181,6 +181,16 @@ type Good struct {
|
|||||||
Price float64
|
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) {
|
func parseGoodsCategory(r io.Reader) ([]*Good, error) {
|
||||||
doc, err := goquery.NewDocumentFromReader(r)
|
doc, err := goquery.NewDocumentFromReader(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user