lore 0.4.2
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.
- data/LICENSE +19 -0
- data/README +74 -0
- data/aspect.rb +80 -0
- data/behaviours/lockable.rb +41 -0
- data/behaviours/movable.rb +54 -0
- data/behaviours/versioned.rb +24 -0
- data/benchmark.rb +193 -0
- data/bits.rb +52 -0
- data/cache/abstract_entity_cache.rb +82 -0
- data/cache/bits.rb +22 -0
- data/cache/cacheable.rb +202 -0
- data/cache/cached_entities.rb +116 -0
- data/cache/file_index.rb +35 -0
- data/cache/mmap_entity_cache.rb +67 -0
- data/clause.rb +528 -0
- data/connection.rb +155 -0
- data/custom_functions.sql +14 -0
- data/exception/ambiguous_attribute.rb +14 -0
- data/exception/cache_exception.rb +30 -0
- data/exception/invalid_klass_parameters.rb +63 -0
- data/exception/invalid_parameter.rb +42 -0
- data/exception/unknown_typecode.rb +19 -0
- data/file_index.sql +56 -0
- data/gui/erb_template.rb +79 -0
- data/gui/erb_template_helpers.rhtml +19 -0
- data/gui/form.rb +314 -0
- data/gui/form_element.rb +676 -0
- data/gui/form_generator.rb +151 -0
- data/gui/templates/button.rhtml +2 -0
- data/gui/templates/checkbox.rhtml +3 -0
- data/gui/templates/checkbox_row.rhtml +1 -0
- data/gui/templates/file.rhtml +2 -0
- data/gui/templates/file_readonly.rhtml +3 -0
- data/gui/templates/form_element.rhtml +5 -0
- data/gui/templates/form_element_horizontal.rhtml +3 -0
- data/gui/templates/form_element_listed.rhtml +8 -0
- data/gui/templates/form_table.rhtml +3 -0
- data/gui/templates/form_table_blank.rhtml +3 -0
- data/gui/templates/form_table_horizontal.rhtml +8 -0
- data/gui/templates/password.rhtml +2 -0
- data/gui/templates/password_readonly.rhtml +3 -0
- data/gui/templates/radio.rhtml +1 -0
- data/gui/templates/radio_row.rhtml +1 -0
- data/gui/templates/select.rhtml +23 -0
- data/gui/templates/text.rhtml +2 -0
- data/gui/templates/text_readonly.rhtml +3 -0
- data/gui/templates/textarea.rhtml +3 -0
- data/gui/templates/textarea_readonly.rhtml +4 -0
- data/lore.gemspec +40 -0
- data/lore.rb +94 -0
- data/migration.rb +48 -0
- data/model.rb +139 -0
- data/model_factory.rb +202 -0
- data/model_shortcuts.rb +16 -0
- data/query_shortcuts.rb +367 -0
- data/reserved_methods.txt +3 -0
- data/result.rb +100 -0
- data/symbol.rb +58 -0
- data/table_accessor.rb +1926 -0
- data/table_deleter.rb +115 -0
- data/table_inserter.rb +168 -0
- data/table_instance.rb +384 -0
- data/table_selector.rb +314 -0
- data/table_updater.rb +155 -0
- data/test/README +31 -0
- data/test/env.rb +5 -0
- data/test/lore_test.log +8218 -0
- data/test/model.rb +142 -0
- data/test/prepare.rb +37 -0
- data/test/tc_aspect.rb +58 -0
- data/test/tc_cache.rb +80 -0
- data/test/tc_clause.rb +104 -0
- data/test/tc_deep_inheritance.rb +49 -0
- data/test/tc_factory.rb +57 -0
- data/test/tc_filter.rb +37 -0
- data/test/tc_form.rb +32 -0
- data/test/tc_model.rb +86 -0
- data/test/tc_prepare.rb +45 -0
- data/test/tc_refined_query.rb +88 -0
- data/test/tc_table_accessor.rb +265 -0
- data/test/test.log +181 -0
- data/test/test_db.sql +400 -0
- data/test/ts_lore.rb +49 -0
- data/types.rb +55 -0
- data/validation/message.rb +60 -0
- data/validation/parameter_validator.rb +104 -0
- data/validation/reason.rb +54 -0
- data/validation/type_validator.rb +91 -0
- data/validation.rb +65 -0
- metadata +170 -0
@@ -0,0 +1,91 @@
|
|
1
|
+
|
2
|
+
require('lore/exception/invalid_parameter')
|
3
|
+
require('lore/exception/unknown_typecode')
|
4
|
+
require('lore/types')
|
5
|
+
|
6
|
+
module Lore
|
7
|
+
module Validation
|
8
|
+
|
9
|
+
class Type_Validator # :nodoc:
|
10
|
+
|
11
|
+
def typecheck(code, value, nil_allowed=true)
|
12
|
+
|
13
|
+
case code
|
14
|
+
|
15
|
+
# bool
|
16
|
+
when Lore::PG_BOOL
|
17
|
+
if value == 't' || value == 'f' ||
|
18
|
+
value == '' && nil_allowed || value.nil? && nil_allowed
|
19
|
+
then true else false end
|
20
|
+
# bytea
|
21
|
+
when Lore::PG_BYTEA
|
22
|
+
true
|
23
|
+
# int
|
24
|
+
when Lore::PG_INT
|
25
|
+
if value.kind_of?(Integer) or
|
26
|
+
value.to_i.to_s == value or
|
27
|
+
value.nil? && nil_allowed or
|
28
|
+
value == '' && nil_allowed
|
29
|
+
then true else false end
|
30
|
+
# smallint
|
31
|
+
when Lore::PG_SMALLINT
|
32
|
+
if ((value.kind_of?(Integer) or value.to_i.to_s == value or
|
33
|
+
value.nil? && nil_allowed || value == '' && nil_allowed)) and
|
34
|
+
value.to_i < 1024 and value.to_i > -1024
|
35
|
+
then true else false end
|
36
|
+
# decimal
|
37
|
+
when Lore::PG_DECIMAL
|
38
|
+
if ((value.kind_of?(Integer) or value.to_f.to_s == value or
|
39
|
+
value.nil? && nil_allowed || value == '' && nil_allowed))
|
40
|
+
then true else false end
|
41
|
+
# text
|
42
|
+
when Lore::PG_TEXT
|
43
|
+
if nil_allowed || !nil_allowed && !value.nil? && value != ''
|
44
|
+
then true else false end
|
45
|
+
# varchar
|
46
|
+
when Lore::PG_CHAR
|
47
|
+
if nil_allowed || !nil_allowed && !value.nil? && value != ''
|
48
|
+
then true else false end
|
49
|
+
# varchar
|
50
|
+
when Lore::PG_CHARACTER
|
51
|
+
if nil_allowed || !nil_allowed && !value.nil? && value != ''
|
52
|
+
then true else false end
|
53
|
+
# varchar
|
54
|
+
when Lore::PG_VARCHAR
|
55
|
+
if nil_allowed || !nil_allowed && !value.nil? && value != ''
|
56
|
+
then true else false end
|
57
|
+
# timestamp
|
58
|
+
when Lore::PG_TIME
|
59
|
+
# TODO
|
60
|
+
if nil_allowed || !nil_allowed && !value.nil? && value != ''
|
61
|
+
then true else false end
|
62
|
+
# timestamp with timezone
|
63
|
+
when Lore::PG_TIMESTAMP
|
64
|
+
# TODO
|
65
|
+
if nil_allowed || !nil_allowed && !value.nil? && value != ''
|
66
|
+
then true else false end
|
67
|
+
# timestamp with timezone
|
68
|
+
when Lore::PG_TIMESTAMP_TIMEZONE
|
69
|
+
# TODO
|
70
|
+
if nil_allowed || !nil_allowed && !value.nil? && value != ''
|
71
|
+
then true else false end
|
72
|
+
# date
|
73
|
+
when Lore::PG_DATE
|
74
|
+
# TODO
|
75
|
+
if nil_allowed || !nil_allowed && !value.nil? && value != ''
|
76
|
+
then true else false end
|
77
|
+
|
78
|
+
# character varying[]
|
79
|
+
when Lore::PG_VCHAR_LIST
|
80
|
+
true
|
81
|
+
|
82
|
+
else
|
83
|
+
raise ::Exception.new('Unknown type code (' << code.inspect + ') for value ' << value.inspect + '. See README on how to add new types. ')
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
end # module
|
91
|
+
end # module
|
data/validation.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Lore
|
4
|
+
module Validation
|
5
|
+
|
6
|
+
|
7
|
+
def validates(attrib, constraints)
|
8
|
+
# {{{
|
9
|
+
if attrib.kind_of? Clause then
|
10
|
+
attrib_split = attrib.to_s.split('.')
|
11
|
+
table = attrib_split[0..-2]
|
12
|
+
attrib = attrib_split[-1]
|
13
|
+
else
|
14
|
+
table = get_table_name
|
15
|
+
end
|
16
|
+
attrib = attrib.intern unless attrib.instance_of? Symbol
|
17
|
+
|
18
|
+
@constraints = Hash.new if @constraints.nil?
|
19
|
+
@constraints[table] = Hash.new if @constraints[table].nil?
|
20
|
+
@constraints[table][attrib] = Hash.new
|
21
|
+
|
22
|
+
if constraints[:mandatory] then
|
23
|
+
add_explicit_attribute(table, attrib.to_s)
|
24
|
+
end
|
25
|
+
if constraints[:type] then
|
26
|
+
# @attribute_types[table][attrib] = constraints[:type]
|
27
|
+
@constraints[table][attrib][:type] = constraints[:type]
|
28
|
+
end
|
29
|
+
if constraints[:format] then
|
30
|
+
@constraints[table][attrib][:format] = constraints[:format]
|
31
|
+
end
|
32
|
+
if constraints[:length] then
|
33
|
+
if constraints[:length].kind_of? Range then
|
34
|
+
@constraints[table][attrib][:minlength] = constraints[:length].first
|
35
|
+
@constraints[table][attrib][:maxlength] = constraints[:length].last
|
36
|
+
else
|
37
|
+
@constraints[table][attrib][:minlength] = constraints[:length]
|
38
|
+
@constraints[table][attrib][:maxlength] = constraints[:length]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
if constraints[:minlength] then
|
42
|
+
@constraints[table][attrib][:minlength] = constraints[:minlength]
|
43
|
+
end
|
44
|
+
if constraints[:maxlength] then
|
45
|
+
@constraints[table][attrib][:maxlength] = constraints[:maxlength]
|
46
|
+
end
|
47
|
+
end # }}}
|
48
|
+
|
49
|
+
|
50
|
+
def get_constraints
|
51
|
+
# {{{
|
52
|
+
|
53
|
+
@constraints = Hash.new if @constraints.nil?
|
54
|
+
if !@is_a_klasses.nil? then
|
55
|
+
@is_a_klasses.each_pair { |foreign_key, klass|
|
56
|
+
@constraints.update(klass.get_constraints)
|
57
|
+
}
|
58
|
+
end
|
59
|
+
@constraints
|
60
|
+
|
61
|
+
end # }}}
|
62
|
+
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
metadata
ADDED
@@ -0,0 +1,170 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lore
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tobias Fuchs
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-11-09 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: mmap
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0.1"
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: postgres
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "0.1"
|
32
|
+
version:
|
33
|
+
description: Lore is an object-relational mapping (ORM) implementation providing many features like prepared statements, (multiple) inheritance, a comfortable query syntax, highly customizable automated form generation, and result caching using memory mapping (MMap). Lore is currently using PostgreSQL as database backend.
|
34
|
+
email: fuchs@atomnode.net
|
35
|
+
executables: []
|
36
|
+
|
37
|
+
extensions: []
|
38
|
+
|
39
|
+
extra_rdoc_files: []
|
40
|
+
|
41
|
+
files:
|
42
|
+
- table_updater.rb
|
43
|
+
- exception
|
44
|
+
- table_deleter.rb
|
45
|
+
- model_factory.rb
|
46
|
+
- clause.rb
|
47
|
+
- connection.rb
|
48
|
+
- behaviours
|
49
|
+
- symbol.rb
|
50
|
+
- file_index.sql
|
51
|
+
- table_accessor.rb
|
52
|
+
- README
|
53
|
+
- table_inserter.rb
|
54
|
+
- custom_functions.sql
|
55
|
+
- model.rb
|
56
|
+
- lore.rb
|
57
|
+
- table_instance.rb
|
58
|
+
- types.rb
|
59
|
+
- benchmark.rb
|
60
|
+
- test
|
61
|
+
- result.rb
|
62
|
+
- validation.rb
|
63
|
+
- table_selector.rb
|
64
|
+
- reserved_methods.txt
|
65
|
+
- aspect.rb
|
66
|
+
- cache
|
67
|
+
- validation
|
68
|
+
- lore.gemspec
|
69
|
+
- migration.rb
|
70
|
+
- model_shortcuts.rb
|
71
|
+
- LICENSE
|
72
|
+
- bits.rb
|
73
|
+
- query_shortcuts.rb
|
74
|
+
- gui
|
75
|
+
- behaviours/movable.rb
|
76
|
+
- behaviours/versioned.rb
|
77
|
+
- behaviours/lockable.rb
|
78
|
+
- test/tc_cache.rb
|
79
|
+
- test/test_db.sql
|
80
|
+
- test/tc_refined_query.rb
|
81
|
+
- test/tc_deep_inheritance.rb
|
82
|
+
- test/prepare.rb
|
83
|
+
- test/tc_model.rb
|
84
|
+
- test/README
|
85
|
+
- test/test.log
|
86
|
+
- test/model.rb
|
87
|
+
- test/tc_clause.rb
|
88
|
+
- test/tc_table_accessor.rb
|
89
|
+
- test/tc_aspect.rb
|
90
|
+
- test/tc_filter.rb
|
91
|
+
- test/env.rb
|
92
|
+
- test/lore_test.log
|
93
|
+
- test/benchmark
|
94
|
+
- test/tc_factory.rb
|
95
|
+
- test/tc_prepare.rb
|
96
|
+
- test/ts_lore.rb
|
97
|
+
- test/tc_form.rb
|
98
|
+
- cache/file_index.rb
|
99
|
+
- cache/abstract_entity_cache.rb
|
100
|
+
- cache/mmap_entity_cache.rb
|
101
|
+
- cache/cacheable.rb
|
102
|
+
- cache/cached_entities.rb
|
103
|
+
- cache/bits.rb
|
104
|
+
- validation/message.rb
|
105
|
+
- validation/parameter_validator.rb
|
106
|
+
- validation/reason.rb
|
107
|
+
- validation/type_validator.rb
|
108
|
+
- gui/form.rb
|
109
|
+
- gui/erb_template.rb
|
110
|
+
- gui/form_generator.rb
|
111
|
+
- gui/templates
|
112
|
+
- gui/erb_template_helpers.rhtml
|
113
|
+
- gui/form_element.rb
|
114
|
+
- gui/templates/button.rhtml
|
115
|
+
- gui/templates/form_element.rhtml
|
116
|
+
- gui/templates/file_readonly.rhtml
|
117
|
+
- gui/templates/text_readonly.rhtml
|
118
|
+
- gui/templates/form_table_blank.rhtml
|
119
|
+
- gui/templates/checkbox_row.rhtml
|
120
|
+
- gui/templates/password_readonly.rhtml
|
121
|
+
- gui/templates/password.rhtml
|
122
|
+
- gui/templates/checkbox.rhtml
|
123
|
+
- gui/templates/form_table.rhtml
|
124
|
+
- gui/templates/form_table_horizontal.rhtml
|
125
|
+
- gui/templates/form_element_horizontal.rhtml
|
126
|
+
- gui/templates/file.rhtml
|
127
|
+
- gui/templates/textarea.rhtml
|
128
|
+
- gui/templates/text.rhtml
|
129
|
+
- gui/templates/form_element_listed.rhtml
|
130
|
+
- gui/templates/textarea_readonly.rhtml
|
131
|
+
- gui/templates/radio_row.rhtml
|
132
|
+
- gui/templates/radio.rhtml
|
133
|
+
- gui/templates/select.rhtml
|
134
|
+
- exception/invalid_klass_parameters.rb
|
135
|
+
- exception/invalid_parameter.rb
|
136
|
+
- exception/ambiguous_attribute.rb
|
137
|
+
- exception/cache_exception.rb
|
138
|
+
- exception/unknown_typecode.rb
|
139
|
+
has_rdoc: true
|
140
|
+
homepage: http://lore.rubyforge.org
|
141
|
+
post_install_message:
|
142
|
+
rdoc_options:
|
143
|
+
- --title
|
144
|
+
- Lore ORM
|
145
|
+
- --main
|
146
|
+
- README
|
147
|
+
- --line-numbers
|
148
|
+
require_paths:
|
149
|
+
- lib
|
150
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: "0"
|
155
|
+
version:
|
156
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: "0"
|
161
|
+
version:
|
162
|
+
requirements: []
|
163
|
+
|
164
|
+
rubyforge_project: lore
|
165
|
+
rubygems_version: 1.1.1
|
166
|
+
signing_key:
|
167
|
+
specification_version: 2
|
168
|
+
summary: A flexible ORM based on PostgreSQL
|
169
|
+
test_files: []
|
170
|
+
|