Class: HField
Overview
FIELDS_TO_PGTYPES =
fields.boolean: 'bool',
fields.integer: 'int4',
fields.text: 'text',
fields.html: 'text',
fields.date: 'date',
fields.datetime: 'timestamp',
fields.binary: 'bytea',
fields.many2one: 'int4',
fields.serialized: 'text',
Class Method Summary
collapse
-
.autoComplete(modelName, fieldName, args = {}) ⇒ Object
-
.automatic(args = {}) ⇒ Object
-
.binary(args = {}) ⇒ Object
-
.boolean(args = {}) ⇒ Object
-
.char(args = {}) ⇒ Object
-
.date(args = {}) ⇒ Object
-
.dateTime(args = {}) ⇒ Object
-
.float(args = {}) ⇒ Object
-
.integer(args = {}) ⇒ Object
-
.magic(args = {}) ⇒ Object
-
.manyToMany(modelName, joinTable, referenceFieldName, referenceFieldName2, args = {}) ⇒ Object
-
.manyToOne(modelName, args = {}) ⇒ Object
-
.oneToMany(modelName, referenceFieldName, args = {}) ⇒ Object
-
.oneToOne(modelName, args = {}) ⇒ Object
-
.primaryKey(args = {}) ⇒ Object
-
.selection(args = {}) ⇒ Object
-
.text(args = {}) ⇒ Object
-
.virtual(functionName = nil, object = nil, args = {}, &block) ⇒ Object
Instance Method Summary
collapse
Methods inherited from Hash
#hprint, #intersect, #join, #symbolize_keys, #to_js_format
Constructor Details
#initialize(args) ⇒ HField
Returns a new instance of HField.
19
20
21
|
# File 'lib/hdb/hfield.rb', line 19
def initialize(args)
args.each { |key, value| self[key] = value }
end
|
Class Method Details
.autoComplete(modelName, fieldName, args = {}) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/hdb/hfield.rb', line 50
def self.autoComplete(modelName, fieldName, args = {})
return args if args[:type] != "automatic"
if fieldName =~ /^(\w+)_id$/
return self.manyToOne($1, args)
elsif fieldName =~ /^(\w+)_table$/
return self.oneToMany($1, "#{modelName}_id", args)
elsif fieldName =~ /^(\w+)_join$/
return self.manyToMany($1, "#{modelName}_#{fieldName}", "#{modelName}_id", "#{$1}_id", args)
elsif fieldName =~ /^(\w+)_virtual$/
return self.virtual($1, nil, args)
end
return HField.new(args)
end
|
.automatic(args = {}) ⇒ Object
68
69
70
71
|
# File 'lib/hdb/hfield.rb', line 68
def self.automatic(args = {})
args[:type] = "automatic"
return HField.new(args)
end
|
.binary(args = {}) ⇒ Object
112
113
114
115
116
|
# File 'lib/hdb/hfield.rb', line 112
def self.binary(args = {})
args[:type] = "binary"
args[:default] = '' unless args[:default]
return HField.new(args)
end
|
.boolean(args = {}) ⇒ Object
123
124
125
126
127
|
# File 'lib/hdb/hfield.rb', line 123
def self.boolean(args = {})
args[:type] = "boolean"
args[:default] = false unless args[:default]
return HField.new(args)
end
|
.char(args = {}) ⇒ Object
77
78
79
80
81
|
# File 'lib/hdb/hfield.rb', line 77
def self.char(args = {})
args[:type] = "char"
args[:default] = '' unless args[:default]
return HField.new(args)
end
|
.date(args = {}) ⇒ Object
101
102
103
104
105
|
# File 'lib/hdb/hfield.rb', line 101
def self.date(args = {})
args[:type] = "date"
args[:default] = '' unless args[:default]
return HField.new(args)
end
|
.dateTime(args = {}) ⇒ Object
107
108
109
110
|
# File 'lib/hdb/hfield.rb', line 107
def self.dateTime(args = {})
args[:type] = "datetime"
return HField.new(args)
end
|
.float(args = {}) ⇒ Object
95
96
97
98
99
|
# File 'lib/hdb/hfield.rb', line 95
def self.float(args = {})
args[:type] = "float"
args[:default] = 0 unless args[:default]
return HField.new(args)
end
|
.integer(args = {}) ⇒ Object
89
90
91
92
93
|
# File 'lib/hdb/hfield.rb', line 89
def self.integer(args = {})
args[:type] = "integer"
args[:default] = 0 unless args[:default]
return HField.new(args)
end
|
.magic(args = {}) ⇒ Object
73
74
75
|
# File 'lib/hdb/hfield.rb', line 73
def self.magic(args = {})
return self.automatic(args)
end
|
.manyToMany(modelName, joinTable, referenceFieldName, referenceFieldName2, args = {}) ⇒ Object
154
155
156
157
158
159
160
161
162
|
# File 'lib/hdb/hfield.rb', line 154
def self.manyToMany(modelName, joinTable, referenceFieldName, referenceFieldName2, args = {})
args[:modelNameReference] = modelName
args[:joinTable] = joinTable
args[:referenceFieldName] = referenceFieldName
args[:referenceFieldName2] = referenceFieldName2
args[:type] = "manyToMany"
return HField.new(args)
end
|
.manyToOne(modelName, args = {}) ⇒ Object
145
146
147
148
149
150
151
152
|
# File 'lib/hdb/hfield.rb', line 145
def self.manyToOne(modelName, args = {})
args[:modelNameReference] = modelName
args[:onDelete] = 'CASCADE'
args[:onUpdate] = 'CASCADE'
args[:type] = "manyToOne"
return HField.new(args)
end
|
.oneToMany(modelName, referenceFieldName, args = {}) ⇒ Object
138
139
140
141
142
143
|
# File 'lib/hdb/hfield.rb', line 138
def self.oneToMany(modelName, referenceFieldName, args = {})
args[:modelNameReference] = modelName
args[:referenceFieldName] = referenceFieldName
args[:type] = "oneToMany"
return HField.new(args)
end
|
.oneToOne(modelName, args = {}) ⇒ Object
129
130
131
132
133
134
135
136
|
# File 'lib/hdb/hfield.rb', line 129
def self.oneToOne(modelName, args = {})
args[:modelNameReference] = modelName
args[:onDelete] = 'CASCADE' args[:onUpdate] = 'CASCADE'
args[:type] = "oneToOne"
return HField.new(args)
end
|
.primaryKey(args = {}) ⇒ Object
172
173
174
175
176
177
|
# File 'lib/hdb/hfield.rb', line 172
def self.primaryKey(args = {})
args[:type] = 'integer'
args[:system] = true
args[:constraint] = 'SERIAL PRIMARY KEY'
return HField.new(args)
end
|
.selection(args = {}) ⇒ Object
118
119
120
121
|
# File 'lib/hdb/hfield.rb', line 118
def self.selection(args = {})
args[:type] = "selection"
return HField.new(args)
end
|
.text(args = {}) ⇒ Object
83
84
85
86
87
|
# File 'lib/hdb/hfield.rb', line 83
def self.text(args = {})
args[:type] = "text"
args[:default] = '' unless args[:default]
return HField.new(args)
end
|
.virtual(functionName = nil, object = nil, args = {}, &block) ⇒ Object
164
165
166
167
168
169
170
|
# File 'lib/hdb/hfield.rb', line 164
def self.virtual(functionName = nil, object = nil, args = {}, &block)
args[:object] = object
args[:functionName] = functionName
args[:type] = "virtual"
args[:block] = block
return HField.new(args)
end
|
Instance Method Details
#defaultValue ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/hdb/hfield.rb', line 23
def defaultValue()
case self[:type]
when "char"
return 'true'
when "text"
return ''
when "integer"
return 0
when "float"
return 0
when "date"
return ''
when "dateTime"
return ''
when "binary"
return ''
when "selection"
return ''
when "boolean"
return 'true'
else
return nil
end
end
|