baza_models 0.0.11 → 0.0.15

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 (44) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.rubocop.yml +134 -25
  4. data/.rubocop_todo.yml +47 -32
  5. data/.ruby-version +1 -0
  6. data/Gemfile +15 -13
  7. data/Gemfile.lock +126 -105
  8. data/Rakefile +5 -7
  9. data/VERSION +1 -1
  10. data/baza_models.gemspec +43 -55
  11. data/lib/baza_models/autoloader.rb +1 -0
  12. data/lib/baza_models/errors.rb +2 -3
  13. data/lib/baza_models/helpers/ransacker_helper.rb +2 -2
  14. data/lib/baza_models/model/belongs_to_relations.rb +1 -3
  15. data/lib/baza_models/model/has_many_relations.rb +2 -2
  16. data/lib/baza_models/model/has_one_relations.rb +2 -2
  17. data/lib/baza_models/model/manipulation.rb +20 -18
  18. data/lib/baza_models/model/queries.rb +2 -0
  19. data/lib/baza_models/model/scopes.rb +1 -0
  20. data/lib/baza_models/model/validations.rb +1 -0
  21. data/lib/baza_models/model.rb +24 -27
  22. data/lib/baza_models/query/inspector.rb +2 -0
  23. data/lib/baza_models/query/pagination.rb +5 -7
  24. data/lib/baza_models/query/sql_generator.rb +3 -3
  25. data/lib/baza_models/query.rb +16 -14
  26. data/lib/baza_models/ransacker/relationship_scanner.rb +4 -1
  27. data/lib/baza_models/ransacker.rb +3 -1
  28. data/lib/baza_models/validators/confirmation_validator.rb +1 -3
  29. data/lib/baza_models/validators/uniqueness_validator.rb +2 -4
  30. data/peak_flow.yml +4 -0
  31. data/spec/baza_models/autoloader_spec.rb +1 -1
  32. data/spec/baza_models/baza_orm_adapter_spec.rb +1 -1
  33. data/spec/baza_models/model/has_many_relations_spec.rb +1 -1
  34. data/spec/baza_models/model/manipulation_spec.rb +3 -3
  35. data/spec/baza_models/model_spec.rb +31 -4
  36. data/spec/baza_models/query_spec.rb +14 -6
  37. data/spec/factories/organization.rb +2 -2
  38. data/spec/factories/user.rb +2 -2
  39. data/spec/spec_helper.rb +3 -3
  40. data/spec/support/database_helper.rb +6 -3
  41. data/spec/test_classes/user.rb +2 -1
  42. metadata +70 -42
  43. data/shippable.yml +0 -11
  44. data/spec/baza_models_spec.rb +0 -4
data/Rakefile CHANGED
@@ -1,18 +1,16 @@
1
- # encoding: utf-8
2
-
3
1
  require "rubygems"
4
2
  require "bundler"
5
3
  begin
6
4
  Bundler.setup(:default, :development)
7
5
  rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
6
+ warn e.message
7
+ warn "Run `bundle install` to install missing gems"
10
8
  exit e.status_code
11
9
  end
12
10
  require "rake"
13
11
 
14
- require "jeweler"
15
- Jeweler::Tasks.new do |gem|
12
+ require "juwelier"
13
+ Juwelier::Tasks.new do |gem|
16
14
  # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
15
  gem.name = "baza_models"
18
16
  gem.homepage = "http://github.com/kaspernj/baza_models"
@@ -23,7 +21,7 @@ Jeweler::Tasks.new do |gem|
23
21
  gem.authors = ["kaspernj"]
24
22
  # dependencies defined in Gemfile
25
23
  end
26
- Jeweler::RubygemsDotOrgTasks.new
24
+ Juwelier::RubygemsDotOrgTasks.new
27
25
 
28
26
  require "rspec/core"
29
27
  require "rspec/core/rake_task"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.11
1
+ 0.0.15
data/baza_models.gemspec CHANGED
@@ -1,17 +1,17 @@
1
- # Generated by jeweler
1
+ # Generated by juwelier
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
3
+ # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: baza_models 0.0.11 ruby lib
5
+ # stub: baza_models 0.0.15 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "baza_models".freeze
9
- s.version = "0.0.11"
9
+ s.version = "0.0.15"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["kaspernj".freeze]
14
- s.date = "2018-01-09"
14
+ s.date = "2021-10-04"
15
15
  s.description = "ActiveRecord like models for the Baza database framework".freeze
