Push objects just once to client.
This commit is contained in:
parent
8cce6a6e40
commit
9d4c865979
12 changed files with 266 additions and 247 deletions
|
@ -1,10 +1,11 @@
|
||||||
class Sessions::Backend::ActivityStream
|
class Sessions::Backend::ActivityStream
|
||||||
|
|
||||||
def initialize(user, client = nil, client_id = nil, ttl = 25)
|
def initialize(user, asset_lookup, client = nil, client_id = nil, ttl = 25)
|
||||||
@user = user
|
@user = user
|
||||||
@client = client
|
@client = client
|
||||||
@client_id = client_id
|
@client_id = client_id
|
||||||
@ttl = ttl
|
@ttl = ttl
|
||||||
|
@asset_lookup = asset_lookup
|
||||||
@last_change = nil
|
@last_change = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
23
lib/sessions/backend/base.rb
Normal file
23
lib/sessions/backend/base.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
class Sessions::Backend::Base
|
||||||
|
def initialize(user, asset_lookup, client, client_id, ttl = 30)
|
||||||
|
@user = user
|
||||||
|
@client = client
|
||||||
|
@client_id = client_id
|
||||||
|
@ttl = ttl
|
||||||
|
@asset_lookup = asset_lookup
|
||||||
|
@last_change = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def asset_needed?(record)
|
||||||
|
class_name = record.class.to_s
|
||||||
|
if !@asset_lookup || !@asset_lookup[class_name] || !@asset_lookup[class_name][record.id] || @asset_lookup[class_name][record.id] < record.updated_at
|
||||||
|
if !@asset_lookup[class_name]
|
||||||
|
@asset_lookup[class_name] = {}
|
||||||
|
end
|
||||||
|
@asset_lookup[class_name][record.id] = record.updated_at
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,10 +1,11 @@
|
||||||
class Sessions::Backend::Collections
|
class Sessions::Backend::Collections < Sessions::Backend::Base
|
||||||
|
|
||||||
def initialize(user, client, client_id, ttl = 10)
|
def initialize(user, asset_lookup, client, client_id, ttl = 10)
|
||||||
@user = user
|
@user = user
|
||||||
@client = client
|
@client = client
|
||||||
@client_id = client_id
|
@client_id = client_id
|
||||||
@ttl = ttl
|
@ttl = ttl
|
||||||
|
@asset_lookup = asset_lookup
|
||||||
@backends = backend
|
@backends = backend
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -35,7 +36,7 @@ class Sessions::Backend::Collections
|
||||||
next if file.classify == 'Sessions::Backend::Collections::Base'
|
next if file.classify == 'Sessions::Backend::Collections::Base'
|
||||||
#puts "LOAD #{file.classify}---"
|
#puts "LOAD #{file.classify}---"
|
||||||
#next if file == ''
|
#next if file == ''
|
||||||
backend = file.classify.constantize.new(@user, @client, @client_id, @ttl)
|
backend = file.classify.constantize.new(@user, @asset_lookup, @client, @client_id, @ttl)
|
||||||
if backend
|
if backend
|
||||||
backends.push backend
|
backends.push backend
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
class Sessions::Backend::Collections::Base
|
class Sessions::Backend::Collections::Base < Sessions::Backend::Base
|
||||||
class << self; attr_accessor :model, :roles, :not_roles end
|
class << self; attr_accessor :model, :roles, :not_roles end
|
||||||
|
|
||||||
def initialize(user, client, client_id, ttl)
|
def initialize(user, asset_lookup, client, client_id, ttl)
|
||||||
@user = user
|
@user = user
|
||||||
@client = client
|
@client = client
|
||||||
@client_id = client_id
|
@client_id = client_id
|
||||||
@ttl = ttl
|
@ttl = ttl
|
||||||
|
@asset_lookup = asset_lookup
|
||||||
@last_change = nil
|
@last_change = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -67,6 +68,7 @@ class Sessions::Backend::Collections::Base
|
||||||
# collect assets
|
# collect assets
|
||||||
assets = {}
|
assets = {}
|
||||||
items.each {|item|
|
items.each {|item|
|
||||||
|
next if !asset_needed?(item)
|
||||||
assets = item.assets(assets)
|
assets = item.assets(assets)
|
||||||
}
|
}
|
||||||
if !@client
|
if !@client
|
||||||
|
|
|
@ -1,13 +1,6 @@
|
||||||
require 'rss'
|
require 'rss'
|
||||||
|
|
||||||
class Sessions::Backend::Rss
|
class Sessions::Backend::Rss < Sessions::Backend::Base
|
||||||
|
|
||||||
def initialize(user, client, client_id, ttl = 30)
|
|
||||||
@user = user
|
|
||||||
@client = client
|
|
||||||
@ttl = ttl
|
|
||||||
@client_id = client_id
|
|
||||||
end
|
|
||||||
|
|
||||||
def collection_key
|
def collection_key
|
||||||
"rss::load::#{self.class}::#{@user.id}"
|
"rss::load::#{self.class}::#{@user.id}"
|
||||||
|
|
|
@ -1,11 +1,4 @@
|
||||||
class Sessions::Backend::TicketCreate
|
class Sessions::Backend::TicketCreate < Sessions::Backend::Base
|
||||||
def initialize(user, client = nil, client_id = nil, ttl = 30)
|
|
||||||
@user = user
|
|
||||||
@client = client
|
|
||||||
@client_id = client_id
|
|
||||||
@ttl = ttl
|
|
||||||
@last_change = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def load
|
def load
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
class Sessions::Backend::TicketOverviewList
|
class Sessions::Backend::TicketOverviewList < Sessions::Backend::Base
|
||||||
|
|
||||||
def self.reset(user_id)
|
def self.reset(user_id)
|
||||||
key = "TicketOverviewPull::#{user_id}"
|
key = "TicketOverviewPull::#{user_id}"
|
||||||
Cache.write(key, { needed: true })
|
Cache.write(key, { needed: true })
|
||||||
end
|
end
|
||||||
|
|
||||||
def initialize(user, client = nil, client_id = nil, ttl = 8)
|
def initialize(user, asset_lookup, client = nil, client_id = nil, ttl = 8)
|
||||||
@user = user
|
@user = user
|
||||||
@client = client
|
@client = client
|
||||||
@client_id = client_id
|
@client_id = client_id
|
||||||
@ttl = ttl
|
@ttl = ttl
|
||||||
|
@asset_lookup = asset_lookup
|
||||||
@last_change = nil
|
@last_change = nil
|
||||||
@last_overview = {}
|
@last_overview = {}
|
||||||
@last_overview_change = nil
|
@last_overview_change = nil
|
||||||
|
@ -96,9 +97,12 @@ class Sessions::Backend::TicketOverviewList
|
||||||
|
|
||||||
assets = {}
|
assets = {}
|
||||||
overview = Overview.lookup(id: index[:overview][:id])
|
overview = Overview.lookup(id: index[:overview][:id])
|
||||||
|
if asset_needed?(overview)
|
||||||
assets = overview.assets(assets)
|
assets = overview.assets(assets)
|
||||||
|
end
|
||||||
index[:tickets].each {|ticket_meta|
|
index[:tickets].each {|ticket_meta|
|
||||||
ticket = Ticket.lookup(id: ticket_meta[:id])
|
ticket = Ticket.lookup(id: ticket_meta[:id])
|
||||||
|
next if !asset_needed?(ticket)
|
||||||
assets = ticket.assets(assets)
|
assets = ticket.assets(assets)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ class Sessions::Client
|
||||||
'Sessions::Backend::TicketCreate',
|
'Sessions::Backend::TicketCreate',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
asset_lookup = {}
|
||||||
backend_pool = []
|
backend_pool = []
|
||||||
user_id_last_run = nil
|
user_id_last_run = nil
|
||||||
loop_count = 0
|
loop_count = 0
|
||||||
|
@ -33,6 +34,7 @@ class Sessions::Client
|
||||||
# init new backends
|
# init new backends
|
||||||
if user_id_last_run != user.id
|
if user_id_last_run != user.id
|
||||||
user_id_last_run = user.id
|
user_id_last_run = user.id
|
||||||
|
asset_lookup = {}
|
||||||
|
|
||||||
# release old objects
|
# release old objects
|
||||||
backend_pool.collect! {
|
backend_pool.collect! {
|
||||||
|
@ -42,7 +44,7 @@ class Sessions::Client
|
||||||
# create new pool
|
# create new pool
|
||||||
backend_pool = []
|
backend_pool = []
|
||||||
backends.each {|backend|
|
backends.each {|backend|
|
||||||
item = backend.constantize.new(user, self, @client_id)
|
item = backend.constantize.new(user, asset_lookup, self, @client_id)
|
||||||
backend_pool.push item
|
backend_pool.push item
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -103,8 +103,8 @@ class SessionBasicTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
UserInfo.current_user_id = 2
|
UserInfo.current_user_id = 2
|
||||||
user = User.lookup(id: 1)
|
user = User.lookup(id: 1)
|
||||||
collection_client1 = Sessions::Backend::Collections::Group.new(user, false, '123-1', 3)
|
collection_client1 = Sessions::Backend::Collections::Group.new(user, {}, false, '123-1', 3)
|
||||||
collection_client2 = Sessions::Backend::Collections::Group.new(user, false, '234-2', 3)
|
collection_client2 = Sessions::Backend::Collections::Group.new(user, {}, false, '234-2', 3)
|
||||||
|
|
||||||
# get whole collections
|
# get whole collections
|
||||||
result1 = collection_client1.push
|
result1 = collection_client1.push
|
||||||
|
@ -190,8 +190,8 @@ class SessionBasicTest < ActiveSupport::TestCase
|
||||||
user = User.lookup(id: 1)
|
user = User.lookup(id: 1)
|
||||||
org = Organization.create( name: 'SomeOrg1::' + rand(999_999).to_s, active: true )
|
org = Organization.create( name: 'SomeOrg1::' + rand(999_999).to_s, active: true )
|
||||||
|
|
||||||
collection_client1 = Sessions::Backend::Collections::Organization.new(user, false, '123-1', 3)
|
collection_client1 = Sessions::Backend::Collections::Organization.new(user, {}, false, '123-1', 3)
|
||||||
collection_client2 = Sessions::Backend::Collections::Organization.new(user, false, '234-2', 3)
|
collection_client2 = Sessions::Backend::Collections::Organization.new(user, {}, false, '234-2', 3)
|
||||||
|
|
||||||
# get whole collections - should be nil, no org exists!
|
# get whole collections - should be nil, no org exists!
|
||||||
result1 = collection_client1.push
|
result1 = collection_client1.push
|
||||||
|
@ -240,7 +240,7 @@ class SessionBasicTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
test 'c rss' do
|
test 'c rss' do
|
||||||
user = User.lookup(id: 1)
|
user = User.lookup(id: 1)
|
||||||
collection_client1 = Sessions::Backend::Rss.new(user, false, '123-1')
|
collection_client1 = Sessions::Backend::Rss.new(user, {}, false, '123-1')
|
||||||
|
|
||||||
# get whole collections
|
# get whole collections
|
||||||
result1 = collection_client1.push
|
result1 = collection_client1.push
|
||||||
|
@ -274,7 +274,7 @@ class SessionBasicTest < ActiveSupport::TestCase
|
||||||
agent1.roles = roles
|
agent1.roles = roles
|
||||||
assert(agent1.save, 'create/update agent1')
|
assert(agent1.save, 'create/update agent1')
|
||||||
|
|
||||||
as_client1 = Sessions::Backend::ActivityStream.new(agent1, false, '123-1', 3)
|
as_client1 = Sessions::Backend::ActivityStream.new(agent1, {}, false, '123-1', 3)
|
||||||
|
|
||||||
# get as stream
|
# get as stream
|
||||||
result1 = as_client1.push
|
result1 = as_client1.push
|
||||||
|
@ -304,7 +304,7 @@ class SessionBasicTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
UserInfo.current_user_id = 2
|
UserInfo.current_user_id = 2
|
||||||
user = User.lookup(id: 1)
|
user = User.lookup(id: 1)
|
||||||
ticket_create_client1 = Sessions::Backend::TicketCreate.new(user, false, '123-1', 3)
|
ticket_create_client1 = Sessions::Backend::TicketCreate.new(user, {}, false, '123-1', 3)
|
||||||
|
|
||||||
# get as stream
|
# get as stream
|
||||||
result1 = ticket_create_client1.push
|
result1 = ticket_create_client1.push
|
||||||
|
|
|
@ -28,7 +28,7 @@ class SessionBasicTicketTest < ActiveSupport::TestCase
|
||||||
Ticket.create(title: 'default overview test', group_id: 1, priority_id: 1, state_id: 1, customer_id: 1)
|
Ticket.create(title: 'default overview test', group_id: 1, priority_id: 1, state_id: 1, customer_id: 1)
|
||||||
|
|
||||||
user = User.lookup(id: agent1.id)
|
user = User.lookup(id: agent1.id)
|
||||||
client1 = Sessions::Backend::TicketOverviewList.new(user, false, '123-1', 5)
|
client1 = Sessions::Backend::TicketOverviewList.new(user, {}, false, '123-1', 5)
|
||||||
|
|
||||||
result1 = client1.push
|
result1 = client1.push
|
||||||
assert(result1, 'check ticket_overview_List')
|
assert(result1, 'check ticket_overview_List')
|
||||||
|
|
|
@ -54,9 +54,9 @@ class SessionCollectionsTest < ActiveSupport::TestCase
|
||||||
customer1.roles = roles
|
customer1.roles = roles
|
||||||
customer1.save
|
customer1.save
|
||||||
|
|
||||||
collection_client1 = Sessions::Backend::Collections.new(agent1, nil, 'aaa-1', 3)
|
collection_client1 = Sessions::Backend::Collections.new(agent1, {}, nil, 'aaa-1', 3)
|
||||||
collection_client2 = Sessions::Backend::Collections.new(agent2, nil, 'bbb-2', 3)
|
collection_client2 = Sessions::Backend::Collections.new(agent2, {}, nil, 'bbb-2', 3)
|
||||||
collection_client3 = Sessions::Backend::Collections.new(customer1, nil, 'ccc-2', 3)
|
collection_client3 = Sessions::Backend::Collections.new(customer1, {}, nil, 'ccc-2', 3)
|
||||||
|
|
||||||
# get whole collections
|
# get whole collections
|
||||||
result1 = collection_client1.push
|
result1 = collection_client1.push
|
||||||
|
|
Loading…
Reference in a new issue