utility_mm 0.1.0 → 0.1.3

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: 552e753965a88752f5c5ff81cb99d9656b56540b
4
- data.tar.gz: d44fc3704b12b2533e2223eed3ecc0f8058835bb
3
+ metadata.gz: 002d7bd87aed1fb155568bae90d771fb31306775
4
+ data.tar.gz: 2735f9ce67dcb21221f0bae57d5e4948705d8055
5
5
  SHA512:
6
- metadata.gz: 8100ef3051a431b09c94c2759fa8047071e5d8a7d428faa6561b442543f426ca1af52c02ced3aaceb75bf6fac537aefafa5d767d5dd061d6cc1557260d24abe3
7
- data.tar.gz: 35bb5d4bfb9c7abb5b0fd0e7de6d70d781baf6fd7501508daeb2f72ef50a0aa4b934f042e13efa7fdc691ac4bd1a9c00fcbd58995b34f08d8dccc529c6d36e71
6
+ metadata.gz: a5120a1489dd4549799ecb8a70e8eb57928d18182b1fd03799aca338bd347525837145bf54f73672c9020bd355937456bb54e098b7234936374341c619397eb4
7
+ data.tar.gz: 0628bff40d6dc48763ed2e420e68291c7785d6fef5220f6e1a33ddd02bd78f6844bdc4546ab795e21fe244b9c6e48361785b5a4c29bf356a74c6f602a011b44e
data/.DS_Store ADDED
Binary file
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /dbconfig.yml
data/lib/utility_mm.rb CHANGED
@@ -1,29 +1,102 @@
1
1
  require "utility_mm/version"
2
2
  require "yaml"
3
- require "netsuite"
4
3
  require "sequel"
4
+ require "pushover"
5
+ require "trollop"
6
+ require "csv"
7
+ require "smarter_csv"
8
+ require "roo"
5
9
 
6
10
  module UtilityMm
7
11
 
8
- def self.sql_connect _dbconfig
12
+ def self.sql_connect
13
+ dbconfig = YAML.load_file("dbconfig.yml")
14
+
9
15
  if @db.nil?
10
- _dbconfig['db'].tap do |db|
16
+ dbconfig['db'].tap do |db|
11
17
  @db = Sequel.connect("mysql2://#{db['user']}:#{db['pass']}@#{db['host']}:#{db['port']}/#{db['schema']}", :pool_timeout=>30)
12
18
  end
13
19
  end
14
-
15
20
  return @db
16
21
  end
17
22
 
23
+ #formats string for DW entry ex: "Hello Friend" => "hello_friend"
18
24
  def self.underscore _s
19
- _s.tr(" ", "_").
20
- gsub(/\./, '__').
21
- gsub(/::/, '/').
22
- tr(":", "_").
23
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
24
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
25
- tr("-", "_").
26
- downcase
25
+ _s.tr(" ", "_").
26
+ gsub(/\./, '__').
27
+ gsub(/::/, '/').
28
+ tr(":", "_").
29
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
30
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
31
+ tr("-", "_").
32
+ downcase
33
+ end
34
+
35
+ #creates tables based off of a yml file
36
+ def self.create_tables name
37
+ config = YAML.load_file('config.yml')
38
+ _config["objects"].each do |n,o|
39
+ table_name = name
40
+ indexes = o["indexes"]
41
+
42
+ unless @db.table_exists?(table_name.to_sym)
43
+ puts table_name.to_sym
44
+
45
+ @db.create_table?(table_name.to_sym){ String :source }
46
+
47
+ o["fields"].merge(o["keys"]).each do |field_name,cfg|
48
+ @db.add_column table_name.to_sym, UtilityMm.underscore(field_name).to_sym, Object.const_get(cfg['kind']), cfg.has_key?('opts') ? cfg['opts'] : {}
49
+ end
50
+
51
+ _keys = o['keys'].collect { |k,v| UtilityMm.underscore(k).to_sym }
52
+ @db.alter_table(table_name.to_sym) do
53
+ add_primary_key _keys
54
+ end
55
+
56
+ indexes.each do |i|
57
+ puts "creating index: #{i}"
58
+ s="#{table_name}_#{i}_idx"
59
+
60
+ @db.add_index table_name.to_sym, Sequel.identifier(i.to_sym), :name => (s.length > 64 ? "#{s[0,28]}-#{rand 100000..999999}-#{s[-28,28]}" : s)
61
+ end unless indexes.nil?
62
+ end
63
+ end
64
+ end
65
+
66
+ #connects to pushover api
67
+ def self.pushover_connect
68
+ Pushover.configure do |config|
69
+ config.user='uz5KiL8CCmTSTvSA5SZMXeBfUgdHce'
70
+ config.token='aousJUNyemjFbFu5cio4vfrNHFoXRB'
71
+ end
72
+ end
73
+
74
+ #pushes a message to pushover must be connected
75
+ def self.push_msg _msg, _title
76
+ Pushover.notification(message: _msg, title: _title)
77
+ end
78
+
79
+ #unpivot method to unpivot csv
80
+ def self.unpivot csv, _titles, dim
81
+ sheet = CSV.read(csv)
82
+
83
+ headers = sheet[0]
84
+ titles = headers.slice!(0..(_titles - 1))
85
+
86
+ titles.map! do |title|
87
+ title = underscore title
88
+ title = title.to_sym
89
+ end
90
+
91
+ dimensions = []
92
+
93
+ dim.times do |x|
94
+ dimensions[x] = titles.zip(sheet[x+1].slice!(0..(_titles -1))).to_h
95
+ end
96
+
97
+ counter = sheet[0].count
98
+
99
+ puts dimensions
27
100
  end