16
16
  s.email = "k@spernj.org".freeze
17
17
  s.extra_rdoc_files = [
@@ -20,9 +20,11 @@ Gem::Specification.new do |s|
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
+ ".github/dependabot.yml",
23
24
  ".rspec",
24
25
  ".rubocop.yml",
25
26
  ".rubocop_todo.yml",
27
+ ".ruby-version",
26
28
  "Gemfile",
27
29
  "Gemfile.lock",
28
30
  "LICENSE.txt",
@@ -67,7 +69,7 @@ Gem::Specification.new do |s|
67
69
  "lib/baza_models/validators/length_validator.rb",
68
70
  "lib/baza_models/validators/presence_validator.rb",
69
71
  "lib/baza_models/validators/uniqueness_validator.rb",
70
- "shippable.yml",
72
+ "peak_flow.yml",
71
73
  "spec/baza_models/autoloader_spec.rb",
72
74
  "spec/baza_models/baza_orm_adapter_spec.rb",
73
75
  "spec/baza_models/class_translation_spec.rb",
@@ -91,7 +93,6 @@ Gem::Specification.new do |s|
91
93
  "spec/baza_models/validators/format_validator_spec.rb",
92
94
  "spec/baza_models/validators/length_validator_spec.rb",
93
95
  "spec/baza_models/validators/uniqueness_validator_spec.rb",
94
- "spec/baza_models_spec.rb",
95
96
  "spec/factories/organization.rb",
96
97
  "spec/factories/user.rb",
97
98
  "spec/spec_helper.rb",
@@ -104,63 +105,50 @@ Gem::Specification.new do |s|
104
105
  ]
105
106
  s.homepage = "http://github.com/kaspernj/baza_models".freeze
106
107
  s.licenses = ["MIT".freeze]
107
- s.rubygems_version = "2.6.13".freeze
108
+ s.rubygems_version = "3.1.6".freeze
108
109
  s.summary = "ActiveRecord like models for the Baza database framework".freeze
109
110
 
110
111
  if s.respond_to? :specification_version then
111
112
  s.specification_version = 4
113
+ end
112
114
 
113
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
114
- s.add_runtime_dependency(%q<array_enumerator>.freeze, [">= 0.0.10"])
115
- s.add_runtime_dependency(%q<auto_autoloader>.freeze, [">= 0.0.1"])
116
- s.add_runtime_dependency(%q<baza>.freeze, ["~> 0.0.21"])
117
- s.add_runtime_dependency(%q<html_gen>.freeze, [">= 0.0.12"])
118
- s.add_runtime_dependency(%q<simple_delegate>.freeze, [">= 0.0.2"])
119
- s.add_runtime_dependency(%q<string-cases>.freeze, [">= 0.0.3"])
120
- s.add_development_dependency(%q<best_practice_project>.freeze, [">= 0"])
121
- s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
122
- s.add_development_dependency(%q<factory_girl>.freeze, [">= 0"])
123
- s.add_development_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
124
- s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.6"])
125
- s.add_development_dependency(%q<orm_adapter>.freeze, [">= 0"])
126
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
127
- s.add_development_dependency(%q<rspec>.freeze, ["= 3.6.0"])
128
- s.add_development_dependency(%q<rubocop>.freeze, ["= 0.37.0"])
129
- s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
130
- else
131
- s.add_dependency(%q<array_enumerator>.freeze, [">= 0.0.10"])
132
- s.add_dependency(%q<auto_autoloader>.freeze, [">= 0.0.1"])
133
- s.add_dependency(%q<baza>.freeze, ["~> 0.0.21"])
134
- s.add_dependency(%q<html_gen>.freeze, [">= 0.0.12"])
135
- s.add_dependency(%q<simple_delegate>.freeze, [">= 0.0.2"])
136
- s.add_dependency(%q<string-cases>.freeze, [">= 0.0.3"])
137
- s.add_dependency(%q<best_practice_project>.freeze, [">= 0"])
138
- s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
139
- s.add_dependency(%q<factory_girl>.freeze, [">= 0"])
140
- s.add_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
141
- s.add_dependency(%q<jeweler>.freeze, ["= 2.3.6"])
142
- s.add_dependency(%q<orm_adapter>.freeze, [">= 0"])
143
- s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
144
- s.add_dependency(%q<rspec>.freeze, ["= 3.6.0"])
145
- s.add_dependency(%q<rubocop>.freeze, ["= 0.37.0"])
146
- s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
147
- end
115
+ if s.respond_to? :add_runtime_dependency then
116
+ s.add_runtime_dependency(%q<array_enumerator>.freeze, [">= 0"])
117
+ s.add_runtime_dependency(%q<auto_autoloader>.freeze, [">= 0"])
118
+ s.add_runtime_dependency(%q<baza>.freeze, [">= 0"])
119
+ s.add_runtime_dependency(%q<html_gen>.freeze, [">= 0"])
120
+ s.add_runtime_dependency(%q<simple_delegate>.freeze, [">= 0"])
121
+ s.add_runtime_dependency(%q<string-cases>.freeze, [">= 0"])
122
+ s.add_development_dependency(%q<best_practice_project>.freeze, [">= 0"])
123
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
124
+ s.add_development_dependency(%q<factory_bot>.freeze, [">= 0"])
125
+ s.add_development_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
126
+ s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
127
+ s.add_development_dependency(%q<orm_adapter>.freeze, [">= 0"])
128
+ s.add_development_dependency(%q<rdoc>.freeze, [">= 0"])
129
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
130
+ s.add_development_dependency(%q<rubocop>.freeze, [">= 0"])
131
+ s.add_development_dependency(%q<rubocop-performance>.freeze, [">= 0"])
132
+ s.add_development_dependency(%q<rubocop-rspec>.freeze, [">= 0"])
133
+ s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
148
134
  else
