Count number of hits
This commit is contained in:
@@ -1,45 +1,47 @@
|
||||
use sqlite::{open, Row};
|
||||
use rusqlite::Connection;
|
||||
|
||||
pub fn find_url(shortlink: &str) -> String {
|
||||
let db = open("./urls.sqlite").expect("Unable to open database!");
|
||||
let db = Connection::open("./urls.sqlite").expect("Unable to open database!");
|
||||
|
||||
let query = "SELECT long_url FROM urls WHERE short_url = ?";
|
||||
let mut statement = db
|
||||
.prepare_cached("SELECT long_url FROM urls WHERE short_url = ?1")
|
||||
.unwrap();
|
||||
|
||||
let statement: Vec<Row> = db
|
||||
.prepare(query)
|
||||
.unwrap()
|
||||
.into_iter()
|
||||
.bind((1, shortlink))
|
||||
.unwrap()
|
||||
.map(|row| row.unwrap())
|
||||
.collect();
|
||||
let links = statement
|
||||
.query_map([shortlink], |row| Ok(row.get("long_url")?))
|
||||
.unwrap();
|
||||
|
||||
let mut longlink = "";
|
||||
if statement.len() == 1 {
|
||||
longlink = statement[0].read::<&str, _>("long_url");
|
||||
let mut longlink = "".to_string();
|
||||
for link in links {
|
||||
longlink = link.unwrap();
|
||||
}
|
||||
|
||||
String::from(longlink)
|
||||
add_hit(shortlink);
|
||||
longlink
|
||||
}
|
||||
|
||||
pub fn getall() -> Vec<String> {
|
||||
let db = open("./urls.sqlite").expect("Unable to open database!");
|
||||
let query = "SELECT * FROM urls";
|
||||
let db = Connection::open("./urls.sqlite").expect("Unable to open database!");
|
||||
let mut statement = db.prepare_cached("SELECT * FROM urls").unwrap();
|
||||
|
||||
let statement: Vec<Row> = db
|
||||
.prepare(query)
|
||||
.unwrap()
|
||||
.into_iter()
|
||||
.map(|row| row.unwrap())
|
||||
.collect();
|
||||
let mut data = statement.query([]).unwrap();
|
||||
|
||||
let mut links: Vec<String> = Vec::new();
|
||||
for row in statement {
|
||||
let short_url = row.read::<&str, _>("short_url");
|
||||
let long_url = row.read::<&str, _>("long_url");
|
||||
let hits = row.read::<i64, _>("hits");
|
||||
while let Some(row) = data.next().unwrap() {
|
||||
let short_url: String = row.get("short_url").unwrap();
|
||||
let long_url: String = row.get("long_url").unwrap();
|
||||
let hits: i64 = row.get("hits").unwrap();
|
||||
links.push(format!("{short_url},{long_url},{hits}"));
|
||||
}
|
||||
|
||||
links
|
||||
}
|
||||
|
||||
fn add_hit(shortlink: &str) -> () {
|
||||
let db = Connection::open("./urls.sqlite").expect("Unable to open database!");
|
||||
db.execute(
|
||||
"UPDATE urls SET hits = hits + 1 WHERE short_url = ?1",
|
||||
[shortlink],
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user