jzimmek-reportme 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/reportme/report_factory.rb +66 -26
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.10
|
@@ -29,12 +29,14 @@ module Reportme
|
|
29
29
|
when :day
|
30
30
|
[today - 1.day, today - 1.day]
|
31
31
|
when :week
|
32
|
-
[today - 1.day - 1.week, today - 1.day]
|
32
|
+
# [today - 1.day - 1.week, today - 1.day]
|
33
|
+
[today - 1.week, today - 1.day]
|
33
34
|
when :calendar_week
|
34
35
|
n = today - 1.day
|
35
36
|
[n - n.cwday + 1, n - n.cwday + 7]
|
36
37
|
when :month
|
37
|
-
[today - 1.day - 1.month, today - 1.day]
|
38
|
+
# [today - 1.day - 1.month, today - 1.day]
|
39
|
+
[today - 1.month, today - 1.day]
|
38
40
|
when :calendar_month
|
39
41
|
n = today - 1.month
|
40
42
|
[n.beginning_of_month, n.end_of_month]
|
@@ -68,11 +70,21 @@ module Reportme
|
|
68
70
|
end
|
69
71
|
end
|
70
72
|
end
|
71
|
-
|
72
|
-
def
|
73
|
-
|
74
|
-
|
73
|
+
|
74
|
+
def week_data_present?(report, von, bis)
|
75
|
+
puts "von: #{von} ... bis: #{bis}"
|
76
|
+
end
|
77
|
+
|
78
|
+
def ensure_report_table_exist(report, period)
|
79
|
+
unless report.table_exist?(period)
|
80
|
+
table_name = report.table_name(period)
|
81
|
+
sql = report.sql('0000-00-00 00:00:00', '0000-00-00 00:00:00', period)
|
82
|
+
|
83
|
+
exec("create table #{table_name} ENGINE=InnoDB default CHARSET=utf8 as #{sql} limit 0;")
|
84
|
+
end
|
85
|
+
end
|
75
86
|
|
87
|
+
def ensure_report_informations_table_exist
|
76
88
|
unless report_information_table_name_exist?
|
77
89
|
ddl = <<-SQL
|
78
90
|
create
|
@@ -88,12 +100,40 @@ module Reportme
|
|
88
100
|
SQL
|
89
101
|
exec(ddl)
|
90
102
|
end
|
103
|
+
end
|
91
104
|
|
92
|
-
|
93
|
-
|
94
|
-
|
105
|
+
def try_weekly_report_by_daily_reports(report, _von, _bis)
|
106
|
+
|
107
|
+
table_name = report.table_name(:week)
|
108
|
+
|
109
|
+
von = _von.strftime("%Y-%m-%d 00:00:00")
|
110
|
+
bis = _bis.strftime("%Y-%m-%d 23:59:59")
|
111
|
+
|
112
|
+
existing_daily_reports = select_value(<<-SQL
|
113
|
+
select
|
114
|
+
count(1) cnt
|
115
|
+
from
|
116
|
+
#{report_information_table_name}
|
117
|
+
where
|
118
|
+
report = '#{report.table_name(:day)}'
|
119
|
+
and von between '#{von}' and '#{(_von + 6.days).strftime("%Y-%m-%d 23:59:59")}'
|
120
|
+
SQL
|
121
|
+
).to_i
|
122
|
+
|
123
|
+
puts "weekly report depends on 7 daily reports ... #{existing_daily_reports} daily found"
|
124
|
+
|
125
|
+
if existing_daily_reports == 7
|
126
|
+
ActiveRecord::Base.transaction do
|
127
|
+
exec("insert into #{report_information_table_name} values ('#{table_name}', '#{von}', '#{bis}', now());")
|
128
|
+
exec("insert into #{table_name} select * from #{report.table_name(:day)} where von between '#{von}' and '#{(_von + 6.days).strftime("%Y-%m-%d 00:00:00")}';")
|
129
|
+
end
|
95
130
|
end
|
131
|
+
end
|
96
132
|
|
133
|
+
def run
|
134
|
+
|
135
|
+
ensure_report_informations_table_exist
|
136
|
+
|
97
137
|
while !@since.future?
|
98
138
|
|
99
139
|
periods(@since).each do |period|
|
@@ -103,31 +143,31 @@ module Reportme
|
|
103
143
|
period_name = period[:name]
|
104
144
|
|
105
145
|
next unless r.wants_period?(period_name)
|
106
|
-
|
107
|
-
von = period[:von].strftime("%Y-%m-%d 00:00:00")
|
108
|
-
bis = period[:bis].strftime("%Y-%m-%d 23:59:59")
|
109
146
|
|
110
|
-
|
147
|
+
_von = period[:von]
|
148
|
+
_bis = period[:bis]
|
111
149
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
150
|
+
von = _von.strftime("%Y-%m-%d 00:00:00")
|
151
|
+
bis = _bis.strftime("%Y-%m-%d 23:59:59")
|
152
|
+
|
153
|
+
table_name = r.table_name(period_name)
|
116
154
|
|
117
155
|
table_exist = r.table_exist?(period_name)
|
118
156
|
sql = r.sql(von, bis, period_name)
|
119
|
-
report_exist = report_exists?(table_name, von, bis)
|
120
157
|
|
121
158
|
puts "report: #{r.table_name(period_name)} exist: #{table_exist}"
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
159
|
+
|
160
|
+
ensure_report_table_exist(r, period_name)
|
161
|
+
|
162
|
+
report_exists = report_exists?(table_name, von, bis)
|
163
|
+
|
164
|
+
try_weekly_report_by_daily_reports(r, _von, _bis) if period_name == :week && !report_exists
|
165
|
+
|
166
|
+
report_exists = report_exists?(table_name, von, bis)
|
167
|
+
|
168
|
+
if !report_exists || period_name == :today
|
129
169
|
ActiveRecord::Base.transaction do
|
130
|
-
exec("insert into #{report_information_table_name} values ('#{table_name}', '#{von}', '#{bis}', now());") unless
|
170
|
+
exec("insert into #{report_information_table_name} values ('#{table_name}', '#{von}', '#{bis}', now());") unless report_exists
|
131
171
|
|
132
172
|
if period_name == :today
|
133
173
|
exec("truncate #{table_name};")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jzimmek-reportme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Zimmek
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-06-
|
12
|
+
date: 2009-06-24 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|