149
- s.add_dependency(%q<array_enumerator>.freeze, [">= 0.0.10"])
150
- s.add_dependency(%q<auto_autoloader>.freeze, [">= 0.0.1"])
151
- s.add_dependency(%q<baza>.freeze, ["~> 0.0.21"])
152
- s.add_dependency(%q<html_gen>.freeze, [">= 0.0.12"])
153
- s.add_dependency(%q<simple_delegate>.freeze, [">= 0.0.2"])
154
- s.add_dependency(%q<string-cases>.freeze, [">= 0.0.3"])
135
+ s.add_dependency(%q<array_enumerator>.freeze, [">= 0"])
136
+ s.add_dependency(%q<auto_autoloader>.freeze, [">= 0"])
137
+ s.add_dependency(%q<baza>.freeze, [">= 0"])
138
+ s.add_dependency(%q<html_gen>.freeze, [">= 0"])
139
+ s.add_dependency(%q<simple_delegate>.freeze, [">= 0"])
140
+ s.add_dependency(%q<string-cases>.freeze, [">= 0"])
155
141
  s.add_dependency(%q<best_practice_project>.freeze, [">= 0"])
156
- s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
157
- s.add_dependency(%q<factory_girl>.freeze, [">= 0"])
142
+ s.add_dependency(%q<bundler>.freeze, [">= 0"])
143
+ s.add_dependency(%q<factory_bot>.freeze, [">= 0"])
158
144
  s.add_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
159
- s.add_dependency(%q<jeweler>.freeze, ["= 2.3.6"])
145
+ s.add_dependency(%q<juwelier>.freeze, [">= 0"])
160
146
  s.add_dependency(%q<orm_adapter>.freeze, [">= 0"])
161
- s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
162
- s.add_dependency(%q<rspec>.freeze, ["= 3.6.0"])
163
- s.add_dependency(%q<rubocop>.freeze, ["= 0.37.0"])
147
+ s.add_dependency(%q<rdoc>.freeze, [">= 0"])
148
+ s.add_dependency(%q<rspec>.freeze, [">= 0"])
149
+ s.add_dependency(%q<rubocop>.freeze, [">= 0"])
150
+ s.add_dependency(%q<rubocop-performance>.freeze, [">= 0"])
151
+ s.add_dependency(%q<rubocop-rspec>.freeze, [">= 0"])
164
152
  s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
