lore 0.4.8 → 0.9.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.
Files changed (111) hide show
  1. data/Manifest.txt +16 -7
  2. data/README.rdoc +91 -0
  3. data/benchmark/benchmark.sql +11 -0
  4. data/benchmark/results.txt +28 -0
  5. data/benchmark/select.rb +352 -0
  6. data/lib/lore.rb +22 -8
  7. data/lib/lore/adapters/context.rb +64 -0
  8. data/lib/lore/adapters/postgres-pr.rb +6 -0
  9. data/lib/lore/adapters/postgres-pr/connection.rb +93 -0
  10. data/lib/lore/adapters/postgres-pr/result.rb +63 -0
  11. data/lib/lore/{types.rb → adapters/postgres-pr/types.rb} +36 -0
  12. data/lib/lore/adapters/postgres.rb +24 -0
  13. data/lib/lore/adapters/postgres/connection.rb +81 -0
  14. data/lib/lore/adapters/postgres/result.rb +82 -0
  15. data/lib/lore/adapters/postgres/types.rb +91 -0
  16. data/lib/lore/bits.rb +18 -0
  17. data/lib/lore/cache/abstract_entity_cache.rb +2 -1
  18. data/lib/lore/cache/cacheable.rb +12 -177
  19. data/lib/lore/cache/memcache_entity_cache.rb +89 -0
  20. data/lib/lore/cache/memory_entity_cache.rb +77 -0
  21. data/lib/lore/cache/mmap_entity_cache.rb +2 -2
  22. data/lib/lore/cache/mmap_entity_cache_bork.rb +86 -0
  23. data/lib/lore/clause.rb +107 -35
  24. data/lib/lore/{exception → exceptions}/ambiguous_attribute.rb +2 -2
  25. data/lib/lore/{exception → exceptions}/cache_exception.rb +1 -1
  26. data/lib/lore/exceptions/database_exception.rb +16 -0
  27. data/lib/lore/{exception/invalid_parameter.rb → exceptions/invalid_field.rb} +7 -4
  28. data/lib/lore/exceptions/unknown_type.rb +18 -0
  29. data/lib/lore/exceptions/validation_failure.rb +71 -0
  30. data/lib/lore/gui/form_generator.rb +109 -60
  31. data/lib/lore/gui/lore_model_select_field.rb +1 -0
  32. data/lib/lore/migration.rb +84 -25
  33. data/lib/lore/model.rb +3 -18
  34. data/lib/lore/{aspect.rb → model/aspect.rb} +0 -0
  35. data/lib/lore/model/associations.rb +225 -0
  36. data/lib/lore/model/attribute_settings.rb +233 -0
  37. data/lib/lore/model/filters.rb +34 -0
  38. data/lib/lore/model/mockable.rb +62 -0
  39. data/lib/lore/{model_factory.rb → model/model_factory.rb} +68 -39
  40. data/lib/lore/model/model_instance.rb +382 -0
  41. data/lib/lore/{model_shortcuts.rb → model/model_shortcuts.rb} +7 -0
  42. data/lib/lore/model/polymorphic.rb +53 -0
  43. data/lib/lore/model/prepare.rb +97 -0
  44. data/lib/lore/model/table_accessor.rb +1016 -0
  45. data/lib/lore/query.rb +71 -0
  46. data/lib/lore/query_shortcuts.rb +43 -11
  47. data/lib/lore/strategies/table_delete.rb +115 -0
  48. data/lib/lore/strategies/table_insert.rb +146 -0
  49. data/lib/lore/strategies/table_select.rb +299 -0
  50. data/lib/lore/strategies/table_update.rb +155 -0
  51. data/lib/lore/validation/parameter_validator.rb +85 -26
  52. data/lib/lore/validation/type_validator.rb +34 -78
  53. data/{custom_models.rb → lore-0.9.2.gem} +0 -0
  54. data/lore.gemspec +26 -17
  55. data/spec/clause.rb +37 -0
  56. data/spec/fixtures/blank_models.rb +37 -0
  57. data/{test/model.rb → spec/fixtures/models.rb} +64 -41
  58. data/spec/fixtures/polymorphic_models.rb +68 -0
  59. data/spec/model_associations.rb +86 -0
  60. data/spec/model_create.rb +47 -0
  61. data/spec/model_definition.rb +151 -0
  62. data/spec/model_delete.rb +31 -0
  63. data/spec/model_inheritance.rb +50 -0
  64. data/spec/model_polymorphic.rb +85 -0
  65. data/spec/model_select.rb +101 -0
  66. data/spec/model_select_eager.rb +42 -0
  67. data/spec/model_union_select.rb +33 -0
  68. data/spec/model_update.rb +45 -0
  69. data/spec/model_validation.rb +20 -0
  70. data/spec/spec_db.sql +808 -0
  71. data/spec/spec_env.rb +19 -0
  72. data/spec/spec_helpers.rb +77 -0
  73. metadata +93 -82
  74. data/lib/lore/README.txt +0 -84
  75. data/lib/lore/behaviours/lockable.rb +0 -55
  76. data/lib/lore/behaviours/movable.rb +0 -72
  77. data/lib/lore/behaviours/paginated.rb +0 -31
  78. data/lib/lore/behaviours/versioned.rb +0 -36
  79. data/lib/lore/connection.rb +0 -152
  80. data/lib/lore/exception/invalid_klass_parameters.rb +0 -63
  81. data/lib/lore/exception/unknown_typecode.rb +0 -19
  82. data/lib/lore/result.rb +0 -119
  83. data/lib/lore/symbol.rb +0 -58
  84. data/lib/lore/table_accessor.rb +0 -1790
  85. data/lib/lore/table_deleter.rb +0 -116
  86. data/lib/lore/table_inserter.rb +0 -170
  87. data/lib/lore/table_instance.rb +0 -389
  88. data/lib/lore/table_selector.rb +0 -285
  89. data/lib/lore/table_updater.rb +0 -157
  90. data/lib/lore/validation.rb +0 -65
  91. data/lib/lore/validation/message.rb +0 -60
  92. data/lib/lore/validation/reason.rb +0 -52
  93. data/lore_test.log +0 -2366
  94. data/test/README +0 -31
  95. data/test/custom_models.rb +0 -18
  96. data/test/env.rb +0 -5
  97. data/test/prepare.rb +0 -37
  98. data/test/tc_aspect.rb +0 -58
  99. data/test/tc_cache.rb +0 -83
  100. data/test/tc_clause.rb +0 -104
  101. data/test/tc_deep_inheritance.rb +0 -49
  102. data/test/tc_factory.rb +0 -57
  103. data/test/tc_filter.rb +0 -37
  104. data/test/tc_form.rb +0 -32
  105. data/test/tc_model.rb +0 -140
  106. data/test/tc_prepare.rb +0 -44
  107. data/test/tc_refined_query.rb +0 -88
  108. data/test/tc_table_accessor.rb +0 -267
  109. data/test/tc_thread.rb +0 -100
  110. data/test/test_db.sql +0 -400
  111. data/test/test_lore.rb +0 -50
