class RedisClient
- RedisClient
- Reference
- Object
Defined in:
redis_client.crConstant Summary
-
CONNECTION_TIMEOUT =
5 -
Log =
JosieHealth::Utils::Log -
OAUTH_STATE_TTL =
600 -
READ_TIMEOUT =
10 -
RETRY_ATTEMPTS =
3 -
RETRY_DELAY =
500.milliseconds -
VWRAPPED_JOB_TTL =
900 -
TTL constants
Constructors
Instance Method Summary
- #clear_vwrapped_active(user : String) : Bool
-
#close
Close connection
- #consume_irc_auth(token : String) : Hash(String, String) | Nil
-
#consume_oauth_state(state : String) : Hash(String, String) | Nil
Get and delete OAuth state (one-time use)
-
#count_user_keys(user_id : String) : Int32
Count user's API keys (for rate limiting)
-
#delete_all_user_data(user_id : String) : Hash(String, Int32)
Delete all data for a user - returns count of deleted items
-
#delete_dose(user : String, timestamp : String) : Bool
Delete a specific dose by timestamp
-
#fetch_csv_content : String
Get all doses for a user in CSV format
- #get_alias(user_id : String, alias_name : String) : String | Nil
-
#get_all_dose_keys : Array(String)
Get all dose keys from Redis
- #get_all_user_dose_keys(user : String) : Array(String)
-
#get_api_key_data(key_hash : String) : Hash(String, String) | Nil
Get full API key data
-
#get_api_key_user(key_hash : String) : String | Nil
Get user_id from API key hash, returns nil if key not found
-
#get_dose(user : String, timestamp : String) : Hash(String, String) | Nil
Get a specific dose by timestamp
-
#get_dose_data(dose_key : String) : Hash(String, String)
Get dose data for a specific key
- #get_due_reminders(current_time : Int64 = Time.utc.to_unix) : Array(Hash(String, String))
- #get_irc_auth_request(token : String) : Hash(String, String) | Nil
- #get_linked_accounts(user : String) : Array(String)
- #get_primary_account(user : String) : String | Nil
-
#get_recent_doses(user : String, count : Int32 = 5) : Array(Hash(String, String))
Get recent doses for lastdose functionality
- #get_user_aliases(user_id : String) : Hash(String, String)
-
#get_user_by_discord_id(discord_id : String) : String | Nil
Get user_id from Discord ID
- #get_user_by_irc(network : String, nick : String) : String | Nil
-
#get_user_data_stats(user_id : String) : Hash(String, Int32)
Get counts of all user data
-
#get_user_doses(user : String, limit : Int32 = 100) : Array(Hash(String, String))
Get doses for a specific user
-
#get_user_labs(user : String, limit : Int32 = 100) : Array(Hash(String, String))
Get labs for a user
- #get_user_reminders(user_id : String) : Array(Hash(String, String))
- #get_user_timezone(user_id : String) : String | Nil
-
#get_user_vitals(user : String, limit : Int32 = 100) : Array(Hash(String, String))
Get vitals for a user
- #is_vwrapped_active(user : String) : Bool
- #link_accounts(primary_user : String, secondary_user : String, method : String)
-
#list_user_keys(user_id : String) : Array(Hash(String, String))
List all keys for a user (returns metadata only, not the key itself)
- #mark_irc_auth_verified(token : String, nick : String, account_name : String)
- #migrate_doses(from_user : String, to_user : String) : Int32
-
#ping : Bool
Health check
- #remove_alias(user_id : String, alias_name : String) : Bool
-
#remove_last_dose(user : String) : Bool
Remove last dose for undose functionality
- #remove_reminder(reminder_id : String) : Bool
- #reschedule_reminder(reminder_id : String, new_trigger_time : Int64) : Bool
-
#revoke_api_key(key_hash : String) : Bool
Revoke an API key by its hash
-
#revoke_api_key_by_prefix(user_id : String, prefix : String) : Bool
Revoke an API key by prefix (first 8 chars of hash)
- #set_alias(user_id : String, alias_name : String, doses_string : String)
- #set_user_timezone(user_id : String, timezone : String)
-
#set_vwrapped_active(user : String, ttl_seconds : Int32 = VWRAPPED_JOB_TTL) : Bool
Video job tracking
-
#store_api_key(key_hash : String, user_id : String, discord_id : String, name : String = "default") : Bool
Store a new API key (key_hash is SHA256 of the raw key)
-
#store_discord_mapping(discord_id : String, user_id : String)
Store mapping from Discord ID to user_id
-
#store_dose(timestamp : String, user : String, substance : String, amount : String, route : String, note_text : String = "", normalized_substance : String | Nil = nil, normalized_route : String | Nil = nil, categories : String | Nil = nil, dose_classification : String | Nil = nil, local_timestamp : String | Nil = nil)
Store a dose entry in Redis
- #store_irc_auth_request(token : String, data : Hash(String, String))
- #store_irc_user_mapping(network : String, nick : String, user_id : String)
-
#store_lab(timestamp : String, user : String, test_type : String, value : String, unit : String, reference_range : String, notes : String)
Store lab entry in Redis
-
#store_oauth_state(state : String, data : Hash(String, String), ttl_seconds : Int32 = OAUTH_STATE_TTL)
Store OAuth state token (for CSRF protection)
- #store_reminder(user_id : String, message : String, trigger_time : Int64, channel_id : String, discord_user_id : String, callback_url : String, recurrence : String = "") : String
-
#store_vitals(timestamp : String, user : String, pulse : Int32 | Nil, systolic_bp : Int32 | Nil, diastolic_bp : Int32 | Nil, blood_oxygen : Int32 | Nil, temperature : Float64 | Nil, notes : String)
Store vitals entry in Redis
-
#update_dose(user : String, timestamp : String, fields : Hash(String, String)) : Bool
Update specific fields of a dose
-
#update_dose_data(dose_key : String, data : Hash(String, String))
Update dose data (for migrations)
-
#update_key_last_used(key_hash : String)
Update last_used timestamp for an API key
-
#update_last_dose_annotation(user : String, note_text : String) : Bool
Update annotation on the last dose for a user
Constructor Detail
Instance Method Detail
Get and delete OAuth state (one-time use)
Delete all data for a user - returns count of deleted items
Get user_id from API key hash, returns nil if key not found
Get a specific dose by timestamp
Get recent doses for lastdose functionality
Get doses for a specific user
Get labs for a user
Get vitals for a user
List all keys for a user (returns metadata only, not the key itself)
Revoke an API key by prefix (first 8 chars of hash)
Video job tracking
Store a new API key (key_hash is SHA256 of the raw key)
Store mapping from Discord ID to user_id
Store a dose entry in Redis
Store lab entry in Redis
Store OAuth state token (for CSRF protection)
Store vitals entry in Redis
Update specific fields of a dose
Update dose data (for migrations)
Update annotation on the last dose for a user