utility_mm 0.1.0 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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: []