@@ -1,100 +0,0 @@
1
-
2
- require 'test/unit'
3
- require './test/model'
4
- require 'lore/symbol'
5
-
6
- module Lore
7
- module Unit
8
-
9
-
10
- class TC_Model < Test::Unit::TestCase
11
-
12
- def setup
13
- end
14
-
15
- def teardown
16
- end
17
-
18
- def test_simple
19
- t1 = Thread.new {
20
- 30.times {
21
- Car.find(10)
22
- }
23
- }
24
- t2 = Thread.new {
25
- 30.times {
26
- Car.find(10)
27
- }
28
- }
29
- t3 = Thread.new {
30
- 30.times {
31
- Car.find(10)
32
- }
33
- }
34
- t1.join
35
- t2.join
36
- t3.join
37
- end
38
- def test_create
39
- c1 = Car.create(
40
- :manuf_id => 0,
41
- :name => '318i',
42
- :num_seats => 5,
43
- :maxspeed => 180,
44
- :num_doors => 5,
45
- :owner_id => 1,
46
- :car_type_id => 23
47
- )
48
- c1.delete
49
- return
50
- t1 = Thread.new {
51
- 30.times {
52
- c1 = Car.create(
53
- :manuf_id => 0,
54
- :name => '318i',
55
- :num_seats => 5,
56
- :maxspeed => 180,
57
- :num_doors => 5,
58
- :owner_id => 1,
59
- :car_type_id => 23
60
- )
61
- c1.delete
62
- }
63
- }
64
- t2 = Thread.new {
65
- 30.times {
66
- c1 = Car.create(
67
- :manuf_id => 0,
68
- :name => '318i',
69
- :num_seats => 5,
70
- :maxspeed => 180,
71
- :num_doors => 5,
72
- :owner_id => 1,
73
- :car_type_id => 23
74
- )
75
- c1.delete
76
- }
77
- }
78
- t3 = Thread.new {
79
- 30.times {
80
- c1 = Car.create(
81
- :manuf_id => 0,
82
- :name => '318i',
83
- :num_seats => 5,
84
- :maxspeed => 180,
85
- :num_doors => 5,
86
- :owner_id => 1,
87
- :car_type_id => 23
88
- )
89
- c1.delete
90
- }
91
- }
92
- t1.join
93
- t2.join
94
- t3.join
95
- end
96
-
97
- end
98
-
99
- end
100
- end
@@ -1,400 +0,0 @@
1
- --
2
- -- PostgreSQL database dump
3
- --
4
-
5
- SET client_encoding = 'SQL_ASCII';
6
- SET standard_conforming_strings = off;
7
- SET check_function_bodies = false;
8
- SET client_min_messages = warning;
9
- SET escape_string_warning = off;
10
-
11
- --
12
- -- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres
13
- --
14
-
15
- COMMENT ON SCHEMA public IS 'Standard public schema';
16
-
17
-
18
- SET search_path = public, pg_catalog;
19
-
20
- SET default_tablespace = '';
21
-
22
- SET default_with_oids = false;
23
-
24
- --
25
- -- Name: bike; Type: TABLE; Schema: public; Owner: lore; Tablespace:
26
- --
27
-
28
- CREATE TABLE bike (
29
- bike_id integer NOT NULL,
30
- vehicle_id integer NOT NULL,
31
- is_chopper boolean NOT NULL
32
- );
33
-
34
-
35
- ALTER TABLE public.bike OWNER TO lore;
36
-
37
- --
38
- -- Name: bike_id_seq; Type: SEQUENCE; Schema: public; Owner: lore
39
- --
40
-
41
- CREATE SEQUENCE bike_id_seq
42
- START WITH 1
43
- INCREMENT BY 1
44
- NO MAXVALUE
45
- NO MINVALUE
46
- CACHE 1;
47
-
48
-
49
- ALTER TABLE public.bike_id_seq OWNER TO lore;
50
-
51
- --
52
- -- Name: car; Type: TABLE; Schema: public; Owner: lore; Tablespace:
53
- --
54
-
55
- CREATE TABLE car (
56
- id integer NOT NULL,
57
- vehicle_id integer NOT NULL,
58
- car_type_id integer NOT NULL,
59
- num_doors smallint NOT NULL
60
- );
61
-
62
-
63
- ALTER TABLE public.car OWNER TO lore;
64
-
65
- --
66
- -- Name: car_id_seq; Type: SEQUENCE; Schema: public; Owner: lore
67
- --
68
-
69
- CREATE SEQUENCE car_id_seq
70
- INCREMENT BY 1
71
- NO MAXVALUE
72
- NO MINVALUE
73
- CACHE 1;
74
-
75
-
76
- ALTER TABLE public.car_id_seq OWNER TO lore;
77
-
78
- --
79
- -- Name: car_type; Type: TABLE; Schema: public; Owner: lore; Tablespace:
80
- --
81
-
82
- CREATE TABLE car_type (
83
- car_type_id integer NOT NULL,
84
- name character varying(100) NOT NULL
85
- );
86
-
87
-
88
- ALTER TABLE public.car_type OWNER TO lore;
89
-
90
- --
91
- -- Name: car_type_id_seq; Type: SEQUENCE; Schema: public; Owner: lore
92
- --
93
-
94
- CREATE SEQUENCE car_type_id_seq
95
- INCREMENT BY 1
96
- NO MAXVALUE
97
- NO MINVALUE
98
- CACHE 1;
99
-
100
-
101
- ALTER TABLE public.car_type_id_seq OWNER TO lore;
102
-
103
- --
104
- -- Name: garage; Type: TABLE; Schema: public; Owner: lore; Tablespace:
105
- --
106
-
107
- CREATE TABLE garage (
108
- garage_id integer NOT NULL,
109
- vehicle_id integer NOT NULL
110
- );
111
-
112
-
113
- ALTER TABLE public.garage OWNER TO lore;
114
-
115
- --
116
- -- Name: garage_id_seq; Type: SEQUENCE; Schema: public; Owner: lore
117
- --
118
-
119
- CREATE SEQUENCE garage_id_seq
120
- START WITH 1
121
- INCREMENT BY 1
122
- NO MAXVALUE
123
- NO MINVALUE
124
- CACHE 1;
125
-
126
-
127
- ALTER TABLE public.garage_id_seq OWNER TO lore;
128
-
129
- --
130
- -- Name: manuf_id_seq; Type: SEQUENCE; Schema: public; Owner: lore
131
- --
132
-
133
- CREATE SEQUENCE manuf_id_seq
134
- INCREMENT BY 1
135
- NO MAXVALUE
136
- NO MINVALUE
137
- CACHE 1;
138
-
139
-
140
- ALTER TABLE public.manuf_id_seq OWNER TO lore;
141
-
142
- --
143
- -- Name: manufacturer; Type: TABLE; Schema: public; Owner: lore; Tablespace:
144
- --
145
-
146
- CREATE TABLE manufacturer (
147
- manuf_id integer NOT NULL,
148
- name character varying(100) NOT NULL
149
- );
150
-
151
-
152
- ALTER TABLE public.manufacturer OWNER TO lore;
153
-
154
- --
155
- -- Name: owner; Type: TABLE; Schema: public; Owner: lore; Tablespace:
156
- --
157
-
158
- CREATE TABLE "owner" (
159
- owner_id integer NOT NULL,
160
- name character varying(200) NOT NULL
161
- );
162
-
163
-
164
- ALTER TABLE public."owner" OWNER TO lore;
165
-
166
- --
167
- -- Name: owner_id_seq; Type: SEQUENCE; Schema: public; Owner: lore
168
- --
169
-
170
- CREATE SEQUENCE owner_id_seq
171
- INCREMENT BY 1
172
- NO MAXVALUE
173
- NO MINVALUE
174
- CACHE 1;
175
-
176
-
177
- ALTER TABLE public.owner_id_seq OWNER TO lore;
178
-
179
- --
180
- -- Name: trailer; Type: TABLE; Schema: public; Owner: lore; Tablespace:
181
- --
182
-
183
- CREATE TABLE trailer (
184
- trailer_id integer NOT NULL,
185
- car_id integer NOT NULL,
186
- maxweight integer NOT NULL
187
- );
188
-
189
-
190
- ALTER TABLE public.trailer OWNER TO lore;
191
-
192
- --
193
- -- Name: trailer_id_seq; Type: SEQUENCE; Schema: public; Owner: lore
194
- --
195
-
196
- CREATE SEQUENCE trailer_id_seq
197
- START WITH 1
198
- INCREMENT BY 1
199
- NO MAXVALUE
200
- NO MINVALUE
201
- CACHE 1;
202
-
203
-
204
- ALTER TABLE public.trailer_id_seq OWNER TO lore;
205
-
206
- --
207
- -- Name: vehicle; Type: TABLE; Schema: public; Owner: lore; Tablespace:
208
- --
209
-
210
- CREATE TABLE vehicle (
211
- id integer NOT NULL,
212
- manuf_id integer NOT NULL,
213
- num_seats smallint NOT NULL,
214
- maxspeed integer NOT NULL,
215
- name character varying(100) NOT NULL,
216
- owner_id integer
217
- );
218
-
219
-
220
- ALTER TABLE public.vehicle OWNER TO lore;
221
-
222
- --
223
- -- Name: vehicle_id_seq; Type: SEQUENCE; Schema: public; Owner: lore
224
- --
225
-
226
- CREATE SEQUENCE vehicle_id_seq
227
- INCREMENT BY 1
228
- NO MAXVALUE
229
- NO MINVALUE
230
- CACHE 1;
231
-
232
-
233
- ALTER TABLE public.vehicle_id_seq OWNER TO lore;
234
-
235
- --
236
- -- Name: vehicle_owner; Type: TABLE; Schema: public; Owner: lore; Tablespace:
237
- --
238
-
239
- CREATE TABLE vehicle_owner (
240
- owner_id integer NOT NULL,
241
- vehicle_id integer NOT NULL
242
- );
243
-
244
-
245
- ALTER TABLE public.vehicle_owner OWNER TO lore;
246
-
247
- --
248
- -- Name: public; Type: ACL; Schema: -; Owner: postgres
249
- --
250
-
251
- REVOKE ALL ON SCHEMA public FROM PUBLIC;
252
- REVOKE ALL ON SCHEMA public FROM postgres;
253
- GRANT ALL ON SCHEMA public TO postgres;
254
- GRANT ALL ON SCHEMA public TO PUBLIC;
255
-
256
-
257
- --
258
- -- Name: bike; Type: ACL; Schema: public; Owner: lore
259
- --
260
-
261
- REVOKE ALL ON TABLE bike FROM PUBLIC;
262
- REVOKE ALL ON TABLE bike FROM lore;
263
- GRANT ALL ON TABLE bike TO lore;
264
- GRANT ALL ON TABLE bike TO "lore";
265
-
266
-
267
- --
268
- -- Name: bike_id_seq; Type: ACL; Schema: public; Owner: lore
269
- --
270
-
271
- REVOKE ALL ON SEQUENCE bike_id_seq FROM PUBLIC;
272
- REVOKE ALL ON SEQUENCE bike_id_seq FROM lore;
273
- GRANT ALL ON SEQUENCE bike_id_seq TO lore;
274
- GRANT ALL ON SEQUENCE bike_id_seq TO "lore";
275
-
276
-
277
- --
278
- -- Name: car; Type: ACL; Schema: public; Owner: lore
279
- --
280
-
281
- REVOKE ALL ON TABLE car FROM PUBLIC;
282
- REVOKE ALL ON TABLE car FROM lore;
283
- GRANT ALL ON TABLE car TO lore;
284
- GRANT ALL ON TABLE car TO "lore";
285
-
286
-
287
- --
288
- -- Name: car_id_seq; Type: ACL; Schema: public; Owner: lore
289
- --
290
-
291
- REVOKE ALL ON SEQUENCE car_id_seq FROM PUBLIC;
292
- REVOKE ALL ON SEQUENCE car_id_seq FROM lore;
293
- GRANT ALL ON SEQUENCE car_id_seq TO lore;
294
- GRANT ALL ON SEQUENCE car_id_seq TO "lore";
295
-
296
-
297
- --
298
- -- Name: car_type; Type: ACL; Schema: public; Owner: lore
299
- --
300
-
301
- REVOKE ALL ON TABLE car_type FROM PUBLIC;
302
- REVOKE ALL ON TABLE car_type FROM lore;
303
- GRANT ALL ON TABLE car_type TO lore;
304
- GRANT ALL ON TABLE car_type TO "lore";
305
-
306
-
307
- --
308
- -- Name: car_type_id_seq; Type: ACL; Schema: public; Owner: lore
309
- --
310
-
311
- REVOKE ALL ON SEQUENCE car_type_id_seq FROM PUBLIC;
312
- REVOKE ALL ON SEQUENCE car_type_id_seq FROM lore;
313
- GRANT ALL ON SEQUENCE car_type_id_seq TO lore;
314
- GRANT ALL ON SEQUENCE car_type_id_seq TO "lore";
315
-
316
-
317
- --
318
- -- Name: garage; Type: ACL; Schema: public; Owner: lore
319
- --
320
-
321
- REVOKE ALL ON TABLE garage FROM PUBLIC;
322
- REVOKE ALL ON TABLE garage FROM lore;
323
- GRANT ALL ON TABLE garage TO lore;
324
- GRANT ALL ON TABLE garage TO "lore";
325
-
326
-
327
- --
328
- -- Name: garage_id_seq; Type: ACL; Schema: public; Owner: lore
329
- --
330
-
331
- REVOKE ALL ON SEQUENCE garage_id_seq FROM PUBLIC;
332
- REVOKE ALL ON SEQUENCE garage_id_seq FROM lore;
333
- GRANT ALL ON SEQUENCE garage_id_seq TO lore;
334
- GRANT ALL ON SEQUENCE garage_id_seq TO "lore";
335
-
336
-
337
- --
338
- -- Name: manuf_id_seq; Type: ACL; Schema: public; Owner: lore
339
- --
340
-
341
- REVOKE ALL ON SEQUENCE manuf_id_seq FROM PUBLIC;
342
- REVOKE ALL ON SEQUENCE manuf_id_seq FROM lore;
343
- GRANT ALL ON SEQUENCE manuf_id_seq TO lore;
344
- GRANT ALL ON SEQUENCE manuf_id_seq TO "lore";
345
-
346
-
347
- --
348
- -- Name: manufacturer; Type: ACL; Schema: public; Owner: lore
349
- --
350
-
351
- REVOKE ALL ON TABLE manufacturer FROM PUBLIC;
352
- REVOKE ALL ON TABLE manufacturer FROM lore;
353
- GRANT ALL ON TABLE manufacturer TO lore;
354
- GRANT ALL ON TABLE manufacturer TO "lore";
355
-
356
-
357
- --
358
- -- Name: trailer; Type: ACL; Schema: public; Owner: lore
359
- --
360
-
361
- REVOKE ALL ON TABLE trailer FROM PUBLIC;
362
- REVOKE ALL ON TABLE trailer FROM lore;
363
- GRANT ALL ON TABLE trailer TO lore;
364
- GRANT ALL ON TABLE trailer TO lore;
365
-
366
-
367
- --
368
- -- Name: trailer_id_seq; Type: ACL; Schema: public; Owner: lore
369
- --
370
-
371
- REVOKE ALL ON SEQUENCE trailer_id_seq FROM PUBLIC;
372
- REVOKE ALL ON SEQUENCE trailer_id_seq FROM lore;
373
- GRANT ALL ON SEQUENCE trailer_id_seq TO lore;
374
- GRANT ALL ON SEQUENCE trailer_id_seq TO lore;
375
-
376
-
377
- --
378
- -- Name: vehicle; Type: ACL; Schema: public; Owner: lore
379
- --
380
-
381
- REVOKE ALL ON TABLE vehicle FROM PUBLIC;
382
- REVOKE ALL ON TABLE vehicle FROM lore;
383
- GRANT ALL ON TABLE vehicle TO lore;
384
- GRANT ALL ON TABLE vehicle TO "lore";
385
-
386
-
387
- --
388
- -- Name: vehicle_id_seq; Type: ACL; Schema: public; Owner: lore
389
- --
390
-
391
- REVOKE ALL ON SEQUENCE vehicle_id_seq FROM PUBLIC;
392
- REVOKE ALL ON SEQUENCE vehicle_id_seq FROM lore;
393
- GRANT ALL ON SEQUENCE vehicle_id_seq TO lore;
394
- GRANT ALL ON SEQUENCE vehicle_id_seq TO "lore";
395
-
396
-
397
- --
398
- -- PostgreSQL database dump complete
399
- --
400
-