Class: Microframe::ORM::Base
- Inherits:
-
Object
- Object
- Microframe::ORM::Base
show all
- Extended by:
- QueryUtils, Relationships
- Defined in:
- lib/microframe/orm/base.rb,
lib/microframe/orm/class_queries.rb
Constant Summary
collapse
- @@queryset =
{}
Class Method Summary
collapse
Instance Method Summary
collapse
belongs_to, has_many
Methods included from QueryUtils
add_query, build_query, execute, parse_result_to_objects, process_from, process_generic, process_limit, process_order, process_query, process_select, process_where, query_processes
Class Method Details
.all ⇒ Object
62
63
64
65
|
# File 'lib/microframe/orm/class_queries.rb', line 62
def all
add_query("SELECT", "*") unless @@queryset && @@queryset["SELECT"]
fetch_result
end
|
.count ⇒ Object
85
86
87
88
|
# File 'lib/microframe/orm/class_queries.rb', line 85
def count
result = all
result.size
end
|
.create(options = {}) ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/microframe/orm/class_queries.rb', line 50
def create(options={})
keys = options.keys.join(", ")
values = options.values
placeholders = Array.new(values.size, "?").join(", ")
Connection.connect.execute("INSERT INTO #{table_name} (#{keys}) VALUES (#{placeholders})", values)
self
end
|
.create_table ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/microframe/orm/class_queries.rb', line 26
def create_table
query = "CREATE TABLE IF NOT EXISTS #{table_name} (#{@@create_table_query.join(", ")})"
if Connection.execute(query)
@@create_table_query = nil
define_attributes
end
end
|
.define_attributes ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/microframe/orm/class_queries.rb', line 34
def define_attributes
Connection.retrieve_columns(table_name).each do |column|
define_method("#{column}=") do |val|
instance_var = "@#{column}"
instance_variable_set("@save_queryset", {}) unless @save_queryset
@save_queryset[column] = val unless column == "id"
instance_variable_set(instance_var, val)
end
define_method(column) do
instance_var = "@#{column}"
instance_variable_get(instance_var)
end
end
end
|
.destroy(id) ⇒ Object
110
111
112
|
# File 'lib/microframe/orm/class_queries.rb', line 110
def destroy(id)
destroy_all("WHERE id = #{id}")
end
|
.destroy_all(xtra = "; VACUUM") ⇒ Object
114
115
116
117
118
|
# File 'lib/microframe/orm/class_queries.rb', line 114
def destroy_all(xtra = "; VACUUM")
query = "DELETE FROM #{table_name} #{xtra}"
execute(query)
self
end
|
.fetch_result ⇒ Object
125
126
127
128
129
|
# File 'lib/microframe/orm/class_queries.rb', line 125
def fetch_result
result = process_query(@@queryset)
@@queryset = {}
parse_result_to_objects(result)
end
|
.find(id) ⇒ Object
67
68
69
|
# File 'lib/microframe/orm/class_queries.rb', line 67
def find(id)
find_by(id: id)
end
|
.find_by(options = {}) ⇒ Object
71
72
73
|
# File 'lib/microframe/orm/class_queries.rb', line 71
def find_by(options = {})
where(options)
end
|
.first ⇒ Object
90
91
92
93
|
# File 'lib/microframe/orm/class_queries.rb', line 90
def first
limit(1)
fetch_result
end
|
.inherited(base) ⇒ Object
13
14
15
16
|
# File 'lib/microframe/orm/class_queries.rb', line 13
def inherited(base)
base.include InstanceQueries
base.include QueryUtils
end
|
.last ⇒ Object
95
96
97
98
|
# File 'lib/microframe/orm/class_queries.rb', line 95
def last
limit(1).order("id DESC")
fetch_result
end
|
.limit(val) ⇒ Object
100
101
102
103
|
# File 'lib/microframe/orm/class_queries.rb', line 100
def limit(val)
@@queryset["LIMIT"] = val
self
end
|
.order(val) ⇒ Object
105
106
107
108
|
# File 'lib/microframe/orm/class_queries.rb', line 105
def order(val)
@@queryset["ORDER BY"] = val
self
end
|
.property(col_name, options = {}) ⇒ Object
18
19
20
21
22
23
24
|
# File 'lib/microframe/orm/class_queries.rb', line 18
def property(col_name, options = {})
@@create_table_query ||= []
options[:type] = options[:type].to_s.upcase
options[:nullable] = options[:nullable] ? "NULL" : "NOT NULL"
options[:primary_key] = options[:primary_key] ? "PRIMARY KEY AUTOINCREMENT" : ""
@@create_table_query << col_name.to_s + " " + options.values.join(" ")
end
|
.select(val) ⇒ Object
81
82
83
|
# File 'lib/microframe/orm/class_queries.rb', line 81
def select(val)
add_query("SELECT", val)
end
|
.table_name ⇒ Object
58
59
60
|
# File 'lib/microframe/orm/class_queries.rb', line 58
def table_name
self.to_s.downcase + "s"
end
|
.update_queryset(key, value) ⇒ Object
120
121
122
123
|
# File 'lib/microframe/orm/class_queries.rb', line 120
def update_queryset(key, value)
@@queryset ||= {}
@@queryset[key] = @@queryset[key] ? @@queryset[key] << value : [value]
end
|
.where(options = {}) ⇒ Object
75
76
77
78
79
|
# File 'lib/microframe/orm/class_queries.rb', line 75
def where(options = {})
sql = ""
options.each {|key, val| sql << "#{key.to_s} = '#{val}'"}
add_query("WHERE", sql)
end
|
Instance Method Details
#table_name ⇒ Object
13
14
15
|
# File 'lib/microframe/orm/base.rb', line 13
def table_name
self.class.table_name
end
|
#update_queryset(key, value) ⇒ Object
8
9
10
11
|
# File 'lib/microframe/orm/base.rb', line 8
def update_queryset(key, value)
@queryset ||= Hash.new(Array.new)
@queryset[key] = @queryset[key] << value
end
|