Class: HField

Inherits:
Hash
  • Object
show all
Defined in:
lib/hdb/hfield.rb

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

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[:constraint] = 'NOT NULL'
  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[:constraint] = 'NOT NULL'
  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[:constraint] = 'NOT NULL'
  args[:onDelete] = 'CASCADE' # CASCADE or RESTRICT
  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

#defaultValueObject



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