Commit 68301a14 authored by Chunchi Che's avatar Chunchi Che

Merge branch 'revert-c9739a80' into 'main'

Revert "Merge branch 'optimize/service/strings' into 'main'"

See merge request !8
parents c9739a80 09ee5611
Pipeline #18819 passed with stages
in 7 minutes and 11 seconds
use diesel_derives::Queryable; use diesel_derives::Queryable;
#[derive(serde::Serialize, serde::Deserialize, Queryable, Clone, Debug, Default, PartialEq, Eq)] #[derive(serde::Serialize, Queryable, Clone, Debug, Default, PartialEq, Eq)]
#[diesel(table_name = datas)] #[diesel(table_name = datas)]
pub struct CardDatas { pub struct CardDatas {
pub id: i64, pub id: i64,
...@@ -17,7 +17,7 @@ pub struct CardDatas { ...@@ -17,7 +17,7 @@ pub struct CardDatas {
} }
// TODO: 这里字段应该命名得更清晰一点 // TODO: 这里字段应该命名得更清晰一点
#[derive(serde::Serialize, serde::Deserialize, Queryable, Clone, Debug, Default, PartialEq, Eq)] #[derive(serde::Serialize, Queryable, Clone, Debug, Default, PartialEq, Eq)]
#[diesel(table_name = texts)] #[diesel(table_name = texts)]
pub struct CardTexts { pub struct CardTexts {
pub id: i64, pub id: i64,
...@@ -40,27 +40,3 @@ pub struct CardTexts { ...@@ -40,27 +40,3 @@ pub struct CardTexts {
pub str15: Option<String>, pub str15: Option<String>,
pub str16: Option<String>, pub str16: Option<String>,
} }
impl CardTexts {
pub fn get_str_by_offset(&self, offset: usize) -> Option<String> {
match offset {
1 => self.str1.to_owned(),
2 => self.str2.to_owned(),
3 => self.str3.to_owned(),
4 => self.str4.to_owned(),
5 => self.str5.to_owned(),
6 => self.str6.to_owned(),
7 => self.str7.to_owned(),
8 => self.str8.to_owned(),
9 => self.str9.to_owned(),
10 => self.str10.to_owned(),
11 => self.str11.to_owned(),
12 => self.str12.to_owned(),
13 => self.str13.to_owned(),
14 => self.str14.to_owned(),
15 => self.str15.to_owned(),
16 => self.str16.to_owned(),
_ => None,
}
}
}
...@@ -36,7 +36,7 @@ pub fn service(param: String) -> String { ...@@ -36,7 +36,7 @@ pub fn service(param: String) -> String {
} }
} }
#[derive(serde::Serialize, serde::Deserialize, Default, Debug)] #[derive(serde::Serialize, Default, Debug)]
pub struct CardMeta { pub struct CardMeta {
pub id: i64, pub id: i64,
pub data: db::CardDatas, pub data: db::CardDatas,
......
//! TODO: 这里应该做依赖注入来实现服务之间调用
mod cards; mod cards;
mod deck; mod deck;
mod strings; mod strings;
pub use cards::{service as cards_service, CardMeta}; pub use cards::service as cards_service;
pub use deck::service as deck_service; pub use deck::service as deck_service;
pub use strings::{service_maker as strings_service, strings_conf_reader}; pub use strings::{service_maker as strings_service, strings_conf_reader};
use super::{cards_service, CardMeta};
use std::{ use std::{
collections::HashMap, collections::HashMap,
fs::File, fs::File,
...@@ -15,23 +14,10 @@ pub fn service_maker(strings_manager: StringsManager) -> impl Fn(String) -> Stri ...@@ -15,23 +14,10 @@ pub fn service_maker(strings_manager: StringsManager) -> impl Fn(String) -> Stri
let (r#type, code) = param.split_once('_').unwrap_or_default(); let (r#type, code) = param.split_once('_').unwrap_or_default();
let code = code.parse::<i64>().unwrap_or_default(); let code = code.parse::<i64>().unwrap_or_default();
if r#type == "!card" { strings_manager
let card_code = (code >> 4) & 0x0fffffff; .get(r#type)
let offset = code & 0xf; .map_or(Some("".to_string()), |hash| hash.get(&code).cloned())
.unwrap_or_default()
let card =
serde_json::from_str::<CardMeta>(cards_service(card_code.to_string()).as_str())
.unwrap_or_default();
card.text
.get_str_by_offset(offset as usize)
.unwrap_or_default()
} else {
strings_manager
.get(r#type)
.map_or(Some("".to_string()), |hash| hash.get(&code).cloned())
.unwrap_or_default()
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment