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 +4 -4
- data/.DS_Store +0 -0
- data/.gitignore +1 -0
- data/lib/utility_mm.rb +85 -12
- data/lib/utility_mm/version.rb +1 -1
- data/utility_mm.gemspec +9 -3
- data/working/unpivot_sample.csv +3 -0
- metadata +91 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 002d7bd87aed1fb155568bae90d771fb31306775
|
4
|
+
data.tar.gz: 2735f9ce67dcb21221f0bae57d5e4948705d8055
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5120a1489dd4549799ecb8a70e8eb57928d18182b1fd03799aca338bd347525837145bf54f73672c9020bd355937456bb54e098b7234936374341c619397eb4
|
7
|
+
data.tar.gz: 0628bff40d6dc48763ed2e420e68291c7785d6fef5220f6e1a33ddd02bd78f6844bdc4546ab795e21fe244b9c6e48361785b5a4c29bf356a74c6f602a011b44e
|
data/.DS_Store
ADDED
Binary file
|
data/.gitignore
CHANGED
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
|
12
|
+
def self.sql_connect
|
13
|
+
dbconfig = YAML.load_file("dbconfig.yml")
|
14
|
+
|
9
15
|
if @db.nil?
|
10
|
-
|
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
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
data/lib/utility_mm/version.rb
CHANGED
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{
|
13
|
-
spec.description = %q{
|
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.
|
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-
|
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
|
-
|
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.
|
180
|
+
rubygems_version: 2.5.1
|
95
181
|
signing_key:
|
96
182
|
specification_version: 4
|
97
|
-
summary:
|
183
|
+
summary: Modmed utility gem.
|
98
184
|
test_files: []
|