165
153
  end
166
154
  end
@@ -125,6 +125,7 @@ private
125
125
  orig_model = @models.detect { |array_model| array_model.id == orig_model_id }
126
126
 
127
127
  raise "Already autoloaded?" if orig_model.autoloads.key?(autoload_name)
128
+
128
129
  orig_model.autoloads[autoload_name] = model
129
130
 
130
131
  result.fetch(:models) << model
@@ -1,5 +1,6 @@
1
1
  class BazaModels::Errors
2
2
  class InvalidRecord < RuntimeError; end
3
+
3
4
  class RecordNotFound < RuntimeError; end
4
5
 
5
6
  def initialize
@@ -18,9 +19,7 @@ class BazaModels::Errors
18
19
  errors.each do |error|
19
20
  message = ""
20
21
 
21
- unless attribute_name == :base
22
- message << "#{StringCases.snake_to_camel(attribute_name)} "
23
- end
22
+ message << "#{StringCases.snake_to_camel(attribute_name)} " unless attribute_name == :base
24
23
 
25
24
  message << error
26
25
  messages << message
@@ -2,7 +2,7 @@ module BazaModels::Helpers::RansackerHelper
2
2
  def bm_paginate_content(collection)
3
3
  require "html_gen"
4
4
 
5
- new_params = params.dup
5
+ new_params = params.dup.permit!
6
6
  current_page = collection.page
7
7
  total_pages = collection.total_pages
8
8
 
@@ -53,7 +53,7 @@ module BazaModels::Helpers::RansackerHelper
53
53
  new_params[:q][:s] = sort_asc
54
54
  end
55
55
 
56
- href = url_for(new_params)
56
+ href = url_for(new_params.permit!)
57
57
 
58
58
  element = HtmlGen::Element.new(:a, str: label, attr: {href: href})
59
59
  element.html
@@ -25,9 +25,7 @@ module BazaModels::Model::BelongsToRelations
25
25
  @relationships[relation_name] = relation
26
26
 
27
27
  define_method(relation_name) do
28
- if (model = @changes[relation_name])
29
- model
30
- elsif (model = autoloads[relation_name])
28
+ if (model = @changes[relation_name]) || (model = autoloads[relation_name])
31
29
  model
32
30
  else
33
31
  if relation[:class_name]
@@ -4,9 +4,9 @@ module BazaModels::Model::HasManyRelations
4
4
  end
5
5
 
6
6
  module ClassMethods
7
- # rubocop:disable Style/PredicateName
7
+ # rubocop:disable Naming/PredicateName
8
8
  def has_many(relation_name, *all_args)
9
- # rubocop:enable Style/PredicateName
9
+ # rubocop:enable Naming/PredicateName
10
10
 
11
11
  args = all_args.pop
12
12
 
@@ -4,9 +4,9 @@ module BazaModels::Model::HasOneRelations
4
4
  end
5
5
 
6
6
  module ClassMethods
7
- # rubocop:disable Style/PredicateName
7
+ # rubocop:disable Naming/PredicateName
8
8
  def has_one(relation_name, *all_args)
9
- # rubocop:enable Style/PredicateName
9
+ # rubocop:enable Naming/PredicateName
10
10
 
11
11
  args = all_args.pop
12
12
 
@@ -30,9 +30,9 @@ module BazaModels::Model::Manipulation
30
30
  fire_callbacks(:after_save)
31
31
  fire_callbacks(:after_create) if new_record
32
32
 
33
- return true
33
+ true
34
34
  else
35
- return false
35
+ false
36
36
  end
37
37
  end
38
38
 
@@ -47,14 +47,12 @@ module BazaModels::Model::Manipulation
47
47
 
48
48
  @data[:id] = db.insert(table_name, @changes, return_id: true)
49
49
 
50
- if @autoloads
51
- @autoloads.each do |relation_name, collection|
52
- relation = self.class.relationships.fetch(relation_name)
50
+ @autoloads&.each do |relation_name, collection|
51
+ relation = self.class.relationships.fetch(relation_name)
53
52
 
54
- collection.each do |model|
55
- model.assign_attributes(relation.fetch(:foreign_key) => id)
56
- model.create! if model.new_record?
57
- end
53
+ collection.each do |model|
54
+ model.assign_attributes(relation.fetch(:foreign_key) => id)
55
+ model.create! if model.new_record?
58
56
  end
