Skip to content

Commit ded1cd0

Browse files
committed
once_cellをやめて取得済みの言語に関してはsimplified_languageが呼ばれないように修正
1 parent 9e10161 commit ded1cd0

File tree

3 files changed

+7
-12
lines changed

3 files changed

+7
-12
lines changed

atcoder-problems-backend/Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

atcoder-problems-backend/sql-client/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,3 @@ anyhow = "1.0"
1616
tokio = { version = "1.16", features = ["macros"] }
1717
regex = "1"
1818
chrono = "0.4"
19-
once_cell = "1.12.0"

atcoder-problems-backend/sql-client/src/language_count.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@ use crate::models::{Submission, UserLanguageCount, UserLanguageCountRank, UserPr
22
use crate::{PgPool, MAX_INSERT_ROWS};
33
use anyhow::Result;
44
use async_trait::async_trait;
5+
use regex::Regex;
56
use sqlx::postgres::PgRow;
67
use sqlx::Row;
78
use std::collections::{BTreeMap, BTreeSet};
89
use std::ops::Range;
910

10-
macro_rules! regex {
11-
($re:literal $(,)?) => {{
12-
static RE: once_cell::sync::OnceCell<regex::Regex> = once_cell::sync::OnceCell::new();
13-
RE.get_or_init(|| regex::Regex::new($re).unwrap())
14-
}};
15-
}
16-
1711
#[async_trait]
1812
pub trait LanguageCountClient {
1913
async fn update_language_count(
@@ -42,6 +36,7 @@ impl LanguageCountClient for PgPool {
4236
submissions: &[Submission],
4337
current_counts: &[UserLanguageCount],
4438
) -> Result<()> {
39+
let mut simplified_languages = BTreeMap::new();
4540
let mut language_count = submissions
4641
.iter()
4742
.map(|s| {
@@ -54,8 +49,10 @@ impl LanguageCountClient for PgPool {
5449
.fold(
5550
BTreeMap::new(),
5651
|mut map, (user_id, problem_id, language)| {
57-
let simplified_language = simplify_language(language);
58-
map.entry((user_id, simplified_language))
52+
let simplified_language = simplified_languages
53+
.entry(language)
54+
.or_insert_with(|| simplify_language(language));
55+
map.entry((user_id, simplified_language.to_string()))
5956
.or_insert_with(BTreeSet::new)
6057
.insert(problem_id);
6158
map
@@ -196,7 +193,7 @@ impl LanguageCountClient for PgPool {
196193
}
197194

198195
fn simplify_language(lang: &str) -> String {
199-
let re = regex!(r"\d*\s*\(.*\)");
196+
let re = Regex::new(r"\d*\s*\(.*\)").unwrap();
200197
if lang.starts_with("Perl6") {
201198
"Raku".to_string()
202199
} else {

0 commit comments

Comments
 (0)