1
0
Fork 0
mirror of https://github.com/SinTan1729/chhoto-url synced 2025-04-28 11:56:52 -05:00

chg: Modify shortlink validation logic to utilize the INDEX

It's no longer necessary to separately validate uniqueness
since the UNIQUE INDEX does that for us already.
This commit is contained in:
Sayantan Santra 2025-04-19 20:04:56 -05:00
parent 88ddb4299a
commit e39578fa02
Signed by: SinTan1729
GPG key ID: 0538DD402EA50898

View file

@ -63,8 +63,8 @@ pub fn is_api_ok(http: HttpRequest) -> Response {
// If the API key isn't set, but an API Key header is provided // If the API key isn't set, but an API Key header is provided
if auth::api_header(&http).is_some() { if auth::api_header(&http).is_some() {
Response { Response {
success: false, success: false,
error: true, error: true,
reason: "An API key was provided, but the 'api_key' environment variable is not configured in the Chhoto URL instance".to_string(), reason: "An API key was provided, but the 'api_key' environment variable is not configured in the Chhoto URL instance".to_string(),
pass: false pass: false
} }
@ -80,7 +80,11 @@ pub fn is_api_ok(http: HttpRequest) -> Response {
} }
// Request the DB for searching an URL // Request the DB for searching an URL
pub fn get_longurl(shortlink: String, db: &Connection, needhits: bool) -> (Option<String>, Option<i64>) { pub fn get_longurl(
shortlink: String,
db: &Connection,
needhits: bool,
) -> (Option<String>, Option<i64>) {
if validate_link(&shortlink) { if validate_link(&shortlink) {
database::find_url(shortlink.as_str(), db, needhits) database::find_url(shortlink.as_str(), db, needhits)
} else { } else {
@ -123,18 +127,14 @@ pub fn add_link(req: String, db: &Connection) -> (bool, String) {
chunks.shortlink = gen_link(style, len); chunks.shortlink = gen_link(style, len);
} }
if validate_link(chunks.shortlink.as_str()) if validate_link(chunks.shortlink.as_str()) {
&& get_longurl(chunks.shortlink.clone(), db, false).0.is_none() if database::add_link(chunks.shortlink.clone(), chunks.longlink, db) {
{ (true, chunks.shortlink)
( } else {
database::add_link(chunks.shortlink.clone(), chunks.longlink, db), (false, String::from("Short URL is already in use!"))
chunks.shortlink, }
)
} else { } else {
( (false, String::from("Short URL is not valid!"))
false,
String::from("Short URL not valid or already in use!"),
)
} }
} }