feat: add DB method to check if hostname exists
This commit is contained in:
parent
74a33cf044
commit
e5450801c1
2 changed files with 49 additions and 2 deletions
|
@ -77,6 +77,26 @@
|
||||||
},
|
},
|
||||||
"query": "UPDATE librepages_users set name = $1\n WHERE name = $2"
|
"query": "UPDATE librepages_users set name = $1\n WHERE name = $2"
|
||||||
},
|
},
|
||||||
|
"3705b8869aab99d749c08d9c9633931f0b74216957b6a2881bd56a33c33a8c47": {
|
||||||
|
"describe": {
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"name": "exists",
|
||||||
|
"ordinal": 0,
|
||||||
|
"type_info": "Bool"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nullable": [
|
||||||
|
null
|
||||||
|
],
|
||||||
|
"parameters": {
|
||||||
|
"Left": [
|
||||||
|
"Text"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"query": "SELECT EXISTS (SELECT 1 from librepages_sites WHERE hostname = $1)"
|
||||||
|
},
|
||||||
"416b9f0412f0d7ee05d4a350839c5a6d1e06c1d7f8942744f6d806ddc47084c2": {
|
"416b9f0412f0d7ee05d4a350839c5a6d1e06c1d7f8942744f6d806ddc47084c2": {
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [],
|
"columns": [],
|
||||||
|
|
31
src/db.rs
31
src/db.rs
|
@ -365,6 +365,24 @@ impl Database {
|
||||||
.map_err(|e| map_row_not_found_err(e, ServiceError::WebsiteNotFound))?;
|
.map_err(|e| map_row_not_found_err(e, ServiceError::WebsiteNotFound))?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// check if hostname exists
|
||||||
|
pub async fn hostname_exists(&self, hostname: &str) -> ServiceResult<bool> {
|
||||||
|
let res = sqlx::query!(
|
||||||
|
"SELECT EXISTS (SELECT 1 from librepages_sites WHERE hostname = $1)",
|
||||||
|
hostname,
|
||||||
|
)
|
||||||
|
.fetch_one(&self.pool)
|
||||||
|
.await
|
||||||
|
.map_err(map_register_err)?;
|
||||||
|
|
||||||
|
let mut resp = false;
|
||||||
|
if let Some(x) = res.exists {
|
||||||
|
resp = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(resp)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
struct InnerSite {
|
struct InnerSite {
|
||||||
site_secret: String,
|
site_secret: String,
|
||||||
|
@ -635,7 +653,6 @@ mod tests {
|
||||||
|
|
||||||
db.register(&p).await.unwrap();
|
db.register(&p).await.unwrap();
|
||||||
|
|
||||||
// testing adding site
|
|
||||||
let site = Site {
|
let site = Site {
|
||||||
site_secret: "foobar".into(),
|
site_secret: "foobar".into(),
|
||||||
repo_url: "https://git.batsense.net/LibrePages/librepages.git".into(),
|
repo_url: "https://git.batsense.net/LibrePages/librepages.git".into(),
|
||||||
|
@ -643,8 +660,16 @@ mod tests {
|
||||||
hostname: "db_works.tests.librepages.librepages.org".into(),
|
hostname: "db_works.tests.librepages.librepages.org".into(),
|
||||||
owner: p.username.into(),
|
owner: p.username.into(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// test if hostname exists. Should be false
|
||||||
|
assert!(!db.hostname_exists(&site.hostname).await.unwrap());
|
||||||
|
|
||||||
|
// testing adding site
|
||||||
db.add_site(&site).await.unwrap();
|
db.add_site(&site).await.unwrap();
|
||||||
|
|
||||||
|
// test if hostname exists. Should be true
|
||||||
|
assert!(db.hostname_exists(&site.hostname).await.unwrap());
|
||||||
|
|
||||||
// get site
|
// get site
|
||||||
let db_site = db.get_site(p.username, &site.hostname).await.unwrap();
|
let db_site = db.get_site(p.username, &site.hostname).await.unwrap();
|
||||||
assert_eq!(db_site, site);
|
assert_eq!(db_site, site);
|
||||||
|
@ -662,6 +687,8 @@ mod tests {
|
||||||
|
|
||||||
// delete site
|
// delete site
|
||||||
db.delete_site(p.username, &site.hostname).await.unwrap();
|
db.delete_site(p.username, &site.hostname).await.unwrap();
|
||||||
assert!(db.list_all_sites(p.username).await.unwrap().is_empty());
|
|
||||||
|
// test if hostname exists. Should be false
|
||||||
|
assert!(!db.hostname_exists(&site.hostname).await.unwrap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue