feat: delete analytics when webmaster updates publishing status

This commit is contained in:
Aravinth Manivannan
2023-06-30 03:16:43 +05:30
parent 68b59ade8c
commit 679a35216c
6 changed files with 130 additions and 2 deletions

View File

@@ -283,6 +283,12 @@ pub trait MCDatabase: std::marker::Send + std::marker::Sync + CloneSPDatabase {
&self,
psuedo_id: &str,
) -> DBResult<String>;
/// Delete all records for campaign
async fn analytics_delete_all_records_for_campaign(
&self,
campaign_id: &str,
) -> DBResult<()>;
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, PartialEq)]
@@ -389,7 +395,6 @@ pub struct Secret {
/// user's secret
pub secret: String,
}
/// Trait to clone MCDatabase
pub trait CloneSPDatabase {
/// clone DB

View File

@@ -304,6 +304,21 @@ pub async fn database_works<'a, T: MCDatabase>(
.unwrap()
.is_empty());
db.analytics_delete_all_records_for_campaign(c.key)
.await
.unwrap();
assert_eq!(db.analytics_fetch(c.key, 1000, 0).await.unwrap().len(), 0);
let err = db.analytics_get_psuedo_id_from_capmaign_id(c.key).await;
assert!(err.is_err());
assert_eq!(
format!("{:?}", err),
format!("{:?}", Err::<(), errors::DBError>(DBError::CaptchaNotFound))
);
db.analytics_delete_all_records_for_campaign(c.key)
.await
.unwrap();
// analytics end
assert_eq!(db.fetch_solve(p.username, c.key).await.unwrap().len(), 1);
assert_eq!(
db.fetch_config_fetched(p.username, c.key)
@@ -314,7 +329,6 @@ pub async fn database_works<'a, T: MCDatabase>(
);
assert_eq!(db.fetch_solve(p.username, c.key).await.unwrap().len(), 1);
assert_eq!(db.fetch_confirm(p.username, c.key).await.unwrap().len(), 1);
// analytics end
// update captcha key; set key = username;
db.update_captcha_key(p.username, c.key, p.username)