59
57
  end
60
58
 
@@ -63,7 +61,7 @@ module BazaModels::Model::Manipulation
63
61
 
64
62
  def create!
65
63
  if create
66
- return true
64
+ true
67
65
  else
68
66
  raise BazaModels::Errors::InvalidRecord, errors.full_messages.join(". ")
69
67
  end
@@ -71,25 +69,29 @@ module BazaModels::Model::Manipulation
71
69
 
72
70
  def save!(args = {})
73
71
  if save(args)
74
- return true
72
+ true
75
73
  else
76
74
  raise BazaModels::Errors::InvalidRecord, errors.full_messages.join(". ")
77
75
  end
78
76
  end
79
77
 
80
- def update_attributes(attributes)
78
+ def update(attributes)
81
79
  assign_attributes(attributes)
82
80
  save
83
81
  end
84
82
 
85
- def update_attributes!(attributes)
86
- update!(attributes)
87
- end
88
-
89
83
  def update!(attributes)
90
84
  raise BazaModels::Errors::InvalidRecord, @errors.full_messages.join(". ") unless update_attributes(attributes)
91
85
  end
92
86
 
87
+ def update_attributes(attributes)
88
+ update(attributes)
89
+ end
90
+
91
+ def update_attributes!(attributes)
92
+ update!(attributes)
93
+ end
94
+
93
95
  def assign_attributes(attributes)
94
96
  @changes.merge!(real_attributes(attributes))
95
97
  end
@@ -97,7 +99,7 @@ module BazaModels::Model::Manipulation
97
99
  def destroy
98
100
  if new_record?
99
101
  errors.add(:base, "cannot destroy new record")
100
- return false
102
+ false
101
103
  else
102
104
  fire_callbacks(:before_destroy)
103
105
 
@@ -108,7 +110,7 @@ module BazaModels::Model::Manipulation
108
110
 
109
111
  db.delete(table_name, id: id)
110
112
  fire_callbacks(:after_destroy)
111
- return true
113
+ true
112
114
  end
113
115
  end
114
116
 
@@ -7,6 +7,7 @@ module BazaModels::Model::Queries
7
7
  def find(id)
8
8
  row = db.select(table_name, {id: id}, limit: 1).fetch
9
9
  raise BazaModels::Errors::RecordNotFound, "Record not found by ID: #{id}" unless row
10
+
10
11
  new(row, init: true)
11
12
  end
12
13
 
@@ -23,6 +24,7 @@ module BazaModels::Model::Queries
23
24
  def find_or_initialize_by(data)
24
25
  model = find_by(data)
25
26
  return model if model
27
+
26
28
  new(data)
27
29
  end
28
30
 
@@ -9,6 +9,7 @@ module BazaModels::Model::Scopes
9
9
  name = name.to_sym
10
10
 
11
11
  raise "Such a scope already exists" if @scopes.key?(name)
12
+
12
13
  @scopes[name] = {blk: blk}
13
14
 
14
15
  (class << self; self; end).__send__(:define_method, name) do
@@ -22,6 +22,7 @@ module BazaModels::Model::Validations
22
22
 
23
23
  validators[attribute_name].each do |validator|
24
24
  next unless validator.fire?(self)
25
+
25
26
  validator.validate(self, attribute_value)
26
27
  end
27
28
  end
@@ -16,6 +16,7 @@ class BazaModels::Model
16
16
 
17
17
  attr_accessor :data, :db
18
18
  attr_reader :changes, :errors
19
+ attr_writer :db, :table_name
19
20
 
20
21
  # Define all callback methods.
21
22
  CALLBACK_TYPES = [
@@ -45,7 +46,7 @@ class BazaModels::Model
45
46
 
46
47
  QUERY_METHODS = [
47
48
  :average, :all, :any?, :destroy_all, :each, :empty?, :ids, :maximum, :minimum, :none?, :count, :find, :first, :find_first, :last,
48
- :length, :size, :select, :includes, :joins, :group, :where, :order, :pluck, :preloads, :sum, :limit, :to_a, :accessible_by, :ransack
49
+ :length, :size, :select, :includes, :joins, :group, :where, :order, :pluck, :preloads, :sum, :limit, :accessible_by, :ransack
49
50
  ].freeze
50
51
  QUERY_METHODS.each do |query_method|
51
52
  (class << self; self; end).__send__(:define_method, query_method) do |*args, &blk|
@@ -75,9 +76,7 @@ class BazaModels::Model
75
76
  end
76
77
  end
77
78
 
78
- # rubocop:disable Style/TrivialAccessors
79
79
  def new_record?
80
- # rubocop:enable Style/TrivialAccessors
81
80
  @new_record
82
81
  end
83
82
 
@@ -87,21 +86,23 @@ class BazaModels::Model
87
86
 
88
87
  def db
89
88
  return @db if @db
89
+
90
90
  @db ||= self.class.db
91
91
  end
92
92
 
93
- attr_writer :db
94
-
95
93
  def self.attribute_names
96
94
  init_model
97
95
  @table.columns.map(&:name).map(&:clone)
98
96
  end
99
97
 
100
98
  def self.db
101
- @db = nil if @db && @db.closed?
99
+ @db = nil if
100
+ @db&.closed?
102
101
  return @db if @db
102
+
103
103
  @db ||= BazaModels.primary_db
104
104
  raise "No Baza database has been configured" unless @db
105
+
105
106
  @db
106
107
  end
107
108
 
@@ -144,8 +145,6 @@ class BazaModels::Model
144
145
  attr_writer :db, :table_name
145
146
  end
146
147
 
147
- attr_writer :table_name
148
-
149
148
  def autoloads
150
149
  @autoloads ||= {}
151
150
  @autoloads
@@ -187,7 +186,7 @@ class BazaModels::Model
187
186
  end
188
187
 
189
188
  def to_param
190
- id.to_s if id
189
+ id&.to_s
191
190
  end
192
191
 
193
192
  def to_key
@@ -201,6 +200,7 @@ class BazaModels::Model
201
200
  def reload
202
201
  @data = db.single(table_name, {id: id}, limit: 1)
203
202
  raise BazaModels::Errors::RecordNotFound unless @data
203
+
204
204
  @changes = {}
205
205
  self
206
206
  end
@@ -233,15 +233,15 @@ class BazaModels::Model
233
233
  return false unless self.class == other.class
234
234
 
235
235
  if new_record? && other.new_record?
236
- return merged_data == other.__send__(:merged_data)
236
+ merged_data == other.__send__(:merged_data)
237
237
  else
238
- return id == other.id
238
+ id == other.id
239
239
  end
240
240
  end
241
241
 
242
- # rubocop:disable Style/PredicateName
242
+ # rubocop:disable Naming/PredicateName
243
243
  def has_attribute?(name)
244
- # rubocop:enable Style/PredicateName
244
+ # rubocop:enable Naming/PredicateName
245
245
  self.class.column_names.include?(name.to_s)
246
246
  end
247
247
 
@@ -260,6 +260,7 @@ class BazaModels::Model
260
260
 
261
261
  def read_attribute(attribute_name)
262
262
  return @changes.fetch(attribute_name) if @changes.key?(attribute_name)
263
+
263
264
  @data.fetch(attribute_name)
264
265
  end
265
266
 
@@ -271,6 +272,7 @@ class BazaModels::Model
271
272
  changed = false
272
273
  @changes.each do |key, value|
273
274
  next if @data.fetch(key) == value
275
+
274
276
  changed = true
275
277
  break
276
278
  end
@@ -283,10 +285,7 @@ protected
283
285
  class << self
284
286
  attr_reader :__blank_attributes
285
287
  end
286
-
287
- # rubocop:disable Style/TrivialAccessors
288
288
  def self.model_initialized?
289
- # rubocop:enable Style/TrivialAccessors
290
289
  @model_initialized
291
290
  end
292
291
 
@@ -310,11 +309,7 @@ protected
310
309
  end
311
310
 
312
311
  define_method("#{column_name}_changed?") do
313
- if @changes.key?(column_name) && @changes.fetch(column_name) != @data.fetch(column_name)
314
- true
315
- else
316
- false
317
- end
312
+ @changes.key?(column_name) && @changes.fetch(column_name) != @data.fetch(column_name)
318
313
  end
319
314
 
320
315
  define_method("will_save_change_to_#{column_name}?") do
@@ -359,12 +354,11 @@ protected
359
354
  attributes.each do |attribute_name, attribute_value|
360
355
  belongs_to_relations = self.class.instance_variable_get(:@belongs_to_relations)
361
356
 
362
- if belongs_to_relations
363
- belongs_to_relations.each do |relation|
364
- if attribute_name.to_s == relation[:relation_name].to_s
365
- attribute_name = :"#{attribute_name}_id"
366
- attribute_value = attribute_value.id if attribute_value
367
- end
357
+
358
+ belongs_to_relations&.each do |relation|
359
+ if attribute_name.to_s == relation[:relation_name].to_s
360
+ attribute_name = :"#{attribute_name}_id"
361
+ attribute_value = attribute_value.id if attribute_value
368
362
  end
369
363
  end
370
364
 
@@ -385,16 +379,19 @@ protected
385
379
 
386
380
  def attribute_before_last_save(attribute_name)
387
381
  return @before_last_save.fetch(attribute_name) if @before_last_save.key?(attribute_name)
382
+
388
383
  @data.fetch(attribute_name)
389
384
  end
390
385
 
391
386
  def will_save_change_to_attribute?(attribute_name)
392
387
  return true if @changes.key?(attribute_name) && @changes[attribute_name] != data[attribute_name]
388
+
393
389
  false
394
390
  end
395
391
 
396
392
  def method_missing(method_name, *args, &blk)
397
393
  return @data.fetch(method_name) if @data.key?(method_name)
394
+
398
395
  super
399
396
  end
400
397
  end
@@ -36,6 +36,7 @@ private
36
36
 
37
37
  relationship_pair = @model.relationships.detect { |key, _value| key == argument }
38
38
  raise "Could not find a relationship on #{@model.name} by that name: #{argument}" unless relationship_pair
39
+
39
40
  relationship = relationship_pair[1]
40
41
 
41
42
  table_name = relationship.fetch(:table_name)
@@ -60,6 +61,7 @@ private
60
61
 
61
62
  relationship_pair = @model.relationships.detect { |relationship_name, _relationship| relationship_name == key }
62
63
  raise "Could not find a relationship on #{@model.name} by that name: #{value}" unless relationship_pair
64
+
63
65
  relationship = relationship_pair[1]
64
66
 
65
67
  BazaModels::Query::Inspector.new(
@@ -1,10 +1,8 @@
1
1
  module BazaModels::Query::Pagination
2
2
  def current_page
3
- if @page
4
- @page
5
- else
6
- raise "Page has not been set"
7
- end
3
+ raise "Page has not been set" unless @page
4
+
5
+ @page
8
6
  end
9
7
 
10
8
  def out_of_bounds?
@@ -44,11 +42,11 @@ module BazaModels::Query::Pagination
44
42
  end
45
43
 
46
44
  def total_pages
47
- pages_count = (count.to_f / per.to_f)
45
+ pages_count = (count.to_f / per)
48
46
 
49
47
  pages_count = 1 if pages_count.nan? || pages_count == Float::INFINITY
50
48
  pages_count = pages_count.ceil
51
- pages_count = 1 if pages_count == 0
49
+ pages_count = 1 if pages_count.zero?
52
50
  pages_count
53
51
  end
54
52
  end
@@ -9,7 +9,7 @@ class BazaModels::Query::SqlGenerator
9
9
  end
10
10
  end
11
11
 
12
- def to_sql
12
+ def to_sql # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity
13
13
  sql = "SELECT "
14
14
 
15
15
  if @selects.empty?
@@ -68,9 +68,9 @@ class BazaModels::Query::SqlGenerator
68
68
  end
69
69
 
70
70
  if @reverse_order
71
- if order =~ /\s+desc/i
71
+ if /\s+desc/i.match?(order)
72
72
  order = order.gsub(/\s+desc/i, " ASC")
73
- elsif order =~ /\s+asc/i
73
+ elsif /\s+asc/i.match?(order)
74
74
  order = order.gsub(/\s+asc/i, " DESC")
75
75
  else
76
76
  order = "#{order} DESC"