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 crate::encryption;
use crate::include_file;
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 {
let mut rng = rand::thread_rng();
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;
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 {
i = j;
break;
}
}
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();
@ -37,14 +64,14 @@ fn switch_music(event: &mut JsonValue, index: i32) {
is_cleared: 0,
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) {
if event["event_data"]["star_event"]["star_level"].as_i32().unwrap() != 0 {
if event["star_event"]["star_level"].as_i32().unwrap() != 0 {
return;
}
event["event_data"]["star_event"]["star_level"] = 1.into();
event["star_event"]["star_level"] = 1.into();
switch_music(event, 1);
switch_music(event, 2);
switch_music(event, 3);
@ -54,59 +81,54 @@ fn init_star_event(event: &mut JsonValue) {
pub fn event(req: HttpRequest, body: String) -> Option<JsonValue> {
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);
userdata::save_acc_event(&key, event.clone());
Some(event["event_data"].clone())
Some(event)
}
pub fn star_event(req: HttpRequest, body: String) -> Option<JsonValue> {
let key = global::get_login(req.headers(), &body);
let mut event = userdata::get_acc_event(&key);
init_star_event(&mut event);
let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap();
userdata::save_acc_event(&key, event.clone());
let event = get_event_data(&key, body["master_event_id"].as_i64().unwrap());
Some(object!{
star_event: event["event_data"]["star_event"].clone(),
star_event: event["star_event"].clone(),
gift_list: [],
reward_list: []
})
}
//todo - randomize
pub fn change_target_music(req: HttpRequest, body: String) -> Option<JsonValue> {
let key = global::get_login(req.headers(), &body);
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());
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> {
let key = global::get_login(req.headers(), &body);
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(),
rank: 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!{
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!(
uid,
include_file!("src/router/userdata/new_user_event.json")
"{}"
));
DATABASE.lock_and_exec("INSERT INTO eventloginbonus (user_id, eventloginbonus) VALUES (?1, ?2)", params!(
uid,
@ -254,7 +254,7 @@ pub fn get_acc_chats(auth_key: &str) -> JsonValue {
pub fn get_acc_event(auth_key: &str) -> JsonValue {
let event = get_data(auth_key, "event");
if event.is_empty() {
return json::parse(&include_file!("src/router/userdata/new_user_event.json")).unwrap();
return object!{};
}
event
}

View file

@ -1,24 +1,21 @@
{
"event_data": {
"point_ranking": {
"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
}
"point_ranking": {
"point": 0
},
"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
}
}