legion-data-java 1.1.2

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.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +171 -0
  3. data/.gitignore +12 -0
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +33 -0
  6. data/CHANGELOG.md +16 -0
  7. data/Gemfile +4 -0
  8. data/Gemfile.lock +99 -0
  9. data/README.md +37 -0
  10. data/Rakefile +55 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/bitbucket-pipelines.yml +26 -0
  14. data/legion-data.gemspec +50 -0
  15. data/lib/legion/data.rb +60 -0
  16. data/lib/legion/data/connection.rb +61 -0
  17. data/lib/legion/data/migration.rb +15 -0
  18. data/lib/legion/data/migrations/001_add_schema_columns.rb +17 -0
  19. data/lib/legion/data/migrations/002_add_users.rb +17 -0
  20. data/lib/legion/data/migrations/003_add_groups.rb +16 -0
  21. data/lib/legion/data/migrations/004_add_chains.rb +25 -0
  22. data/lib/legion/data/migrations/005_add_envs.rb +24 -0
  23. data/lib/legion/data/migrations/006_add_dcs.rb +24 -0
  24. data/lib/legion/data/migrations/007_add_nodes.rb +26 -0
  25. data/lib/legion/data/migrations/008_add_settings.rb +18 -0
  26. data/lib/legion/data/migrations/009_add_extensions.rb +25 -0
  27. data/lib/legion/data/migrations/010_add_runners.rb +21 -0
  28. data/lib/legion/data/migrations/011_add_functions.rb +29 -0
  29. data/lib/legion/data/migrations/012_add_tasks.rb +28 -0
  30. data/lib/legion/data/migrations/013_add_task_logs.rb +23 -0
  31. data/lib/legion/data/migrations/014_add_relationships.rb +27 -0
  32. data/lib/legion/data/migrations/015_add_default_extensions.rb +24 -0
  33. data/lib/legion/data/migrations/016_change_task_args.rb +7 -0
  34. data/lib/legion/data/migrations/017_add_payload_task.rb +7 -0
  35. data/lib/legion/data/model.rb +36 -0
  36. data/lib/legion/data/models/chain.rb +11 -0
  37. data/lib/legion/data/models/datacenter.rb +11 -0
  38. data/lib/legion/data/models/environment.rb +11 -0
  39. data/lib/legion/data/models/extension.rb +11 -0
  40. data/lib/legion/data/models/function.rb +15 -0
  41. data/lib/legion/data/models/group.rb +10 -0
  42. data/lib/legion/data/models/node.rb +13 -0
  43. data/lib/legion/data/models/relationship.rb +16 -0
  44. data/lib/legion/data/models/runner.rb +15 -0
  45. data/lib/legion/data/models/setting.rb +10 -0
  46. data/lib/legion/data/models/task.rb +16 -0
  47. data/lib/legion/data/models/task_log.rb +12 -0
  48. data/lib/legion/data/models/user.rb +10 -0
  49. data/lib/legion/data/settings.rb +68 -0
  50. data/lib/legion/data/version.rb +5 -0
  51. data/sonar-project.properties +12 -0
  52. metadata +295 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: eb498f6be55c266c124ead24ef7c4887b1b1c6c0293013c49ab2b80e981814d1
