jetski 0.4.5 → 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: 6bf7b96b5cefdcbd3ebcad38e3abb18500e9ff367e888a4432604e0ff7aaad8d
4
- data.tar.gz: 6f482121c9a697c923c5a3a4d1a5b5fed822584190408db002d9e6668343372b
3
+ metadata.gz: 59cc948a27a477850ced800437233d2106f046a70eef581011efc407b29469ce
4
+ data.tar.gz: 52dee7630e6efac75428fc46a5e18b3c2374323d0d77dd793cb77f3554f994fd
5
5
  SHA512:
6
- metadata.gz: 89b0d3060b6161e742960048b92a9ed41b16787914c2bc34cb1e046bf44537f997381168df708e0188b590ca23352ba622c6ffca1443c27921b273df41e34c06
7
- data.tar.gz: 538160835a9a3e3a8768b1a2aa8c8e9664520ec8f3c403d0b98681535db57dc403ae0d1a6db57443d5c0054674e2bf25be42923bcfdd77de8cc990957579e2bd
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
 
@@ -1,6 +1,12 @@
1
1
  # This is the base controller of the library
2
2
  module Jetski
3
3
  class BaseController
4
+ RESERVED_INSTANCE_VARIABLES = [
5
+ :@res, :@performed_render, :@action_name,
6
+ :@controller_name, :@controller_path, :@cookies, :@root,
7
+ :@request_method, :@path
8
+ ]
9
+
4
10
  include ReactiveForm
5
11
  attr_accessor :action_name, :controller_name, :controller_path,
6
12
  :params, :cookies
@@ -1,8 +1,10 @@
1
1
  module Jetski
2
2
  module Helpers
3
3
  module ViewHelpers
4
- def render(path_to_file)
5
- File.join(Jetski.app_root, path_to_file)
4
+ # Expecting a relative path.
5
+ def render(partial_path)
6
+ path_to_file = File.join(Jetski.app_root, 'app/views', path_to_controller, "_#{partial_path}.html.erb")
7
+ File.read(path_to_file)
6
8
  end
7
9
  end
8
10
  end
data/lib/jetski/model.rb CHANGED
@@ -3,33 +3,30 @@ 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"] ||= ""
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
15
11
 
16
- @virtual_attributes.each do |k, v|
17
- self.class.class_eval do
18
- define_method(k) { v }
19
- 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}\""
20
18
  end
19
+ inspect_str += ">"
20
+ inspect_str
21
+ end
21
22
 
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
32
- end
23
+ def destroy!
24
+ # Destroy record: remove from db
25
+ delete_sql = <<~SQL
26
+ DELETE from #{self.class.pluralized_table_name} WHERE id=?
27
+ SQL
28
+ self.class.db.execute(delete_sql, id)
29
+ nil
33
30
  end
34
31
 
35
32
  class << self
@@ -43,8 +40,10 @@ module Jetski
43
40
  key_names.append "created_at"
44
41
  data_values.append Time.now.to_s
45
42
 
43
+ current_post_count = (count || 0)
44
+ post_id = current_post_count + 1
46
45
  key_names.append "id"
47
- data_values.append(count + 1)
46
+ data_values.append(post_id)
48
47
 
49
48
  sql_command = <<~SQL
50
49
  INSERT INTO #{pluralized_table_name} (#{key_names.join(", ")})
@@ -61,6 +60,19 @@ module Jetski
61
60
  new(**post_attributes)
62
61
  end
63
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
+
64
76
  def all
65
77
  columns, *rows = db.execute2( "select * from #{pluralized_table_name}" )
66
78
  _all = []
@@ -90,7 +102,7 @@ module Jetski
90
102
  def first
91
103
  format_model_obj(pluck_rows.first)
92
104
  end
93
- private
105
+
94
106
  def table_name
95
107
  self.to_s.downcase
96
108
  end
@@ -102,7 +114,12 @@ module Jetski
102
114
  table_name + "s"
103
115
  end
104
116
  end
117
+
118
+ def model_attributes
119
+ attributes.concat(["id", "created_at", "updated_at"])
120
+ end
105
121
 
122
+ private
106
123
  def format_model_obj(row, columns = nil)
107
124
  return unless row
108
125
  columns ||= attributes
@@ -1,3 +1,3 @@
1
1
  module Jetski
2
- VERSION = "0.4.5"
2
+ VERSION = "0.4.7"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  module Jetski
2
2
  class ViewRenderer
3
- extend Jetski::Helpers::Delegatable
4
3
  include Jetski::Helpers::ViewHelpers
4
+ extend Jetski::Helpers::Delegatable
5
5
 
6
6
  attr_reader :errors, :controller
7
7
  delegate :res, :action_name, :controller_path, to: :controller
@@ -33,14 +33,22 @@ 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.instance_eval do
37
- template.result(binding)
38
- end
36
+
37
+ grab_instance_variables
38
+ template.result(binding)
39
39
  rescue => e
40
40
  @errors << e
41
41
  nil
42
42
  end
43
43
 
44
+ def grab_instance_variables
45
+ variables_from_controller = controller.instance_variables.filter { |var| !Jetski::BaseController::RESERVED_INSTANCE_VARIABLES.include?(var) }
46
+ variables_from_controller.each do |inst_var|
47
+ value = controller.instance_variable_get(inst_var)
48
+ instance_variable_set(inst_var, value)
49
+ end
50
+ end
51
+
44
52
  def content_for_head
45
53
  _content_for_head = ''
46
54
 
data/lib/jetski.rb CHANGED
@@ -7,6 +7,7 @@ require "sqlite3"
7
7
 
8
8
  require_relative './jetski/version'
9
9
  require_relative './jetski/frontend/reactive_form'
10
+ require_relative './jetski/helpers/view_helpers'
10
11
  require_relative './jetski/base_controller'
11
12
  require_relative './jetski/router/shared_methods'
12
13
  require_relative './jetski/router/parser'
@@ -16,7 +17,6 @@ require_relative './jetski/server'
16
17
  require_relative './jetski/database/base'
17
18
  require_relative './jetski/model'
18
19
  require_relative './jetski/helpers/delegatable'
19
- require_relative './jetski/helpers/view_helpers'
20
20
  require_relative './jetski/view_renderer'
21
21
 
22
22
  module Jetski
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.5
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Indigo Tech Tutorials