Clean up event storage

This commit is contained in:
Ethan O'Brien 2024-07-17 21:38:47 -05:00
parent a72a1e7dd6
commit 61789f0165
3 changed files with 66 additions and 47 deletions

View file

@ -3,8 +3,35 @@ use actix_web::HttpRequest;
use rand::Rng; use rand::Rng;
use crate::encryption; use crate::encryption;
use crate::include_file;
use crate::router::{userdata, global, databases}; use crate::router::{userdata, global, databases};
fn get_event_data(key: &str, event_id: i64) -> JsonValue {
let mut event = userdata::get_acc_event(key);
if event[event_id.to_string()].is_empty() {
event[event_id.to_string()] = json::parse(&include_file!("src/router/userdata/new_user_event.json")).unwrap();
let mut ev = event[event_id.to_string()].clone();
init_star_event(&mut ev);
save_event_data(key, event_id, ev);
event = userdata::get_acc_event(key);
}
event[event_id.to_string()].clone()
}
fn save_event_data(key: &str, event_id: i64, data: JsonValue) {
let mut event = userdata::get_acc_event(key);
// Check for old version of event data
if !event["event_data"].is_empty() {
event = object!{};
}
event[event_id.to_string()] = data;
userdata::save_acc_event(key, event);
}
fn get_random_song() -> JsonValue { fn get_random_song() -> JsonValue {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
let random_number = rng.gen_range(0..=databases::LIVES.len()); let random_number = rng.gen_range(0..=databases::LIVES.len());
@ -20,14 +47,14 @@ fn switch_music(event: &mut JsonValue, index: i32) {
} }
let mut i = 0; let mut i = 0;
for (j, live) in event["event_data"]["star_event"]["star_music_list"].members().enumerate() { for (j, live) in event["star_event"]["star_music_list"].members().enumerate() {
if live["position"] == index { if live["position"] == index {
i = j; i = j;
break; break;
} }
} }
if i != 0 { if i != 0 {
event["event_data"]["star_event"]["star_music_list"].array_remove(i); event["star_event"]["star_music_list"].array_remove(i);
} }
let random_song = get_random_song(); let random_song = get_random_song();
@ -37,14 +64,14 @@ fn switch_music(event: &mut JsonValue, index: i32) {
is_cleared: 0, is_cleared: 0,
goal_score: random_song["score"].clone() goal_score: random_song["score"].clone()
}; };
event["event_data"]["star_event"]["star_music_list"].push(to_push).unwrap(); event["star_event"]["star_music_list"].push(to_push).unwrap();
} }
fn init_star_event(event: &mut JsonValue) { fn init_star_event(event: &mut JsonValue) {
if event["event_data"]["star_event"]["star_level"].as_i32().unwrap() != 0 { if event["star_event"]["star_level"].as_i32().unwrap() != 0 {
return; return;
} }
event["event_data"]["star_event"]["star_level"] = 1.into(); event["star_event"]["star_level"] = 1.into();
switch_music(event, 1); switch_music(event, 1);
switch_music(event, 2); switch_music(event, 2);
switch_music(event, 3); switch_music(event, 3);
@ -54,59 +81,54 @@ fn init_star_event(event: &mut JsonValue) {
pub fn event(req: HttpRequest, body: String) -> Option<JsonValue> { pub fn event(req: HttpRequest, body: String) -> Option<JsonValue> {
let key = global::get_login(req.headers(), &body); let key = global::get_login(req.headers(), &body);
let mut event = userdata::get_acc_event(&key); let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap();
let event = get_event_data(&key, body["master_event_id"].as_i64().unwrap());
init_star_event(&mut event); Some(event)
userdata::save_acc_event(&key, event.clone());
Some(event["event_data"].clone())
} }
pub fn star_event(req: HttpRequest, body: String) -> Option<JsonValue> { pub fn star_event(req: HttpRequest, body: String) -> Option<JsonValue> {
let key = global::get_login(req.headers(), &body); let key = global::get_login(req.headers(), &body);
let mut event = userdata::get_acc_event(&key); let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap();
init_star_event(&mut event);
userdata::save_acc_event(&key, event.clone()); let event = get_event_data(&key, body["master_event_id"].as_i64().unwrap());
Some(object!{ Some(object!{
star_event: event["event_data"]["star_event"].clone(), star_event: event["star_event"].clone(),
gift_list: [], gift_list: [],
reward_list: [] reward_list: []
}) })
} }
//todo - randomize
pub fn change_target_music(req: HttpRequest, body: String) -> Option<JsonValue> { pub fn change_target_music(req: HttpRequest, body: String) -> Option<JsonValue> {
let key = global::get_login(req.headers(), &body); let key = global::get_login(req.headers(), &body);
let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap(); let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap();
let mut event = userdata::get_acc_event(&key); let mut event = get_event_data(&key, body["master_event_id"].as_i64().unwrap());
event["event_data"]["star_event"]["music_change_count"] = (event["event_data"]["star_event"]["music_change_count"].as_i32().unwrap() + 1).into(); event["star_event"]["music_change_count"] = (event["star_event"]["music_change_count"].as_i32().unwrap() + 1).into();
switch_music(&mut event, body["position"].as_i32().unwrap()); switch_music(&mut event, body["position"].as_i32().unwrap());
userdata::save_acc_event(&key, event.clone()); save_event_data(&key, body["master_event_id"].as_i64().unwrap(), event.clone());
Some(event["event_data"]["star_event"].clone()) Some(event["star_event"].clone())
} }
pub fn set_member(req: HttpRequest, body: String) -> Option<JsonValue> { pub fn set_member(req: HttpRequest, body: String) -> Option<JsonValue> {
let key = global::get_login(req.headers(), &body); let key = global::get_login(req.headers(), &body);
let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap(); let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap();
let mut event = userdata::get_acc_event(&key); let mut event = get_event_data(&key, body["master_event_id"].as_i64().unwrap());
event["event_data"]["member_ranking"] = object!{ event["member_ranking"] = object!{
master_character_id: body["master_character_id"].clone(), master_character_id: body["master_character_id"].clone(),
rank: 0, rank: 0,
point: 0 point: 0
}; };
userdata::save_acc_event(&key, event.clone()); save_event_data(&key, body["master_event_id"].as_i64().unwrap(), event.clone());
Some(object!{ Some(object!{
event_member: body.clone() event_member: event["member_ranking"].clone()
}) })
} }

View file

@ -136,7 +136,7 @@ fn add_user_to_database(uid: i64, user: JsonValue, user_home: JsonValue, user_mi
)); ));
DATABASE.lock_and_exec("INSERT INTO event (user_id, event) VALUES (?1, ?2)", params!( DATABASE.lock_and_exec("INSERT INTO event (user_id, event) VALUES (?1, ?2)", params!(
uid, uid,
include_file!("src/router/userdata/new_user_event.json") "{}"
)); ));
DATABASE.lock_and_exec("INSERT INTO eventloginbonus (user_id, eventloginbonus) VALUES (?1, ?2)", params!( DATABASE.lock_and_exec("INSERT INTO eventloginbonus (user_id, eventloginbonus) VALUES (?1, ?2)", params!(
uid, uid,
@ -254,7 +254,7 @@ pub fn get_acc_chats(auth_key: &str) -> JsonValue {
pub fn get_acc_event(auth_key: &str) -> JsonValue { pub fn get_acc_event(auth_key: &str) -> JsonValue {
let event = get_data(auth_key, "event"); let event = get_data(auth_key, "event");
if event.is_empty() { if event.is_empty() {
return json::parse(&include_file!("src/router/userdata/new_user_event.json")).unwrap(); return object!{};
} }
event event
} }

View file

@ -1,24 +1,21 @@
{ {
"event_data": { "point_ranking": {
"point_ranking": { "point": 0
"point": 0
},
"score_ranking": [],
"member_ranking": [],
"lottery_box": [],
"mission_list": [],
"policy_agreement": 0,
"incentive_lottery": 0,
"star_event": {
"star_level": 0,
"last_event_star_level": 0,
"star_music_list": [],
"music_change_count": 0,
"star_event_bonus_daily_count": 0,
"star_event_bonus_count": 0,
"star_event_play_times_bonus_count": 0,
"star_assist_bonus": 1
}
}, },
"server_event_data": {} "score_ranking": [],
"member_ranking": [],
"lottery_box": [],
"mission_list": [],
"policy_agreement": 0,
"incentive_lottery": 0,
"star_event": {
"star_level": 0,
"last_event_star_level": 0,
"star_music_list": [],
"music_change_count": 0,
"star_event_bonus_daily_count": 0,
"star_event_bonus_count": 0,
"star_event_play_times_bonus_count": 0,
"star_assist_bonus": 1
}
} }