4
+ data.tar.gz: ed537f3fdead5e90940387d685a60fa848a028f4cb46a47dd3340dd4804cca89
5
+ SHA512:
6
+ metadata.gz: f5551d4474fbbd02c116d6698b97152236a2bb00e681a85f5f29f471c3dc754df777377d77294b398085474439cd005faf7bcc0dfe96cd22cd6b7e61d8b55c95
7
+ data.tar.gz: 357f03cf9bfa1ad7d47ef5e33989ff11fb605a54c50983707dde4651dc03e544c393f6ff0362a1bd81f7bd0fab83a4c7041c59340bd166a34b659f7bb7d20dea
@@ -0,0 +1,171 @@
1
+ version: 2.1
2
+ orbs:
3
+ ruby: circleci/ruby@0.2.1
4
+ sonarcloud: sonarsource/sonarcloud@1.0.1
5
+
6
+ jobs:
7
+ "rubocop":
8
+ docker:
9
+ - image: circleci/ruby:2.7-node
10
+ steps:
11
+ - checkout
12
+ - ruby/load-cache
13
+ - ruby/install-deps
14
+ - run:
15
+ name: Run Rubocop
16
+ command: bundle exec rubocop
17
+ - ruby/save-cache
18
+ "ruby-two-five":
19
+ docker:
20
+ - image: circleci/ruby:2.5
21
+ - image: circleci/mysql:5.7
22
+ environment:
23
+ MYSQL_DATABASE: 'legion'
24
+ MYSQL_ROOT_PASSWORD: 'legion'
25
+ MYSQL_USER: 'legion'
26
+ MYSQL_PASSWORD: 'legion'
27
+ steps:
28
+ - checkout
29
+ - ruby/load-cache
30
+ - run:
31
+ name: update bundler
32
+ command: gem update bundler
33
+ - ruby/install-deps
34
+ - run:
35
+ name: update max connections
36
+ command: 'sudo apt-get install default-mysql-client && mysql -h 127.0.0.1 -u root --password=legion --execute="set global max_connections = 100000;"'
37
+ - ruby/run-tests
38
+ - ruby/save-cache
39
+ "ruby-two-six":
40
+ docker:
41
+ - image: circleci/ruby:2.6
42
+ - image: circleci/mysql:5.7
43
+ environment:
44
+ MYSQL_DATABASE: 'legion'
45
+ MYSQL_ROOT_PASSWORD: 'legion'
46
+ MYSQL_USER: 'legion'
47
+ MYSQL_PASSWORD: 'legion'
48
+ steps:
49
+ - checkout
50
+ - ruby/load-cache
51
+ - run:
52
+ name: update bundler
53
+ command: gem update bundler
54
+ - ruby/install-deps
55
+ - run:
56
+ name: update max connections
57
+ command: 'sudo apt-get install default-mysql-client && mysql -h 127.0.0.1 -u root --password=legion --execute="set global max_connections = 100000;"'
58
+ - ruby/run-tests
59
+ - ruby/save-cache
60
+ "ruby-two-seven":
61
+ docker:
62
+ - image: circleci/ruby:2.7
63
+ - image: circleci/mysql:5.7
64
+ environment:
65
+ MYSQL_DATABASE: 'legion'
66
+ MYSQL_ROOT_PASSWORD: 'legion'
67
+ MYSQL_USER: 'legion'
68
+ MYSQL_PASSWORD: 'legion'
69
+ steps:
70
+ - checkout
71
+ - ruby/load-cache
72
+ - ruby/install-deps
73
+ - run:
74
+ name: update max connections
75
+ command: 'sudo apt-get install default-mysql-client && mysql -h 127.0.0.1 -u root --password=legion --execute="set global max_connections = 100000;"'
76
+ - ruby/run-tests
77
+ - ruby/save-cache
78
+ "jruby-nine-two":
79
+ docker:
80
+ - image: circleci/jruby:9.2-jre
81
+ - image: circleci/mysql:5.7
82
+ environment:
83
+ MYSQL_DATABASE: 'legion'
84
+ MYSQL_ROOT_PASSWORD: 'legion'
85
+ MYSQL_USER: 'legion'
86
+ MYSQL_PASSWORD: 'legion'
87
+ steps:
88
+ - checkout
89
+ - run:
90
+ name: Bundle Install
91
+ command: bundle install
92
+ - run:
93
+ name: update max connections
94
+ command: 'sudo apt-get install default-mysql-client && mysql -h 127.0.0.1 -u root --password=legion --execute="set global max_connections = 100000;"'
95
+ - run:
96
+ name: Run RSpec
97
+ command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
98
+ when: always
99
+ - sonarcloud/scan
100
+ "jruby-nine-two-e":
101
+ docker:
102
+ - image: circleci/jruby:9.2.11-jre
103
+ - image: circleci/mysql:5.7
104
+ environment:
105
+ MYSQL_DATABASE: 'legion'
106
+ MYSQL_ROOT_PASSWORD: 'legion'
107
+ MYSQL_USER: 'legion'
108
+ MYSQL_PASSWORD: 'legion'
109
+ steps:
110
+ - checkout
111
+ - run:
112
+ name: Bundle Install
113
+ command: bundle install
114
+ - run:
115
+ name: update max connections
116
+ command: 'sudo apt-get install default-mysql-client && mysql -h 127.0.0.1 -u root --password=legion --execute="set global max_connections = 100000;"'
117
+ - run:
118
+ name: Run RSpec
119
+ command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
120
+ when: always
121
+ "sonarcloud":
122
+ docker:
123
+ - image: circleci/ruby:2.7
124
+ - image: circleci/mysql:5.7
125
+ environment:
126
+ MYSQL_DATABASE: 'legion'
127
+ MYSQL_ROOT_PASSWORD: 'legion'
128
+ MYSQL_USER: 'legion'
129
+ MYSQL_PASSWORD: 'legion'
130
+ steps:
131
+ - checkout
132
+ - ruby/load-cache
133
+ - run:
134
+ name: update bundler
135
+ command: gem update bundler
136
+ - ruby/install-deps
137
+ - run:
138
+ name: update max connections
139
+ command: 'sudo apt-get install default-mysql-client && mysql -h 127.0.0.1 -u root --password=legion --execute="set global max_connections = 100000;"'
140
+ - ruby/run-tests
141
+ - run:
142
+ name: Run Rubocop
143
+ command: bundle exec rubocop --format=json --out=rubocop-result.json
144
+ - sonarcloud/scan
145
+ - ruby/save-cache
146
+
147
+ workflows:
148
+ version: 2
149
+ rubocop-rspec:
150
+ jobs:
151
+ - rubocop
152
+ - ruby-two-five:
153
+ requires:
154
+ - rubocop
155
+ - ruby-two-six:
156
+ requires:
157
+ - ruby-two-five
158
+ - ruby-two-seven:
159
+ requires:
160
+ - ruby-two-five
161
+ - sonarcloud:
162
+ requires:
163
+ - ruby-two-seven
164
+ - ruby-two-six
165
+ - jruby-nine-two:
166
+ requires:
167
+ - ruby-two-seven
168
+ - ruby-two-six
169
+ - jruby-nine-two-e:
170
+ requires:
171
+ - jruby-nine-two
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ /*.log
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,33 @@
1
+ require:
2
+ - rubocop-sequel
3
+ - rubocop-md
4
+ - rubocop-performance
5
+
6
+ Layout/LineLength:
7
+ Max: 120
8
+ Exclude:
9
+ - 'lib/legion/data/migrations/*.rb'
10
+ Metrics/MethodLength:
11
+ Max: 30
12
+ Metrics/ClassLength:
13
+ Max: 1500
14
+ Metrics/AbcSize:
15
+ Max: 34
16
+ Metrics/BlockLength:
17
+ Max: 50
18
+ Exclude:
19
+ - 'lib/legion/data/migrations/*'
20
+ Layout/SpaceAroundEqualsInParameterDefault:
21
+ EnforcedStyle: space
22
+ Style/SymbolArray:
23
+ Enabled: true
24
+ Layout/HashAlignment:
25
+ EnforcedHashRocketStyle: table
26
+ EnforcedColonStyle: table
27
+ Style/Documentation:
28
+ Enabled: false
29
+ AllCops:
30
+ TargetRubyVersion: 2.5
31
+ NewCops: enable
32
+ Style/FrozenStringLiteralComment:
33
+ Enabled: false
@@ -0,0 +1,16 @@
1
+ # Legion::Data Changelog
2
+ ## v1.1.2
3
+ * Updating connection details to support JDBC
4
+ * Changing default max connections to 10
5
+ * Fixing issue with Legion::Cache always throwing an error
6
+
7
+ ## v0.2.0
8
+ * Redesigning schema
9
+
10
+ ## v0.1.1
11
+ * Updated `rubocop.yml` with updated syntax
12
+ * Changing default connection count to 100 from 10
13
+ * Updating some exception handling to meet rubocop requirements
14
+ * Updating gemspec to have more things
15
+ * Fixing logic in debug_logging
16
+ * Adding RSpec tests for debug_logging
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in legion-data.gemspec
4
+ gemspec
@@ -0,0 +1,99 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ legion-data-java (1.1.2)
5
+ jdbc-mysql
6
+ legion-logging
7
+ legion-settings
8
+ sequel
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ ast (2.4.1)
14
+ codecov (0.2.8)
15
+ json
16
+ simplecov
17
+ diff-lcs (1.4.4)
18
+ docile (1.3.2)
19
+ jdbc-mysql (8.0.17)
20
+ json (2.3.1)
21
+ json (2.3.1-java)
22
+ json_pure (2.3.1)
23
+ legion-json (1.1.2)
24
+ json_pure
25
+ multi_json
26
+ legion-logging (1.1.1)
27
+ rainbow (~> 3)
28
+ legion-settings (1.1.1)
29
+ legion-json
30
+ legion-logging
31
+ multi_json (1.15.0)
32
+ parallel (1.19.2)
33
+ parser (2.7.1.4)
34
+ ast (~> 2.4.1)
35
+ rainbow (3.0.0)
36
+ rake (13.0.1)
37
+ regexp_parser (1.7.1)
38
+ rexml (3.2.4)
39
+ rspec (3.9.0)
40
+ rspec-core (~> 3.9.0)
41
+ rspec-expectations (~> 3.9.0)
42
+ rspec-mocks (~> 3.9.0)
43
+ rspec-core (3.9.2)
44
+ rspec-support (~> 3.9.3)
45
+ rspec-expectations (3.9.2)
46
+ diff-lcs (>= 1.2.0, < 2.0)
47
+ rspec-support (~> 3.9.0)
48
+ rspec-mocks (3.9.1)
49
+ diff-lcs (>= 1.2.0, < 2.0)
50
+ rspec-support (~> 3.9.0)
51
+ rspec-support (3.9.3)
52
+ rspec_junit_formatter (0.4.1)
53
+ rspec-core (>= 2, < 4, != 2.12.0)
54
+ rubocop (0.89.1)
55
+ parallel (~> 1.10)
56
+ parser (>= 2.7.1.1)
57
+ rainbow (>= 2.2.2, < 4.0)
58
+ regexp_parser (>= 1.7)
59
+ rexml
60
+ rubocop-ast (>= 0.3.0, < 1.0)
61
+ ruby-progressbar (~> 1.7)
62
+ unicode-display_width (>= 1.4.0, < 2.0)
63
+ rubocop-ast (0.3.0)
64
+ parser (>= 2.7.1.4)
65
+ rubocop-md (0.4.0)
66
+ rubocop (~> 0.60)
67
+ rubocop-performance (1.7.1)
68
+ rubocop (>= 0.82.0)
69
+ rubocop-rspec (1.43.2)
70
+ rubocop (~> 0.87)
71
+ rubocop-sequel (0.0.6)
72
+ rubocop (~> 0.55, >= 0.55)
73
+ ruby-progressbar (1.10.1)
74
+ sequel (5.35.0)
75
+ simplecov (0.19.0)
76
+ docile (~> 1.1)
77
+ simplecov-html (~> 0.11)
78
+ simplecov-html (0.12.2)
79
+ unicode-display_width (1.7.0)
80
+
81
+ PLATFORMS
82
+ java
83
+ ruby
84
+
85
+ DEPENDENCIES
86
+ bundler
87
+ codecov
88
+ legion-data-java!
89
+ rake
90
+ rspec
91
+ rspec_junit_formatter
92
+ rubocop
93
+ rubocop-md
94
+ rubocop-performance
95
+ rubocop-rspec
96
+ rubocop-sequel
97
+
98
+ BUNDLED WITH
99
+ 2.1.4
@@ -0,0 +1,37 @@
1
+ # Legion::Data
2
+
3
+ Legion::Data is used by the framework to connect to a database. All database changes should be
4
+ added as a migration with proper up/downs.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'legion-data'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install legion-data
21
+
22
+ ## Usage
23
+
24
+ You can create a new connection to the database with the following example
25
+ ``` Legion::Data::Connection.new.database.connection ```
26
+ Keep in mind that if you need access to the database as part of a LEX, you should instead add it as a
27
+ requirement inside your definitions with the following
28
+ ```
29
+ def requirements
30
+ %w[legion-transport legion-data]
31
+ end
32
+ ```
33
+ and the framework will take care of the rest.
34
+
35
+ ## Contributing
36
+
37
+ Bug reports and pull requests are welcome on GitHub at https://bitbucket.org/legion-io/legion-data.
@@ -0,0 +1,55 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'rubocop/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task default: :spec
8
+
9
+ task :dev do
10
+ end
11
+
12
+ RuboCop::RakeTask.new(:rubocop) do |t|
13
+ t.options = ['--display-cop-names']
14
+ end
15
+
16
+ RuboCop::RakeTask.new(:rubocop_fix) do |t|
17
+ # t.options = ['--display-cop-names -a']
18
+ t.options = ['--display-cop-names']
19
+ end
20
+
21
+ namespace :db do
22
+ require 'sequel'
23
+ require 'legion/logging'
24
+ Sequel.extension :migration
25
+
26
+ # desc 'Prints current schema version'
27
+ # task :version do
28
+ # version = DB[:schema_info].first[:version] # if DB.tables.include?(:schema_info) || true
29
+ #
30
+ # puts "Schema Version: #{version}"
31
+ # end
32
+ #
33
+ # desc 'Perform migration up to latest migration available'
34
+ # task :migrate do
35
+ # Sequel::Migrator.run(DB, 'lib/legion/data/migrations')
36
+ # Rake::Task['db:version'].execute
37
+ # end
38
+ #
39
+ # desc 'Perform rollback to specified target or full rollback as default'
40
+ # task :rollback, :target do |_t, args|
41
+ # args.with_defaults(target: 0)
42
+ #
43
+ # Sequel::Migrator.run(DB, 'lib/legion/data/migrations', target: args[:target].to_i)
44
+ # Rake::Task['db:version'].execute
45
+ # end
46
+ #
47
+ # desc 'Perform migration reset (full rollback and migration)'
48
+ # task :reset do
49
+ # Sequel::Migrator.run(DB, 'migrations', target: 0)
50
+ # Sequel::Migrator.run(DB, 'migrations')
51
+ # Rake::Task['db:version'].execute
52
+ # end
53
+ end
54
+
55
+ # RuboCop::RakeTask.new