Module: Dialog::RedisCached
- Defined in:
- lib/storage/redis/rediscached.rb
Class Method Summary collapse
- .areaDescr(args) ⇒ Object
- .pullCached(args) ⇒ Object
- .pushCached(args) ⇒ Object
- .pushCachedContext(args) ⇒ Object
- .redisWrite_ChatCached(vals, args) ⇒ Object
Class Method Details
.areaDescr(args) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/storage/redis/rediscached.rb', line 17 def areaDescr(args) case args[:x][:redis][:region] when 'chat' args[:x][:redis][:area] = args[:mmsg][:fqndata][:o][:chat][:id] args[:pushCache] = true if args[:x][:redis][:territory] == 'context' when 'user' args[:x][:redis][:area] = args[:mmsg][:user_id] end end |
.pullCached(args) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/storage/redis/rediscached.rb', line 28 def pullCached(args) # Using a "REGION -> AREA -> TERRITORY" semantics # Means: hash 'REGION:AREA' key 'TERRITORY' areaDescr(args) # redis ||= Redis.new(path: Bot.configuration.redis_url) ### May be BUG - needs additional Redis connection a = Dialog::redis.hmget("#{args[:x][:redis][:region]}:#{args[:x][:redis][:area]}", ":#{args[:x][:redis][:territory]}")[0] # possible BUG - first array element Dialog.logger.debug "Redis Request: \"#{args[:x][:redis][:region]}:#{args[:x][:redis][:area]}\" Key: \":#{args[:x][:redis][:territory]}\" Answer: \"#{a}\", x: #{args[:x][:redis]}" if a.nil? and args[:pushCache] == true a = pushCached(args) end Dialog.logger.debug "Using RedisCached for the upper request" Dialog.clearRedis(args) a end |
.pushCached(args) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/storage/redis/rediscached.rb', line 45 def pushCached(args) areaDescr(args) Dialog.logger.debug "Redis pushToCache, area::#{args[:x][:redis][:area]}, region::#{args[:x][:redis][:region]}" case args[:x][:redis][:region] when 'chat' case args[:x][:redis][:territory] when 'context' pushCachedContext(args) end when 'user' case args[:x][:redis][:territory] when 'settings' @v = true end end @v=redisWrite_ChatCached({hname: "#{args[:x][:redis][:region]}:#{args[:x][:redis][:area]}", k: args[:x][:redis][:territory], v: @v}, args) @v end |
.pushCachedContext(args) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/storage/redis/rediscached.rb', line 68 def pushCachedContext(args) Dialog.clearApi(args) args[:smsg] = {chat_id: args[:mmsg][:fqndata][:o][:chat][:id]} args[:api][:op] = 'ChatAdministrators' a = Dialog::BotApi.apiActionGet(args) bman = 0; cman = 0 a['result'].each do |user| Dialog.logger.debug "userId #{user['user']['id']}, userStatus #{user['status']}; cliId #{args[:globals][:cliId]}, botId #{Dialog.config.naming.id}" cman = 1 if (user['user']['id'].to_i == args[:globals][:cliId] and user['status'] == 'creator') bman = 1 if (user['user']['id'].to_i == Dialog.config.naming.id and user['status'] == 'administrator') end Dialog.logger.debug "Context args: @bman=#{bman} @cman=#{cman}" @v = Dialog::Naming::ChatContext.Fullman if (bman == 1 and cman == 1) @v = Dialog::Naming::ChatContext.Botman if (bman == 1 and cman == 0) @v = Dialog::Naming::ChatContext.Climan if (bman == 0 and cman == 1) @v = Dialog::Naming::ChatContext.Noman if (bman == 0 and cman == 0) end |
.redisWrite_ChatCached(vals, args) ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/storage/redis/rediscached.rb', line 87 def redisWrite_ChatCached(vals, args) Dialog.redis.hmset("#{vals[:hname]}", ":#{vals[:k]}", vals[:v]) args[:x][:redis].key?(:ttl) ? true : args[:x][:redis][:ttl] = 600 Dialog.redis.expire "#{vals[:hname]}", args[:x][:redis][:ttl] Dialog.logger.debug "Redis SET - #{vals[:hname]} K:#{vals[:k]} V: #{vals[:v]} with ttl #{args[:x][:redis][:ttl]}" vals[:v] end |