Skip to content

Commit

Permalink
移除 CourseTable.
Browse files Browse the repository at this point in the history
  • Loading branch information
worksoup committed May 10, 2024
1 parent 53338fc commit c1eff37
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 99 deletions.
30 changes: 15 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

111 changes: 45 additions & 66 deletions src/cli/location.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ use cxsign::{
},
Location, LocationWithRange,
};
use log::{debug, error, warn};
use log::{error, warn};
use std::{collections::HashMap, path::PathBuf};

#[derive(Subcommand, Debug)]
Expand Down Expand Up @@ -367,80 +367,59 @@ pub fn parse_location_sub_command(db: &DataBase, sub_command: LocationSubCommand
}
}
LocationSubCommand::Export { output, course } => {
let mut contents = String::new();
let locations = location_table.get_locations();
let mut len = 0;
for content in locations
.into_iter()
.map(|(k, (course_id, location))| {
let aliases = alias_table.get_aliases(k);
let mut aliases_contents = String::new();
if !aliases.is_empty() {
aliases_contents.push_str(&aliases[0]);
for alias in aliases.iter().skip(1) {
aliases_contents.push('/');
aliases_contents.push_str(alias);
}
}
debug!("{aliases:?}");
format!("{}${}${}\n", course_id, location, aliases_contents)
})
.chain(
course
.and_then(|course_id| {
let mut courses = HashMap::new();
let table = AccountTable::from_ref(db);
for session in table.get_sessions().values() {
match cxsign::Course::get_courses(&session) {
Ok(courses_) => {
for c in courses_ {
courses.insert(c.get_id(), c);
}
}
Err(e) => {
warn!(
"未能获取用户[{}]的课程,错误信息:{e}.",
session.get_stu_name()
);
let mut contents = location_table.export();
for content in {
course
.and_then(|course_id| {
let account_table = AccountTable::from_ref(db);
let sessions = account_table.get_sessions();
let mut courses = HashMap::new();
for session in sessions.values() {
match cxsign::Course::get_courses(&session) {
Ok(courses_) => {
for c in courses_ {
courses.insert(c.get_id(), c);
}
}
Err(e) => {
warn!(
"未能获取用户[{}]的课程,错误信息:{e}.",
session.get_stu_name()
);
}
}
courses.get(&course_id).and_then(|course| {
let account_table = AccountTable::from_ref(db);
let sessions = account_table.get_sessions();
sessions.values().next().map(|session| {
let mut contents = Vec::new();
match LocationWithRange::from_log(session, course) {
Ok(locations) => {
if locations.is_empty() {
warn!("没有从该课程中获取到位置信息。");
}
for (_, l) in locations {
contents.push(format!(
"{}${}${}\n",
course_id,
l.to_shifted_location(),
""
));
}
}
courses.get(&course_id).and_then(|course| {
sessions.values().next().map(|session| {
let mut contents = Vec::new();
match LocationWithRange::from_log(session, course) {
Ok(locations) => {
if locations.is_empty() {
warn!("没有从该课程中获取到位置信息。");
}
Err(e) => {
warn!("遇到了问题:{e}");
for (_, l) in locations {
contents.push(format!(
"{}${}${}\n",
course_id,
l.to_shifted_location(),
""
));
}
}
contents.into_iter()
})
Err(e) => {
warn!("遇到了问题:{e}");
}
}
contents.into_iter()
})
})
.into_iter()
.flatten(),
)
.enumerate()
{
len = content.0;
contents += content.1.as_str()
})
.into_iter()
.flatten()
} {
contents += content.as_str()
}
if len == 0 {
if contents.is_empty() {
warn!("没有获取到位置,不做任何事情。")
} else if let Some(output) = output {
let _ = std::fs::write(output, contents)
Expand Down
36 changes: 18 additions & 18 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ fn main() {
let table = AccountTable::from_ref(&db);
let accounts = table.get_accounts();
if fresh {
for (uname, (ref enc_pwd, _)) in accounts {
let session = table.relogin(uname.clone(), enc_pwd);
for (cxsign::UnameAndEncPwdPair { uname, enc_pwd }, _) in accounts {
let session = table.relogin(uname.clone(), &enc_pwd);
match session {
Ok(session) => info!(
"刷新账号 [{uname}](用户名:{})成功!",
Expand All @@ -125,7 +125,7 @@ fn main() {
// 列出所有账号。
let accounts = table.get_accounts();
for a in accounts {
info!("{}, {}", a.0, a.1 .1);
info!("{}, {}", a.0.uname, a.1);
}
}
MainCommand::Courses { accounts } => {
Expand All @@ -140,7 +140,7 @@ fn main() {
};
// 获取课程信息。
let mut courses = HashMap::new();
for (_, session) in sessions {
for session in sessions.values() {
match cxsign::Course::get_courses(&session) {
Ok(courses_) => {
for c in courses_ {
Expand Down Expand Up @@ -194,23 +194,23 @@ fn main() {
}
MainCommand::List { course, all } => {
let sessions = AccountTable::from_ref(&db).get_sessions();
let mut courses = HashMap::new();
for session in sessions.values() {
match cxsign::Course::get_courses(&session) {
Ok(courses_) => {
for c in courses_ {
courses.insert(c.get_id(), c);
if let Some(course) = course {
let mut courses = HashMap::new();
for session in sessions.values() {
match cxsign::Course::get_courses(&session) {
Ok(courses_) => {
for c in courses_ {
courses.insert(c.get_id(), c);
}
}
Err(e) => {
warn!(
"未能获取用户[{}]的课程,错误信息:{e}.",
session.get_stu_name()
);
}
}
Err(e) => {
warn!(
"未能获取用户[{}]的课程,错误信息:{e}.",
session.get_stu_name()
);
}
}
}
if let Some(course) = course {
let (a, n) = if let Some(course) = courses.get(&course)
&& let Some(session) = sessions.values().next()
&& let Ok((a, n, _)) = Activity::get_course_activities(
Expand Down

0 comments on commit c1eff37

Please sign in to comment.