flexirecord 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/flexirecord-oldpg.rb.patch +75 -0
- data/lib/flexirecord-demo.rb +10 -1
- data/lib/flexirecord.rb +1 -1
- metadata +3 -2
@@ -0,0 +1,75 @@
|
|
1
|
+
--- flexirecord.rb 2007-02-07 18:54:13.000000000 +0000
|
2
|
+
+++ flexirecord-oldpg.rb 2007-02-08 12:05:49.000000000 +0000
|
3
|
+
@@ -568,7 +568,7 @@
|
4
|
+
primary_columns = []
|
5
|
+
db_query('SELECT ' <<
|
6
|
+
'"pg_attribute"."attname", ' <<
|
7
|
+
- '"pg_constraint"."conkey" @> ARRAY["pg_attribute"."attnum"] AS "primary" ' <<
|
8
|
+
+ '("pg_constraint"."conkey"[1] = "pg_attribute"."attnum" OR "pg_constraint"."conkey"[2] = "pg_attribute"."attnum" OR "pg_constraint"."conkey"[3] = "pg_attribute"."attnum" OR "pg_constraint"."conkey"[4] = "pg_attribute"."attnum" OR "pg_constraint"."conkey"[5] = "pg_attribute"."attnum" OR "pg_constraint"."conkey"[6] = "pg_attribute"."attnum" OR "pg_constraint"."conkey"[7] = "pg_attribute"."attnum" OR "pg_constraint"."conkey"[8] = "pg_attribute"."attnum") AS "primary" ' <<
|
9
|
+
'FROM "pg_attribute" ' <<
|
10
|
+
'JOIN "pg_class" ON "pg_attribute"."attrelid" = "pg_class"."oid" ' <<
|
11
|
+
'JOIN "pg_namespace" ON "pg_class"."relnamespace" = "pg_namespace"."oid" ' <<
|
12
|
+
@@ -752,7 +752,7 @@
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
- # Adds a ManyToOneReference to the class (by simply creating it). The first argument is the destination class, followed by arguments being passed to Reference.new.
|
17
|
+
+ # Adds a ManyToManyReference to the class (by simply creating it). The first argument is the destination class, followed by arguments being passed to Reference.new.
|
18
|
+
def add_many_to_one_reference(destination_class, *arguments)
|
19
|
+
return FlexiRecord::ManyToOneReference.new(
|
20
|
+
self, destination_class, *arguments
|
21
|
+
@@ -985,16 +985,14 @@
|
22
|
+
def save
|
23
|
+
synchronize do
|
24
|
+
used_columns = self.used_columns
|
25
|
+
- primary_key = nil
|
26
|
+
if @saved
|
27
|
+
if self.class.primary_columns.empty?
|
28
|
+
raise "Can not re-save a record of a table without a primary key."
|
29
|
+
end
|
30
|
+
- primary_key = self.class.db_query1(
|
31
|
+
+ self.class.db_execute(
|
32
|
+
'UPDATE ' << self.class.table <<
|
33
|
+
' SET ' << (used_columns.collect { |column| '"' << column << '" = $' }.join(', ')) <<
|
34
|
+
- ' WHERE ' << (self.class.primary_columns.collect { |column| '"' << column << '" = $' }.join(' AND ')) <<
|
35
|
+
- ' RETURNING ' << (self.class.primary_columns.collect { |column| '"' << column << '"' }.join(', ')),
|
36
|
+
+ ' WHERE ' << (self.class.primary_columns.collect { |column| '"' << column << '" = $' }.join(' AND ')),
|
37
|
+
*(
|
38
|
+
used_columns.collect { |column| read(column) } +
|
39
|
+
self.class.primary_columns.collect { |column| @old_primary_key[column] }
|
40
|
+
@@ -1002,18 +1000,12 @@
|
41
|
+
)
|
42
|
+
else
|
43
|
+
if used_columns.empty?
|
44
|
+
- primary_key = self.class.db_query1('INSERT INTO ' << self.class.table << ' DEFAULT VALUES' <<
|
45
|
+
- (self.class.primary_columns.empty? ? '' : (
|
46
|
+
- ' RETURNING ' << (self.class.primary_columns.collect { |column| '"' << column << '"' }.join(', '))
|
47
|
+
- )))
|
48
|
+
+ self.class.db_execute('INSERT INTO ' << self.class.table << ' DEFAULT VALUES')
|
49
|
+
else
|
50
|
+
- primary_key = self.class.db_query1(
|
51
|
+
+ self.class.db_execute(
|
52
|
+
'INSERT INTO ' << self.class.table <<
|
53
|
+
' (' << (used_columns.collect { |column| '"' << column << '"' }.join(', ')) << ')' <<
|
54
|
+
- ' VALUES (' << (used_columns.collect { |column| '$' }.join(', ')) << ')' <<
|
55
|
+
- (self.class.primary_columns.empty? ? '' : (
|
56
|
+
- ' RETURNING ' << (self.class.primary_columns.collect { |column| '"' << column << '"' }.join(', '))
|
57
|
+
- )),
|
58
|
+
+ ' VALUES (' << (used_columns.collect { |column| '$' }.join(', ')) << ')',
|
59
|
+
*(
|
60
|
+
used_columns.collect { |column| read(column) }
|
61
|
+
)
|
62
|
+
@@ -1021,10 +1013,9 @@
|
63
|
+
end
|
64
|
+
@saved = true
|
65
|
+
end
|
66
|
+
- unless primary_key.nil?
|
67
|
+
- self.class.primary_columns.each do |column|
|
68
|
+
- self.set(column, primary_key.read(column))
|
69
|
+
- end
|
70
|
+
+ if self.class.primary_columns == ['id'] and self.id.nil?
|
71
|
+
+ primary_key = self.class.db_query1('SELECT lastval() AS "id"')
|
72
|
+
+ self.id = primary_key.id
|
73
|
+
end
|
74
|
+
copy_primary_key
|
75
|
+
return self
|
data/lib/flexirecord-demo.rb
CHANGED
@@ -117,7 +117,8 @@ module FlexiRecordDemo
|
|
117
117
|
MediumEntry.new(:medium => medium_b, :position => :last, :movie => koyaanisqatsi).save
|
118
118
|
MediumEntry.new(:medium => medium_b, :position => :last, :movie => american_beauty).save
|
119
119
|
end
|
120
|
-
Rating.new(:person => anja, :movie =>
|
120
|
+
Rating.new(:person => anja, :movie => american_beauty, :rating => Rational(7, 10)).save
|
121
|
+
Rating.new(:person => anja, :movie => koyaanisqatsi, :rating => Rational(9,10)).save
|
121
122
|
Rating.new(:person => phillip, :movie => koyaanisqatsi, :rating => Rational(6,10)).save
|
122
123
|
Rating.new(:person => phillip, :movie => koyaanisqatsi, :rating => Rational(8,10)).save
|
123
124
|
Rating.new(:person => wilson, :movie => naruto, :comment => 'Rasengan!').save
|
@@ -138,6 +139,14 @@ module FlexiRecordDemo
|
|
138
139
|
puts " - Rating: #{rating.rating ? rating.rating.to_s : 'none'}"
|
139
140
|
puts " - Comment: #{rating.comment || 'none'}"
|
140
141
|
end
|
142
|
+
anjas = Person.select('WHERE "name" = $', 'Anja')
|
143
|
+
if anjas.length == 1
|
144
|
+
anja = anjas.first
|
145
|
+
anjas_favourite = anja.rated_movies('WHERE "rel"."rating" NOTNULL ORDER BY "rel"."rating" DESC LIMIT 1').first
|
146
|
+
puts "The movie, which Anja likes most is: #{anjas_favourite ? anjas_favourite.name : 'N/A'}."
|
147
|
+
else
|
148
|
+
puts "There is more than one person named Anja."
|
149
|
+
end
|
141
150
|
nil
|
142
151
|
end
|
143
152
|
module_function :demo
|
data/lib/flexirecord.rb
CHANGED
@@ -752,7 +752,7 @@ module FlexiRecord
|
|
752
752
|
)
|
753
753
|
end
|
754
754
|
|
755
|
-
# Adds a
|
755
|
+
# Adds a ManyToOneReference to the class (by simply creating it). The first argument is the destination class, followed by arguments being passed to Reference.new.
|
756
756
|
def add_many_to_one_reference(destination_class, *arguments)
|
757
757
|
return FlexiRecord::ManyToOneReference.new(
|
758
758
|
self, destination_class, *arguments
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: flexirecord
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-02-
|
6
|
+
version: 0.0.3
|
7
|
+
date: 2007-02-08 00:00:00 +00:00
|
8
8
|
summary: Object-Oriented Database Access Library
|
9
9
|
require_paths:
|
10
10
|
- lib/
|
@@ -34,6 +34,7 @@ files:
|
|
34
34
|
- lib/flexirecord.rb
|
35
35
|
- lib/flexirecord-demo.rb
|
36
36
|
- ./flexirecord-demo.sql
|
37
|
+
- flexirecord-oldpg.rb.patch
|
37
38
|
test_files: []
|
38
39
|
|
39
40
|
rdoc_options:
|