Module: Joggle::Store::PStore::User

Included in:
All
Defined in:
lib/joggle/store/pstore/user.rb

Overview

Mixin that adds user store methods for PStore backend.

Note: You’re probably looking for Joggle::Store::PStore::All

Instance Method Summary collapse

Instance Method Details

#add_user(key, row) ⇒ Object

Add user to store.



15
16
17
18
19
20
21
# File 'lib/joggle/store/pstore/user.rb', line 15

def add_user(key, row)
  key = user_store_key(key)

  @store.transaction do |s|
    s[key] = row
  end
end

#delete_user(key) ⇒ Object

Delete given user from store.



79
80
81
82
83
84
85
# File 'lib/joggle/store/pstore/user.rb', line 79

def delete_user(key)
  key = user_store_key(key)

  @store.transaction do |s|
    s.delete(key)
  end
end

#each_user(&block) ⇒ Object

Iterate over all users in store.



66
67
68
69
70
71
72
73
74
# File 'lib/joggle/store/pstore/user.rb', line 66

def each_user(&block) 
  users = @store.transaction(true) do |s|
    s.roots.inject([]) do |r, key| 
      (key =~ /^user-/) ? r << s[key] : r
    end
  end

  users.each(&block)
end

#get_user(key) ⇒ Object

Get information about given user.



37
38
39
40
41
42
43
# File 'lib/joggle/store/pstore/user.rb', line 37

def get_user(key)
  key = user_store_key(key)

  @store.transaction(true) do |s|
    s[key]
  end
end

#has_user?(key) ⇒ Boolean

Does the given user exist?

Returns:

  • (Boolean)


55
56
57
58
59
60
61
# File 'lib/joggle/store/pstore/user.rb', line 55

def has_user?(key)
  key = user_store_key(key)

  @store.transaction(true) do |s|
    s.root?(key)
  end
end

#ignored?(key) ⇒ Boolean

Is the given user ignored?

Returns:

  • (Boolean)


48
49
50
# File 'lib/joggle/store/pstore/user.rb', line 48

def ignored?(key)
  get_user(key)['ignored']
end

#update_user(key, row) ⇒ Object

Update user’s store entry.



26
27
28
29
30
31
32
# File 'lib/joggle/store/pstore/user.rb', line 26

def update_user(key, row)
  key = user_store_key(key)

  @store.transaction do |s|
    row.each { |k, v| s[key][k] = v }
  end
end

#user_store_key(key) ⇒ Object

Map user key to PStore root key.



90
91
92
# File 'lib/joggle/store/pstore/user.rb', line 90

def user_store_key(key)
  'user-' << Digest::MD5.hexdigest(key.gsub(/\/.*$/, ''))
end