jetski 0.4.6 → 0.4.7

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
  SHA256:
3
- metadata.gz: 419176ab6c0bac6515d1f7f6136cd0ff800bad44fa34e41d882ef2bb6c59f46c
4
- data.tar.gz: a349cc717aab7101fea571ad0a12eeadc618a5136103ef388875b4ef2ca806f4
3
+ metadata.gz: 59cc948a27a477850ced800437233d2106f046a70eef581011efc407b29469ce
4
+ data.tar.gz: 52dee7630e6efac75428fc46a5e18b3c2374323d0d77dd793cb77f3554f994fd
5
5
  SHA512:
6
- metadata.gz: eb5520b371047a616aecdd8b341ee17a4b1a7ac4349164639ce8024f7a485b79a51c75035a703ccba0e036c957ad16bdf2f8a12d13eea2e9366f9473c9674bfa
7
- data.tar.gz: 39643ec6fe8aa41363df7d1c3e627cc7aeb3e62a3ed2cbf3ba8d3ff94f19ed149d9d7ba8e5dedea245a2ad91b25fdce4d0a0e5c25dac73d99c86c48d35372fd1
6
+ metadata.gz: 9f5780959202dac7113a038c9793863851147156fcda7d9ca0efa8b837afc8aaeb37f9f65a7ef266e4b3693dd2acfef48e1987f376e869d88640ec2fcad6c19e
7
+ data.tar.gz: 76ca2114bc78e15d8fdac21a9f39b137cbf66fa0f3faf45948a245ffdf92722712a9099d55a285cbf0b83f886540b8c02fcc35730a08b91d9e418b2afefd2812
@@ -6,6 +6,11 @@ module Jetski
6
6
  def call
7
7
  model_file_paths.each do |path_to_model|
8
8
  require_relative path_to_model
9
+ # Call method to define model attributes after loading
10
+ model_name = path_to_model.split("app/models/")[-1]
11
+ .gsub(".rb", "").capitalize
12
+ model_class = Object.const_get(model_name)
13
+ model_class.define_attribute_methods
9
14
  end
10
15
  end
11
16
 
data/lib/jetski/model.rb CHANGED
@@ -3,33 +3,21 @@ module Jetski
3
3
  extend Jetski::Database::Base
4
4
 
5
5
  def initialize(**args)
6
- @virtual_attributes = {}
7
-
8
- args.each do |k, v|
9
- @virtual_attributes[k] = v
10
- end
11
-
12
- @virtual_attributes["id"] ||= ""
13
- @virtual_attributes["created_at"] ||= ""
14
- @virtual_attributes["updated_at"] ||= ""
15
-
16
- @virtual_attributes.each do |k, v|
17
- self.class.class_eval do
18
- define_method(k) { v }
19
- end
20
- end
6
+ # TODO: Need to fix code
7
+ # Cannot redefine methods every time we initialize a new object.
8
+ # need to define available methods on post when loading model
9
+ @virtual_attributes = args
10
+ end
21
11
 
22
- self.class.class_eval do
23
- define_method(:inspect) do
24
- post_obj_id = object_id
25
- inspect_str = "#<Post:#{post_obj_id}"
26
- @virtual_attributes.each do |k, v|
27
- inspect_str += " #{k}=\"#{v}\""
28
- end
29
- inspect_str += ">"
30
- inspect_str
31
- end
12
+ def inspect
13
+ post_obj_id = object_id
14
+ inspect_str = "#<Post:#{post_obj_id}"
15
+ self.class.model_attributes.each do |attribute_name|
16
+ attribute_value = @virtual_attributes[attribute_name]
17
+ inspect_str += " #{attribute_name}=\"#{attribute_value}\""
32
18
  end
19
+ inspect_str += ">"
20
+ inspect_str
33
21
  end
34
22
 
35
23
  def destroy!
@@ -52,8 +40,10 @@ module Jetski
52
40
  key_names.append "created_at"
53
41
  data_values.append Time.now.to_s
54
42
 
43
+ current_post_count = (count || 0)
44
+ post_id = current_post_count + 1
55
45
  key_names.append "id"
56
- data_values.append(count + 1)
46
+ data_values.append(post_id)
57
47
 
58
48
  sql_command = <<~SQL
59
49
  INSERT INTO #{pluralized_table_name} (#{key_names.join(", ")})
@@ -70,6 +60,19 @@ module Jetski
70
60
  new(**post_attributes)
71
61
  end
72
62
 
63
+ # Careful methods / delete all records from table
64
+ def destroy_all!
65
+ db.execute("DELETE from #{pluralized_table_name}")
66
+ end
67
+
68
+ def define_attribute_methods
69
+ model_attributes.each do |attribute|
70
+ define_method attribute do
71
+ @virtual_attributes[attribute]
72
+ end
73
+ end
74
+ end
75
+
73
76
  def all
74
77
  columns, *rows = db.execute2( "select * from #{pluralized_table_name}" )
75
78
  _all = []
@@ -111,6 +114,10 @@ module Jetski
111
114
  table_name + "s"
112
115
  end
113
116
  end
117
+
118
+ def model_attributes
119
+ attributes.concat(["id", "created_at", "updated_at"])
120
+ end
114
121
 
115
122
  private
116
123
  def format_model_obj(row, columns = nil)
@@ -1,3 +1,3 @@
1
1
  module Jetski
2
- VERSION = "0.4.6"
2
+ VERSION = "0.4.7"
3
3
  end
@@ -33,7 +33,7 @@ module Jetski
33
33
  template = ERB.new(content)
34
34
  # Perserve instance variables to view render
35
35
  # @posts from controller to posts/index.html.erb
36
- # controller.class.class_eval problem is you still have render defined there
36
+
37
37
  grab_instance_variables
38
38
  template.result(binding)
39
39
  rescue => e
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jetski
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Indigo Tech Tutorials