item_models 0.0.13 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/item_models/version.rb +1 -1
- data/lib/models/bundle.rb +2 -0
- data/lib/models/bundle_variant.rb +2 -0
- data/lib/models/concerns/restorable.rb +28 -0
- data/lib/models/image.rb +92 -0
- data/lib/models/item.rb +3 -0
- data/lib/models/item_listing.rb +10 -2
- data/lib/models/item_listing_brand.rb +6 -0
- data/lib/models/item_listing_category.rb +6 -0
- data/lib/models/item_listing_custom_field.rb +8 -0
- data/lib/models/item_listing_image.rb +3 -0
- data/lib/models/item_listing_variant_custom_field.rb +5 -1
- data/lib/models/item_listing_variant_image.rb +4 -0
- data/lib/models/shopee_brand.rb +9 -0
- data/lib/models/shopee_category.rb +22 -0
- data/lib/models/shopee_item_custom_field.rb +8 -0
- data/lib/models/shopee_item_custom_field_option.rb +10 -0
- data/lib/models/shopee_item_variant_custom_field.rb +5 -0
- data/lib/models/shopee_logistic_address.rb +5 -0
- data/lib/models/shopee_shipping_provider.rb +5 -0
- data/lib/models/variant.rb +3 -0
- data/lib/models/variant_image.rb +2 -0
- data/lib/models/variant_listing.rb +26 -0
- data/lib/models/variant_option.rb +2 -0
- data/lib/models/variant_option_association.rb +2 -0
- metadata +16 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2bb9091dc58e62a90422baf821b798b08387d1b13e4c9bfbf3d519e26dda5cae
|
4
|
+
data.tar.gz: 3675c282105208b2d61e91c187479232110fe9278c076684517c768faf161c4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a02f15bfc3f2f3cbac0b036acad9fac5a30c85c365b4b047ca937b5bb54338de3166b6ab07469779ca1eb55acd07ec58acc31b825654d8aa1620b41f49442321
|
7
|
+
data.tar.gz: 63e1a4e82230dec57a8f3090f34cac08a45bf71021f71ad9ef8ca9217f2d782138554d0cb0d891310e0956f50044d8191981d5ac424bb39f4afc8ca396287b7d
|
data/lib/item_models/version.rb
CHANGED
data/lib/models/bundle.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Restorable
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
acts_as_paranoid column: :removed, sentinel_value: false
|
6
|
+
acts_as_paranoid column: :removed_at, sentinel_value: false
|
7
|
+
|
8
|
+
# It seems paranoia bug: method_missing `deleted_at`
|
9
|
+
# when restore with `recovery_window`
|
10
|
+
alias_attribute :deleted_at, :removed_at
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def paranoia_restore_attributes
|
15
|
+
{
|
16
|
+
removed_at: nil,
|
17
|
+
removed: false
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def paranoia_destroy_attributes
|
22
|
+
{
|
23
|
+
removed_at: current_time_from_proper_timezone,
|
24
|
+
removed: nil
|
25
|
+
}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/models/image.rb
CHANGED
@@ -1,11 +1,103 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'concerns/restorable'
|
3
4
|
class Image < ItemApplicationRecord
|
4
5
|
self.table_name = 'item_images'
|
6
|
+
include ::Restorable
|
5
7
|
|
6
8
|
belongs_to :item
|
7
9
|
has_many :item_listing_images
|
8
10
|
has_many :variant_images, foreign_key: :item_image_id
|
9
11
|
has_many :master_catalog_images
|
10
12
|
has_many :item_listing_variant_custom_fields
|
13
|
+
|
14
|
+
has_attached_file :image,
|
15
|
+
path: '/system/item/:class/:attachment/:id_partition/:style/:fingerprint.:extension',
|
16
|
+
default_url: lambda { |attach|
|
17
|
+
attach.instance.url || '/public/missing/missing-item.jpg'
|
18
|
+
},
|
19
|
+
styles: lambda { |attachment|
|
20
|
+
object = attachment.instance.image.queued_for_write[:original]
|
21
|
+
width, height =
|
22
|
+
if object
|
23
|
+
FastImage.size(object) || [0,0]
|
24
|
+
else
|
25
|
+
[(attachment.instance.width || 500), (attachment.instance.height || 500)]
|
26
|
+
end
|
27
|
+
|
28
|
+
dim = [width, height]
|
29
|
+
clamped_dim = dim.max && [600, dim.max, 2000].sort[1]
|
30
|
+
big_clamped_dim = dim.max && [1100, dim.max, 2000].sort[1]
|
31
|
+
|
32
|
+
# max hxw and ratio (1100 x 762)
|
33
|
+
ratio_381_550 = 1100/762.to_f
|
34
|
+
real_ratio = height/width.to_f
|
35
|
+
|
36
|
+
# If real ratio is smaller, then width is thicker than desired width, therefor
|
37
|
+
# adjust height to fit desired ratio.
|
38
|
+
if real_ratio < ratio_381_550
|
39
|
+
w_381_550 = width
|
40
|
+
h_381_550 = width * ratio_381_550
|
41
|
+
else
|
42
|
+
w_381_550 = height / ratio_381_550
|
43
|
+
h_381_550 = height
|
44
|
+
end
|
45
|
+
|
46
|
+
{
|
47
|
+
xlarge: {
|
48
|
+
geometry: '1600x1600>',
|
49
|
+
format: :jpg,
|
50
|
+
convert_options: '-strip -interlace Plane -background white -alpha remove -flatten -alpha off'
|
51
|
+
},
|
52
|
+
large: {
|
53
|
+
geometry: '1000x1000>',
|
54
|
+
format: :jpg,
|
55
|
+
convert_options: '-strip -interlace Plane -background white -alpha remove -flatten -alpha off'
|
56
|
+
},
|
57
|
+
medium: {
|
58
|
+
geometry: '800x800>',
|
59
|
+
format: :jpg,
|
60
|
+
convert_options: '-strip -interlace Plane -background white -alpha remove -flatten -alpha off'
|
61
|
+
},
|
62
|
+
small: {
|
63
|
+
geometry: '500x500>',
|
64
|
+
format: :jpg,
|
65
|
+
convert_options: '-strip -interlace Plane -background white -alpha remove -flatten -alpha off'
|
66
|
+
},
|
67
|
+
thumb: {
|
68
|
+
geometry: '100x100>',
|
69
|
+
format: :jpg,
|
70
|
+
convert_options: '-strip -interlace Plane -background white -alpha remove -flatten -alpha off'
|
71
|
+
},
|
72
|
+
marketplace: {
|
73
|
+
geometry: '500x500<',
|
74
|
+
format: :jpg,
|
75
|
+
convert_options: '-strip -interlace Plane -background white -alpha remove -flatten -alpha off'
|
76
|
+
},
|
77
|
+
# Lazada needs colorspace to be sRGB. CMYK colorspace will produce error
|
78
|
+
square: {
|
79
|
+
geometry: dim.max && dim.max < 600 ? '600x600<' : '2000x2000>',
|
80
|
+
format: :jpg,
|
81
|
+
convert_options: "-strip -colorspace sRGB -interlace Plane -background white -alpha remove -flatten -alpha off -gravity center -extent #{clamped_dim}x#{clamped_dim}"
|
82
|
+
},
|
83
|
+
# Zalora
|
84
|
+
big_square: {
|
85
|
+
geometry: dim.max && dim.max < 1100 ? '1100x1100<' : '2000x2000>',
|
86
|
+
format: :jpg,
|
87
|
+
convert_options: "-strip -colorspace sRGB -interlace Plane -background white -alpha remove -flatten -alpha off -gravity center -extent #{big_clamped_dim}x#{big_clamped_dim}"
|
88
|
+
},
|
89
|
+
# lyke
|
90
|
+
ratio_381_550: {
|
91
|
+
geometry: w_381_550 <= 762 ? '762x1100<' : '762x1100>',
|
92
|
+
format: :jpeg,
|
93
|
+
convert_options: "-strip -colorspace sRGB -interlace Plane -background white -alpha remove -flatten -alpha off -gravity center -extent 762x1100"
|
94
|
+
},
|
95
|
+
# elevenia
|
96
|
+
width_780_or_less: {
|
97
|
+
geometry: '780x>',
|
98
|
+
format: :jpg,
|
99
|
+
convert_options: '-strip -interlace Plane -background white -alpha remove -flatten -alpha off'
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
11
103
|
end
|
data/lib/models/item.rb
CHANGED
data/lib/models/item_listing.rb
CHANGED
@@ -1,15 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'concerns/restorable'
|
3
4
|
class ItemListing < ItemApplicationRecord
|
4
5
|
self.table_name = 'item_channel_associations'
|
6
|
+
include ::Restorable
|
7
|
+
|
5
8
|
belongs_to :item
|
6
9
|
has_many :variant_listings, foreign_key: :channel_association_id
|
7
10
|
has_many :item_listing_images, foreign_key: :channel_association_id
|
8
|
-
|
9
|
-
|
11
|
+
has_one :item_listing_category, foreign_key: :channel_association_id
|
12
|
+
has_one :item_listing_brand, foreign_key: :channel_association_id
|
10
13
|
has_many :item_listing_variant_custom_fields, foreign_key: :channel_association_id
|
11
14
|
has_many :item_listing_custom_fields, foreign_key: :channel_association_id
|
12
15
|
has_many :item_listing_variant_images, foreign_key: :channel_association_id
|
16
|
+
has_many :images,
|
17
|
+
class_name: 'ItemListingImage',
|
18
|
+
dependent: :destroy,
|
19
|
+
autosave: true,
|
20
|
+
foreign_key: :channel_association_id
|
13
21
|
has_one :category,
|
14
22
|
dependent: :destroy,
|
15
23
|
autosave: true
|
@@ -1,7 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'concerns/restorable'
|
3
4
|
class ItemListingBrand < ItemApplicationRecord
|
4
5
|
self.table_name = 'item_channel_association_brands'
|
6
|
+
include ::Restorable
|
5
7
|
|
6
8
|
belongs_to :item_listing, foreign_key: :channel_association_id
|
9
|
+
belongs_to :shopee,
|
10
|
+
class_name: 'ShopeeBrand',
|
11
|
+
foreign_key: :shopee_brand_id,
|
12
|
+
optional: true
|
7
13
|
end
|
@@ -1,7 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'concerns/restorable'
|
3
4
|
class ItemListingCategory < ItemApplicationRecord
|
4
5
|
self.table_name = 'item_channel_association_categories'
|
6
|
+
include ::Restorable
|
5
7
|
|
6
8
|
belongs_to :item_listing, foreign_key: :channel_association_id
|
9
|
+
belongs_to :shopee,
|
10
|
+
class_name: 'ShopeeCategory',
|
11
|
+
foreign_key: :shopee_category_id,
|
12
|
+
optional: true
|
7
13
|
end
|
@@ -1,8 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'concerns/restorable'
|
3
4
|
class ItemListingCustomField < ItemApplicationRecord
|
4
5
|
self.table_name = 'item_channel_association_custom_fields'
|
6
|
+
include ::Restorable
|
5
7
|
|
6
8
|
belongs_to :item_listing, foreign_key: :channel_association_id
|
7
9
|
belongs_to :variant
|
10
|
+
belongs_to :shopee,
|
11
|
+
class_name: 'ShopeeItemCustomField',
|
12
|
+
foreign_key: :shopee_item_custom_field_id,
|
13
|
+
optional: true
|
14
|
+
|
15
|
+
serialize :value
|
8
16
|
end
|
@@ -1,7 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'concerns/restorable'
|
3
4
|
class ItemListingImage < ItemApplicationRecord
|
4
5
|
self.table_name = 'item_channel_association_images'
|
6
|
+
include ::Restorable
|
7
|
+
|
5
8
|
belongs_to :image
|
6
9
|
belongs_to :item_listing, foreign_key: :channel_association_id
|
7
10
|
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class ItemListingVariantCustomField < ItemApplicationRecord
|
4
|
-
self.table_name = '
|
4
|
+
self.table_name = 'item_channel_association_variant_custom_fields'
|
5
5
|
|
6
6
|
belongs_to :item_listing, foreign_key: :channel_association_id
|
7
7
|
belongs_to :variant
|
8
8
|
belongs_to :image
|
9
|
+
belongs_to :shopee,
|
10
|
+
class_name: 'ShopeeItemVariantCustomField',
|
11
|
+
foreign_key: :shopee_item_variant_custom_field_id,
|
12
|
+
optional: true
|
9
13
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ShopeeCategory < ItemApplicationRecord
|
4
|
+
self.table_name = 'channel_shopee_categories'
|
5
|
+
|
6
|
+
belongs_to :parent_category,
|
7
|
+
class_name: 'ShopeeCategory',
|
8
|
+
foreign_key: :parent_category_id,
|
9
|
+
optional: true
|
10
|
+
belongs_to :primary_category,
|
11
|
+
class_name: 'ShopeeCategory',
|
12
|
+
foreign_key: :primary_category_id,
|
13
|
+
optional: true
|
14
|
+
has_many :child_categories,
|
15
|
+
class_name: 'ShopeeCategory',
|
16
|
+
foreign_key: :parent_category_id,
|
17
|
+
dependent: :destroy
|
18
|
+
|
19
|
+
has_many :item_channel_association_categories,
|
20
|
+
class_name: '::ItemListingCategory',
|
21
|
+
foreign_key: :shopee_category_id
|
22
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ShopeeItemCustomField < ItemApplicationRecord
|
4
|
+
self.table_name = 'channel_shopee_item_custom_fields'
|
5
|
+
|
6
|
+
has_many :associated_custom_fields, class_name: 'ItemListingCustomField'
|
7
|
+
has_many :options, foreign_key: :custom_field_id, class_name: 'ShopeeItemCustomFieldOption'
|
8
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ShopeeItemCustomFieldOption < ItemApplicationRecord
|
4
|
+
self.table_name = 'channel_shopee_item_custom_field_options'
|
5
|
+
|
6
|
+
belongs_to :custom_field,
|
7
|
+
class_name: 'ShopeeItemCustomField',
|
8
|
+
foreign_key: :custom_field_id,
|
9
|
+
optional: true
|
10
|
+
end
|
data/lib/models/variant.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'concerns/restorable'
|
3
4
|
class Variant < ItemApplicationRecord
|
4
5
|
self.table_name = 'item_variants'
|
6
|
+
include ::Restorable
|
7
|
+
|
5
8
|
belongs_to :item
|
6
9
|
has_many :variant_images, foreign_key: :item_variant_id
|
7
10
|
has_many :bundles
|
data/lib/models/variant_image.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'concerns/restorable'
|
3
4
|
class VariantListing < ItemApplicationRecord
|
4
5
|
self.table_name = 'item_channel_association_variant_associations'
|
6
|
+
include ::Restorable
|
5
7
|
|
6
8
|
belongs_to :variant
|
7
9
|
belongs_to :item_listing, foreign_key: :channel_association_id
|
@@ -9,4 +11,28 @@ class VariantListing < ItemApplicationRecord
|
|
9
11
|
class_name: 'VariantListingStockAllocation',
|
10
12
|
foreign_key: :variant_association_id
|
11
13
|
has_many :variant_listing_price_histories, foreign_key: :variant_association_id
|
14
|
+
|
15
|
+
serialize :option2_value
|
16
|
+
serialize :option_value
|
17
|
+
serialize :name_option
|
18
|
+
serialize :qc_reason
|
19
|
+
serialize :last_log
|
20
|
+
serialize :bukalapak_free_shipping
|
21
|
+
serialize :shopee_shipping_providers
|
22
|
+
serialize :description
|
23
|
+
serialize :description_unique_selling_point
|
24
|
+
|
25
|
+
def item_listing_custom_fields
|
26
|
+
ItemListingCustomField.where("channel_association_id = ? AND variant_id = ?", self.channel_association_id, self.variant_id)
|
27
|
+
end
|
28
|
+
|
29
|
+
def item_listing_variant_custom_fields
|
30
|
+
ItemListingVariantCustomField.where("channel_association_id = ? AND variant_id = ?", self.channel_association_id, self.variant_id)
|
31
|
+
end
|
32
|
+
|
33
|
+
def item_listing_variant_images
|
34
|
+
ItemListingVariantImage.where(
|
35
|
+
"channel_association_id = ? AND variant_id = ? AND account_id = ?", self.channel_association_id, self.variant_id, self.profile_channel_association_id
|
36
|
+
)
|
37
|
+
end
|
12
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: item_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- alexander
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
-
description:
|
55
|
+
description:
|
56
56
|
email:
|
57
57
|
- alxibra@gmail.com
|
58
58
|
executables: []
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- lib/models/availability_option.rb
|
66
66
|
- lib/models/bundle.rb
|
67
67
|
- lib/models/bundle_variant.rb
|
68
|
+
- lib/models/concerns/restorable.rb
|
68
69
|
- lib/models/image.rb
|
69
70
|
- lib/models/item.rb
|
70
71
|
- lib/models/item_application_record.rb
|
@@ -77,6 +78,13 @@ files:
|
|
77
78
|
- lib/models/item_listing_variant_image.rb
|
78
79
|
- lib/models/master_catalog.rb
|
79
80
|
- lib/models/master_catalog_image.rb
|
81
|
+
- lib/models/shopee_brand.rb
|
82
|
+
- lib/models/shopee_category.rb
|
83
|
+
- lib/models/shopee_item_custom_field.rb
|
84
|
+
- lib/models/shopee_item_custom_field_option.rb
|
85
|
+
- lib/models/shopee_item_variant_custom_field.rb
|
86
|
+
- lib/models/shopee_logistic_address.rb
|
87
|
+
- lib/models/shopee_shipping_provider.rb
|
80
88
|
- lib/models/variant.rb
|
81
89
|
- lib/models/variant_image.rb
|
82
90
|
- lib/models/variant_listing.rb
|
@@ -84,11 +92,11 @@ files:
|
|
84
92
|
- lib/models/variant_listing_stock_allocation.rb
|
85
93
|
- lib/models/variant_option.rb
|
86
94
|
- lib/models/variant_option_association.rb
|
87
|
-
homepage:
|
95
|
+
homepage:
|
88
96
|
licenses:
|
89
97
|
- MIT
|
90
98
|
metadata: {}
|
91
|
-
post_install_message:
|
99
|
+
post_install_message:
|
92
100
|
rdoc_options: []
|
93
101
|
require_paths:
|
94
102
|
- lib
|
@@ -104,8 +112,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
112
|
- !ruby/object:Gem::Version
|
105
113
|
version: '0'
|
106
114
|
requirements: []
|
107
|
-
rubygems_version: 3.
|
108
|
-
signing_key:
|
115
|
+
rubygems_version: 3.3.7
|
116
|
+
signing_key:
|
109
117
|
specification_version: 4
|
110
118
|
summary: gem for active record item models
|
111
119
|
test_files: []
|