dam 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/dam.rb CHANGED
@@ -7,9 +7,7 @@ require 'yajl'
7
7
  module Dam
8
8
 
9
9
  def self.push(activity)
10
- Dam::Stream.all.select {|stream| stream.matches? activity }.each do |stream|
11
- Dam::Storage.insert(stream, activity)
12
- end
10
+ Dam::Storage.insert(activity, Dam::Stream.all.select {|stream| stream.matches? activity })
13
11
  end
14
12
 
15
13
  def self.post(type, params = {})
@@ -15,23 +15,41 @@ module Dam
15
15
  @database = database
16
16
  end
17
17
 
18
- def self.insert(stream, activity)
19
- key = stream.name
20
-
21
- self.database.push_head("stream:#{key}", activity.to_json)
22
- self.database.ltrim("stream:#{key}", 0, (stream.limit || 10) - 1)
18
+ def self.insert(activity, streams)
19
+ id = self.save(activity)
23
20
 
21
+ streams.each do |stream|
22
+ self.database.push_head("stream:#{stream.name}", "activity:#{id}")
23
+ self.database.ltrim("stream:#{stream.name}", 0, (stream.limit || 10) - 1)
24
+ end
24
25
  end
25
26
 
26
27
  def self.get(stream_name)
27
- self.database.list_range("stream:#{stream_name}", 0, -1)
28
+ self.database.mget(self.database.list_range("stream:#{stream_name}", 0, -1))
28
29
  end
29
30
 
30
31
  def self.head(stream_name)
31
- self.database.list_index("stream:#{stream_name}", 0)
32
+ self.database[self.database.list_index("stream:#{stream_name}", 0)]
33
+ end
34
+
35
+ def self.keys(spec='*')
36
+ self.database.keys("stream:#{spec}").collect {|key| key.sub(/^stream:/, '')}
37
+ end
38
+
39
+ def self.save activity
40
+ id = self.generate_unique_id!
41
+
42
+ self.database["activity:#{id}"] = activity.to_json
43
+
44
+ id
32
45
  end
33
46
 
34
47
  private
48
+
49
+ def self.generate_unique_id!
50
+ database.incr("dam:activity:id")
51
+ end
52
+
35
53
  def Storage.lookup(name)
36
54
  @engines ||= {}
37
55
  @engines[name]
@@ -64,7 +64,7 @@ module Dam
64
64
  end
65
65
 
66
66
  def instances
67
- elems = Dam::Storage.database.keys("stream:" + @glob_pattern)
67
+ elems = Dam::Storage.keys(@glob_pattern)
68
68
  elems.collect {|elem| apply(elem) }
69
69
  end
70
70
 
@@ -1,3 +1,3 @@
1
1
  module Dam
2
- Version = "0.2.0"
2
+ Version = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Philippe Bougie
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-24 00:00:00 -05:00
12
+ date: 2009-11-27 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency