cargo fmt
This commit is contained in:
40
src/db.rs
40
src/db.rs
@@ -13,33 +13,55 @@ pub const N_STATEMENTS: usize = 4;
|
|||||||
|
|
||||||
pub async fn get_link(state: &Mutex<GlobalState>, link: &str) -> Result<Option<String>, Error> {
|
pub async fn get_link(state: &Mutex<GlobalState>, link: &str) -> Result<Option<String>, Error> {
|
||||||
let lock = state.lock().await;
|
let lock = state.lock().await;
|
||||||
Ok(lock.db_client.query_opt(&lock.statements[STATEMENT_GET_LINK], &[&link]).await?.map(|row| row.get(0)))
|
Ok(lock
|
||||||
|
.db_client
|
||||||
|
.query_opt(&lock.statements[STATEMENT_GET_LINK], &[&link])
|
||||||
|
.await?
|
||||||
|
.map(|row| row.get(0)))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn add_link(state: &Mutex<GlobalState>, link: &str, url: &str) -> Result<(), Error> {
|
pub async fn add_link(state: &Mutex<GlobalState>, link: &str, url: &str) -> Result<(), Error> {
|
||||||
let lock = state.lock().await;
|
let lock = state.lock().await;
|
||||||
lock.db_client.execute(&lock.statements[STATEMENT_ADD_LINK], &[&link, &url]).await?;
|
lock.db_client
|
||||||
|
.execute(&lock.statements[STATEMENT_ADD_LINK], &[&link, &url])
|
||||||
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn add_temporary_link(state: &Mutex<GlobalState>, link: &str, url: &str, ttl: u64) -> Result<(), Error> {
|
pub async fn add_temporary_link(
|
||||||
|
state: &Mutex<GlobalState>,
|
||||||
|
link: &str,
|
||||||
|
url: &str,
|
||||||
|
ttl: u64,
|
||||||
|
) -> Result<(), Error> {
|
||||||
let time = SystemTime::now() + Duration::from_secs(ttl);
|
let time = SystemTime::now() + Duration::from_secs(ttl);
|
||||||
let lock = state.lock().await;
|
let lock = state.lock().await;
|
||||||
lock.db_client.execute(&lock.statements[STATEMENT_ADD_TEMP_LINK], &[&link, &url, &time]).await?;
|
lock.db_client
|
||||||
|
.execute(
|
||||||
|
&lock.statements[STATEMENT_ADD_TEMP_LINK],
|
||||||
|
&[&link, &url, &time],
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn delete_expired_links(state: &Mutex<GlobalState>) -> Result<(), Error> {
|
pub async fn delete_expired_links(state: &Mutex<GlobalState>) -> Result<(), Error> {
|
||||||
let lock = state.lock().await;
|
let lock = state.lock().await;
|
||||||
lock.db_client.execute(&lock.statements[STATEMENT_DELETE_EXPIRED], &[]).await?;
|
lock.db_client
|
||||||
|
.execute(&lock.statements[STATEMENT_DELETE_EXPIRED], &[])
|
||||||
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn prepare_statements(db: &Client) -> Result<[Statement; N_STATEMENTS], Error> {
|
pub async fn prepare_statements(db: &Client) -> Result<[Statement; N_STATEMENTS], Error> {
|
||||||
Ok([db.prepare("SELECT url FROM links WHERE id = $1").await?,
|
Ok([
|
||||||
db.prepare("INSERT INTO links (id, url) VALUES ($1, $2)").await?,
|
db.prepare("SELECT url FROM links WHERE id = $1").await?,
|
||||||
db.prepare("INSERT INTO links (id, url, valid_until) VALUES ($1, $2, $3)").await?,
|
db.prepare("INSERT INTO links (id, url) VALUES ($1, $2)")
|
||||||
db.prepare("DELETE FROM links WHERE valid_until < NOW()").await?
|
.await?,
|
||||||
|
db.prepare("INSERT INTO links (id, url, valid_until) VALUES ($1, $2, $3)")
|
||||||
|
.await?,
|
||||||
|
db.prepare("DELETE FROM links WHERE valid_until < NOW()")
|
||||||
|
.await?,
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,12 @@ pub fn generate_link_id(length: u32) -> String {
|
|||||||
let alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
|
let alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
|
||||||
let mut link = String::with_capacity(length as usize);
|
let mut link = String::with_capacity(length as usize);
|
||||||
for _ in 0..length {
|
for _ in 0..length {
|
||||||
link.push(alphabet.chars().nth(rng.sample(Uniform::new(0u8, 64u8)) as usize).unwrap());
|
link.push(
|
||||||
|
alphabet
|
||||||
|
.chars()
|
||||||
|
.nth(rng.sample(Uniform::new(0u8, 64u8)) as usize)
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if link == "create" || link == "p" {
|
if link == "create" || link == "p" {
|
||||||
return generate_link_id(length);
|
return generate_link_id(length);
|
||||||
|
|||||||
Reference in New Issue
Block a user