Class: Rollerskates::ModelHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/rollerskates/helpers/model_helper.rb

Direct Known Subclasses

BaseModel

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



84
85
86
# File 'lib/rollerskates/helpers/model_helper.rb', line 84

def method_missing(method, *args)
  @model.send(method, *args)
end

Class Attribute Details

.dbObject

Returns the value of attribute db.



5
6
7
# File 'lib/rollerskates/helpers/model_helper.rb', line 5

def db
  @db
end

.propertiesObject

Returns the value of attribute properties.



5
6
7
# File 'lib/rollerskates/helpers/model_helper.rb', line 5

def properties
  @properties
end

Class Method Details

.all_columnsObject



88
89
90
# File 'lib/rollerskates/helpers/model_helper.rb', line 88

def self.all_columns
  new.all_columns
end

.auto_increment(value) ⇒ Object



59
60
61
# File 'lib/rollerskates/helpers/model_helper.rb', line 59

def self.auto_increment(value)
  "AUTOINCREMENT " if value
end

.create_tableObject



24
25
26
27
28
29
30
# File 'lib/rollerskates/helpers/model_helper.rb', line 24

def self.create_table
  query = "CREATE TABLE IF NOT EXISTS #{table_name}\
          (#{properties.join(', ')})"
  database.execute(query)

  all_columns.each { |var| attr_accessor var }
end

.default(value) ⇒ Object



55
56
57
# File 'lib/rollerskates/helpers/model_helper.rb', line 55

def self.default(value)
  "DEFAULT `#{value}` "
end

.method_missing(method, *args) ⇒ Object



75
76
77
# File 'lib/rollerskates/helpers/model_helper.rb', line 75

def self.method_missing(method, *args)
  new.send(method, *args)
end

.nullable(value) ⇒ Object



50
51
52
53
# File 'lib/rollerskates/helpers/model_helper.rb', line 50

def self.nullable(value)
  return "NOT NULL " if value
  "NULL "
end

.parse_constraints(constraints) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/rollerskates/helpers/model_helper.rb', line 32

def self.parse_constraints(constraints)
  attributes = ""
  constraints.each do |attr, value|
    attributes += send(attr.to_s, value)
  end

  attributes
end

.primary_key(value) ⇒ Object



45
46
47
48
# File 'lib/rollerskates/helpers/model_helper.rb', line 45

def self.primary_key(value)
  return "PRIMARY KEY " if value
  " "
end

.property(field, options) ⇒ Object



20
21
22
# File 'lib/rollerskates/helpers/model_helper.rb', line 20

def self.property(field, options)
  new.add_property "#{field} #{parse_constraints(options)}"
end

.type(value) ⇒ Object



41
42
43
# File 'lib/rollerskates/helpers/model_helper.rb', line 41

def self.type(value)
  "#{value.to_s.upcase} "
end

Instance Method Details

#add_property(property) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/rollerskates/helpers/model_helper.rb', line 11

def add_property(property)
  self.class.properties ||= [
    "id integer PRIMARY KEY AUTOINCREMENT",
    "created_at datetime NOT NULL",
    "updated_at datetime NOT NULL"
  ]
  self.class.properties << property
end

#all_columnsObject



79
80
81
82
# File 'lib/rollerskates/helpers/model_helper.rb', line 79

def all_columns
  @all_columns ||= database.prepare "SELECT * FROM #{table_name}"
  @all_columns.columns.map(&:to_sym)
end

#databaseObject



7
8
9
# File 'lib/rollerskates/helpers/model_helper.rb', line 7

def database
  @db ||= SQLite3::Database.new File.join("db", "app.db")
end

#model_nameObject



71
72
73
# File 'lib/rollerskates/helpers/model_helper.rb', line 71

def model_name
  self.class
end

#table_nameObject



67
68
69
# File 'lib/rollerskates/helpers/model_helper.rb', line 67

def table_name
  self.class.to_s.downcase.pluralize
end

#update_queryObject



63
64
65
# File 'lib/rollerskates/helpers/model_helper.rb', line 63

def update_query
  "UPDATE #{table_name} SET #{placeholders_for_update} WHERE id = ?"
end