rawgento_db 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7834b49b987adea4010bbf7ebd524b1fe70bf78
4
- data.tar.gz: ced44d3b72e3b943e5a6dabb8900c62dfa6f72ab
3
+ metadata.gz: fe3b3478f240604d44d825c5e952cbbe7588b091
4
+ data.tar.gz: fc9d252fab119300aa6df0fb2a187656be37dc8b
5
5
  SHA512:
6
- metadata.gz: e9a2744d27f30c93657a3b33b65716a63502fdbdc7630f71c2eda12baee4e6e1ef73ac9bba38056c79d3148a2e5c31522d4766ed103b975957dc827f060abe32
7
- data.tar.gz: 5502ccd4aabd0c20c85194b7d19870b4d13cc585556e8fb27f833f9dcf4e140afe0843ea3dd657375aabd30b9f064b54bda4d8cddc67ff1ed4d37afa3aec0e8d
6
+ metadata.gz: 2e3c905bbb095ac98b5efdecdd17f674f8384724e0a67ee4b02b0ad7e286189abdfbd6281ffa26b132fa1b64cc22aec733f899a1a8126652d17dd368645834b2
7
+ data.tar.gz: 3041a3b2dcc9779872f4766f29d66671cfc98989e035272c63480da44ab66eb0dc3a7bf29da366619911ea9e6c5a821ab00c30a75df88ebe523a4364790c6c28
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # RawgentoDB
2
2
 
3
- Interact with a Magento MySQL database, using assumptions of a specific installation
3
+ Interact with a Magento MySQL database, using assumptions of a specific installation.
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,6 @@ Or install it yourself as:
18
18
 
19
19
  $ gem install rawgento_db
20
20
 
21
- ## Usage
22
21
 
23
22
  ### Configuration
24
23
 
@@ -30,6 +29,26 @@ Edit rawgento_db-config.yml to your needs.
30
29
  username: myuser
31
30
  password: mysecret
32
31
 
32
+ The first 5 keys define access to the mysql (magento) database.
33
+
34
+ ## Usage
35
+
36
+ `RawgentoDB` defines the following methods:
37
+
38
+ - `RawgetoDB.settings`: Reads the aforementioned config file and returns its values (a hash). The settings are needed for all the other operations.
39
+ - `RawgentoDB::Query.products`: Returns an array of Struct(:product_id, '')s containing the product_id (unfortunately, name is not easily accessible atm).
40
+ - `RawgentoDB::Query.stock`: Returns am array of Struct(:product_id, :qty)s containing current stock per product.
41
+ - `RawgentoDB::Query.understock(settings)`: Returns array of [product_id, qty, min_qty] for products with notify_min_stock smaller than current stock.
42
+ - `RawgentoDB::Query.sales_monthly(product_id, settings)`: Returns array of [period, qty_ordered] information for one product.
43
+ - `RawgentoDB::Query.sales_daily(product_id, settings)`: Returns array of [period, qty_ordered] information for one product.
44
+ - `RawgentoDB::Query.attribute_varchar(attribute_id, settings)`: Returns array of [product_id, attribute_value] varchar-attribute-value information for all products.
45
+ - `RawgentoDB::Query.attribute_option(attribute_id, settings)`: Returns array of [product_id, attribute_value] attribute-value of an option for all products.
46
+
47
+
48
+ Furthermore, some command line applications are provided to get a view on the Shop through the eyes of the `rawgento_db` gem:
49
+
50
+ - `rawgento_show_products`: Shows a table of products.
51
+
33
52
  ## Development
34
53
 
35
54
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec rawgento_db` to use the gem in this directory, ignoring other installed copies of this gem.
data/lib/rawgento_db.rb CHANGED
@@ -3,7 +3,9 @@ require "rawgento_db/query"
3
3
  require 'yaml'
4
4
 
5
5
  module RawgentoDB
6
- def self.settings file: "rawgento_db-config.yml"
7
- YAML.load_file file
6
+ DEFAULT_CONFIG_FILE = "rawgento_db-config.yml"
7
+ def self.settings file=DEFAULT_CONFIG_FILE
8
+ @@settings ||= YAML.load_file(file || DEFAULT_CONFIG_FILE)
9
+ @@settings
8
10
  end
9
11
  end
@@ -6,16 +6,16 @@ module RawgentoDB
6
6
 
7
7
  class Query
8
8
  def self.client settings
9
+ # Pick up a memoized settings?
9
10
  Mysql2::Client.new settings
10
11
  end
11
12
 
12
13
  def self.products settings
13
- result = client(settings).query('SELECT product_id, name '\
14
- 'FROM cataloginventory_stock_item csi'\
15
- ' JOIN catalog_product_flat_1 cpf ON'\
16
- ' csi.product_id=cpf.entity_id')
14
+ # Unfortunately, name is an own attribute in different table.
15
+ result = client(settings).query('SELECT entity_id '\
16
+ 'FROM catalog_product_entity')
17
17
  result.map do |r|
18
- Product.new r["product_id"], r["name"]
18
+ Product.new r["entity_id"], r[""]
19
19
  end
20
20
  end
21
21
 
@@ -27,7 +27,18 @@ module RawgentoDB
27
27
  end
28
28
  end
29
29
 
30
- def self.sales product_id, settings
30
+ def self.understocked settings
31
+ results = client(settings).query(
32
+ "SELECT product_id, qty, notify_stock_qty "\
33
+ "FROM cataloginventory_stock_item "\
34
+ "WHERE notify_stock_qty > qty;")
35
+ results.map do |row|
36
+ [row['product_id'], row['name'],
37
+ row['notify_stock_qty'], row['qty']]
38
+ end
39
+ end
40
+
41
+ def self.sales_monthly product_id, settings
31
42
  result = client(settings).query('SELECT * '\
32
43
  'FROM sales_bestsellers_aggregated_monthly '\
33
44
  ' WHERE product_id = %d ORDER BY period DESC' % product_id)
@@ -35,5 +46,37 @@ module RawgentoDB
35
46
  [r['period'], "%1.0f" % r['qty_ordered']]
36
47
  end
37
48
  end
49
+
50
+ def self.sales_daily product_id, settings
51
+ result = client(settings).query('SELECT * '\
52
+ 'FROM sales_bestsellers_aggregated_daily '\
53
+ ' WHERE product_id = %d ORDER BY period DESC' % product_id)
54
+ result.map do |r|
55
+ [r['period'], "%1.0f" % r['qty_ordered']]
56
+ end
57
+ end
58
+
59
+ def self.attribute_varchar attribute_id, settings
60
+ result = client(settings).query("
61
+ SELECT entity_id, value
62
+ FROM catalog_product_entity_varchar
63
+ WHERE attribute_id=#{attribute_id};")
64
+ result.map do |r|
65
+ [r['entity_id'], r['value']]
66
+ end
67
+ end
68
+
69
+ def self.attribute_option attribute_id, settings
70
+ # Join
71
+ result = client(settings).query("
72
+ SELECT optchoice.entity_id, optval.value
73
+ FROM eav_attribute_option_value as optval,
74
+ catalog_product_entity_int as optchoice
75
+ WHERE optchoice.attribute_id=#{attribute_id}
76
+ AND optval.option_id=optchoice.value;")
77
+ result.map do |r|
78
+ [r['entity_id'], r['value']]
79
+ end
80
+ end
38
81
  end
39
82
  end
@@ -1,3 +1,3 @@
1
1
  module RawgentoDB
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rawgento_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Wolfsteller
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-19 00:00:00.000000000 Z
11
+ date: 2016-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rawgento_models