kronos-ruby 0.1.0 → 0.1.1.alpha.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: f6cdca1db64b04dd638bd2bab14c2d7db08cbfc5
4
- data.tar.gz: 415fd5a168ea6fe7b5a11ce063060b0481343d83
3
+ metadata.gz: be2eb1ca51040bd4c6f53ceaa437b3c49dac4d05
4
+ data.tar.gz: 58345cec2cd6c1e8fe10ee29b6a4b9127b186014
5
5
  SHA512:
6
- metadata.gz: 75f95bada07601b3f05cdf31dda830d0688fb034da520faa443cfd31d201c25add5c9cfc9e76b9529769428b435b79e472eab5de2059fd1582a859ed4885f96d
7
- data.tar.gz: c8954ba6c6b21ccf0648e2fb081b5e13abc6a7bf6f452f35395fe40f9eaf1fbeb72e6bad07cd922a4cec0e12f14309dcc56acb233d6a16608b03e4fff523b3ba
6
+ metadata.gz: b411f7478d3a6f9cded78a37b9b2cbc3412019846ee19ddfc0c10a1f1e6e5425b019ada4130ddbd49ebf2624de7c6c4196c9512edf85f943418eb11c6dc48760
7
+ data.tar.gz: 21df651033dfa4efbfeb21869e607977305cbbb627b47dcfdeeeac12c917dfb06e39af0ba14c6e88392c0f561e987943eff37f8bd06e9b311afb2de7e5b54167
data/CHANGELOG.md CHANGED
@@ -3,8 +3,9 @@
3
3
  ## CHANGELOG
4
4
 
5
5
  ### Unreleased
6
+ - [Added] Mongo Storage
6
7
 
7
- ### 0.1.0 [2017-09-21]
8
+ ### 0.1.1 [2017-09-21]
8
9
  - [Added] Logger structure (Stdout and Slack)
9
10
  - [Added] Storage structure (InMemory)
10
11
  - [Added] Runner structure (Synchronous/Asynchronous)
data/kronos-ruby.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_dependency 'concurrent-ruby'
27
27
  spec.add_dependency 'chronic'
28
+ spec.add_dependency 'mongoid'
28
29
  spec.add_development_dependency 'bundler'
29
30
  spec.add_development_dependency 'coveralls'
30
31
  spec.add_development_dependency 'fasterer'
@@ -6,3 +6,4 @@ module Kronos
6
6
  end
7
7
 
8
8
  require 'kronos/storage/in_memory'
9
+ require 'kronos/storage/mongo_db'
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mongoid'
4
+
5
+ module Kronos
6
+ module Storage
7
+ module Mongo
8
+ module Model
9
+ class ReportModel
10
+ include Mongoid::Document
11
+ store_in collection: :kronos_reports
12
+
13
+ field :task_id, type: Symbol
14
+ field :metadata, type: Hash
15
+ field :timestamp, type: Time
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mongoid'
4
+
5
+ module Kronos
6
+ module Storage
7
+ module Mongo
8
+ module Model
9
+ class ScheduledTaskModel
10
+ include Mongoid::Document
11
+ store_in collection: :kronos_scheduled_tasks
12
+
13
+ field :task_id, type: Symbol
14
+ field :next_run, type: Time
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'kronos/storage/mongo/model/scheduled_task_model'
4
+ require 'kronos/storage/mongo/model/report_model'
5
+
6
+ module Kronos
7
+ module Storage
8
+ # :reek:UtilityFunction:
9
+ class MongoDb
10
+ SHEDULED_TASK_MODEL = Mongo::Model::ScheduledTaskModel
11
+ REPORT_MODEL = Mongo::Model::ReportModel
12
+
13
+ def scheduled_tasks
14
+ # Returns all current Kronos::ScheduledTask, resolved or pending
15
+ SHEDULED_TASK_MODEL.all
16
+ end
17
+
18
+ def schedule(scheduled_task)
19
+ # Removes any Kronos::ScheduledTask with same task ID and saves the one in parameter
20
+ remove(scheduled_task.task_id)
21
+ SHEDULED_TASK_MODEL.create(scheduled_task_params(scheduled_task))
22
+ end
23
+
24
+ def resolved_tasks
25
+ # Returns a list of task ids that where resolved (where scheduled_task.next_run <= Time.now)
26
+ tasks = []
27
+ SHEDULED_TASK_MODEL.where(:next_run.lte => Time.now).each do |scheduled_task_model|
28
+ tasks << Kronos::ScheduledTask.new(scheduled_task_model.id, scheduled_task_model.next_run)
29
+ end
30
+ tasks
31
+ end
32
+
33
+ def remove(task_id)
34
+ # Removes scheduled tasks with task_id
35
+ SHEDULED_TASK_MODEL.where(task_id: task_id).destroy_all
36
+ end
37
+
38
+ def reports
39
+ # Returns all previous Kronos::Report that were saved using #register_report
40
+ REPORT_MODEL.all
41
+ end
42
+
43
+ def register_report(report)
44
+ # Removes any Kronos::Report with same task ID and saves the one in parameter
45
+ remove_reports_for(report.task_id)
46
+ REPORT_MODEL.create(report_params(report))
47
+ end
48
+
49
+ def remove_reports_for(task_id)
50
+ # Removes reports with task_id
51
+ REPORT_MODEL.where(task_id: task_id).destroy_all
52
+ end
53
+
54
+ def pending?(task)
55
+ # Checks if task has any pending scheduled task (where scheduled_task.next_run > Time.now)
56
+ SHEDULED_TASK_MODEL.where(task_id: task.id).first.next_run > Time.now
57
+ end
58
+
59
+ private
60
+
61
+ def scheduled_task_params(scheduled_task)
62
+ {
63
+ task_id: scheduled_task.task_id,
64
+ next_run: scheduled_task.next_run
65
+ }
66
+ end
67
+
68
+ def report_params(report)
69
+ {
70
+ task_id: report.task_id,
71
+ metadata: report.metadata,
72
+ timestamp: report.timestamp
73
+ }
74
+ end
75
+ end
76
+ end
77
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kronos
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kronos-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1.alpha.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Teles
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mongoid
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -245,6 +259,9 @@ files:
245
259
  - lib/kronos/scheduled_task.rb
246
260
  - lib/kronos/storage.rb
247
261
  - lib/kronos/storage/in_memory.rb
262
+ - lib/kronos/storage/mongo/model/report_model.rb
263
+ - lib/kronos/storage/mongo/model/scheduled_task_model.rb
264
+ - lib/kronos/storage/mongo_db.rb
248
265
  - lib/kronos/task.rb
249
266
  - lib/kronos/version.rb
250
267
  - lib/kronos/web.rb
@@ -265,9 +282,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
265
282
  version: '0'
266
283
  required_rubygems_version: !ruby/object:Gem::Requirement
267
284
  requirements:
268
- - - ">="
285
+ - - ">"
269
286
  - !ruby/object:Gem::Version
270
- version: '0'
287
+ version: 1.3.1
271
288
  requirements: []
272
289
  rubyforge_project:
273
290
  rubygems_version: 2.4.8