28
101
 
29
102
  end
@@ -1,3 +1,3 @@
1
1
  module UtilityMm
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.3"
3
3
  end
data/utility_mm.gemspec CHANGED
@@ -9,12 +9,11 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Jake Jacobson"]
10
10
  spec.email = ["jake.jacobson@jake-jacobson-mbp.corp.modmed.com"]
11
11
 
12
- spec.summary = %q{Utility Gem for ModMed}
13
- spec.description = %q{Ssuhh dude, this gem is used to make life easier at ModMed, so be easy.}
12
+ spec.summary = %q{Modmed utility gem. }
13
+ spec.description = %q{Utility gem for general Modmed use. }
14
14
  spec.homepage = ""
15
15
  spec.license = "MIT"
16
16
 
17
-
18
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
18
  spec.bindir = "exe"
20
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -24,4 +23,11 @@ Gem::Specification.new do |spec|
24
23
  spec.add_development_dependency "rake", "~> 10.0"
25
24
  spec.add_development_dependency "rspec", "~> 3.0"
26
25
 
26
+ spec.add_dependency "sequel"
27
+ spec.add_dependency "mysql2"
28
+ spec.add_dependency "pushover"
29
+ spec.add_dependency "trollop"
30
+ spec.add_dependency "smarter_csv"
31
+ spec.add_dependency "roo"
32
+
27
33
  end
@@ -0,0 +1,3 @@
1
+ Account Name,Account Code,Level Name,Jan-12,Feb-12,Mar-12,Apr-12,May-12,Jun-12,Jul-12,Aug-12,Sep-12,Oct-12,Nov-12,Dec-12
2
+ Benefits,30120,Engineering (Rollup),10653.75,10653.75,10653.75,11506.05,11506.05,11506.05,11506.05,11506.05,11506 .05,10462.05,10426.05,10426.05
3
+ Furniture,70310,Engineering (Rollup),1740,2610,2610,2610,2610,2610,2610,2610,2610,2610,2610,2610
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utility_mm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Jacobson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-02-16 00:00:00.000000000 Z
11
+ date: 2016-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,13 +52,98 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
- description: Ssuhh dude, this gem is used to make life easier at ModMed, so be easy.
55
+ - !ruby/object:Gem::Dependency
56
+ name: sequel
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mysql2
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pushover
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: trollop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: smarter_csv
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: roo
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: 'Utility gem for general Modmed use. '
56
140
  email:
57
141
  - jake.jacobson@jake-jacobson-mbp.corp.modmed.com
58
142
  executables: []
59
143
  extensions: []
60
144
  extra_rdoc_files: []
61
145
  files:
146
+ - ".DS_Store"
62
147
  - ".gitignore"
63
148
  - ".rspec"
64
149
  - ".travis.yml"
@@ -71,6 +156,7 @@ files:
71
156
  - lib/utility_mm.rb
72
157
  - lib/utility_mm/version.rb
73
158
  - utility_mm.gemspec
159
+ - working/unpivot_sample.csv
74
160
  homepage: ''
75
161
  licenses:
76
162
  - MIT
@@ -91,8 +177,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
177
  version: '0'
92
178
  requirements: []
93
179
  rubyforge_project:
94
- rubygems_version: 2.4.6
180
+ rubygems_version: 2.5.1
95
181
  signing_key:
96
182
  specification_version: 4
97
- summary: Utility Gem for ModMed
183
+ summary: Modmed utility gem.
98
184
  test_files: []