modify return values further
This commit is contained in:
@ -1,14 +1,15 @@
|
||||
CREATE OR REPLACE FUNCTION public.insert_url(in_url text) RETURNS TABLE (out_url text, out_website_name text)
|
||||
CREATE OR REPLACE FUNCTION public.insert_url(in_url text) RETURNS text
|
||||
LANGUAGE plpgsql STRICT
|
||||
AS $$
|
||||
DECLARE
|
||||
ret_value integer;
|
||||
temp_folder_path text;
|
||||
BEGIN
|
||||
PERFORM * FROM artist_website aw
|
||||
WHERE aw.url = in_url;
|
||||
|
||||
IF FOUND THEN
|
||||
RETURN;
|
||||
RAISE EXCEPTION 'url already exists';
|
||||
END IF;
|
||||
|
||||
INSERT INTO artist_website (url) VALUES (in_url);
|
||||
@ -16,23 +17,23 @@ BEGIN
|
||||
SELECT * INTO ret_value FROM set_artist_name(in_url);
|
||||
IF ret_value <> 0 THEN
|
||||
DELETE FROM artist_website WHERE url = in_url;
|
||||
RETURN;
|
||||
RAISE EXCEPTION 'could not set artist_name';
|
||||
END IF;
|
||||
|
||||
SELECT * INTO ret_value FROM set_website_name(in_url);
|
||||
IF ret_value <> 0 THEN
|
||||
DELETE FROM artist_website WHERE url = in_url;
|
||||
RETURN;
|
||||
RAISE EXCEPTION 'could not set website_name';
|
||||
END IF;
|
||||
|
||||
SELECT * INTO ret_value FROM set_folder_path(in_url);
|
||||
IF ret_value <> 0 THEN
|
||||
DELETE FROM artist_website WHERE url = in_url;
|
||||
RETURN;
|
||||
RAISE EXCEPTION 'could not set folder_path';
|
||||
END IF;
|
||||
|
||||
RETURN QUERY SELECT aw.url, aw.folder_path
|
||||
FROM artist_website aw
|
||||
WHERE aw.url ILIKE in_url;
|
||||
SELECT folder_path INTO temp_folder_path FROM artist_website WHERE url ILIKE in_url;
|
||||
|
||||
RETURN concat(in_url, ' # ', temp_folder_path);
|
||||
END;
|
||||
$$;
|
||||
|
@ -1,22 +1,23 @@
|
||||
CREATE OR REPLACE FUNCTION public.insert_url_with_custom_artist(in_url text, in_artist_name text) RETURNS TABLE (out_url text, out_website_name text)
|
||||
CREATE OR REPLACE FUNCTION public.insert_url_with_custom_artist(in_url text, in_artist_name text) RETURNS text
|
||||
LANGUAGE plpgsql STRICT
|
||||
AS $$
|
||||
DECLARE
|
||||
ret_value integer;
|
||||
temp_artist_id integer;
|
||||
temp_folder_path text;
|
||||
BEGIN
|
||||
PERFORM * FROM artist_website aw
|
||||
WHERE aw.url = in_url;
|
||||
|
||||
IF FOUND THEN
|
||||
RETURN;
|
||||
RAISE EXCEPTION 'url already exists';
|
||||
END IF;
|
||||
|
||||
PERFORM * FROM artist a
|
||||
WHERE a.name = in_artist_name;
|
||||
|
||||
IF FOUND THEN
|
||||
RETURN;
|
||||
RAISE EXCEPTION 'artist already exists';
|
||||
END IF;
|
||||
|
||||
INSERT INTO artist_website (url) VALUES (in_url);
|
||||
@ -31,17 +32,17 @@ BEGIN
|
||||
SELECT * INTO ret_value FROM set_website_name(in_url);
|
||||
IF ret_value <> 0 THEN
|
||||
DELETE FROM artist_website WHERE url = in_url;
|
||||
RETURN;
|
||||
RAISE EXCEPTION 'could not set website_name';
|
||||
END IF;
|
||||
|
||||
SELECT * INTO ret_value FROM set_folder_path(in_url);
|
||||
IF ret_value <> 0 THEN
|
||||
DELETE FROM artist_website WHERE url = in_url;
|
||||
RETURN;
|
||||
RAISE EXCEPTION 'could not set folder_path';
|
||||
END IF;
|
||||
|
||||
RETURN QUERY SELECT aw.url, aw.folder_path
|
||||
FROM artist_website aw
|
||||
WHERE aw.url ILIKE in_url;
|
||||
SELECT folder_path INTO temp_folder_path FROM artist_website WHERE url ILIKE in_url;
|
||||
|
||||
RETURN concat(in_url, ' # ', temp_folder_path);
|
||||
END;
|
||||
$$;
|
||||
|
56
src/main.rs
56
src/main.rs
@ -1,6 +1,7 @@
|
||||
use postgres::{Client, NoTls};
|
||||
use std::{
|
||||
env::args,
|
||||
error::Error,
|
||||
fs::{self, File},
|
||||
io::{self, BufRead, BufReader, Write},
|
||||
};
|
||||
@ -189,12 +190,12 @@ fn import_file(client: &mut postgres::Client, file: Option<String>) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let output = client.query_one("SELECT insert_url($1)", &[&line]).unwrap();
|
||||
|
||||
let result: i32 = output.get(0);
|
||||
if result == 1 {
|
||||
writeln!(fucked_file, "{}", line).unwrap();
|
||||
}
|
||||
match client.query_one("SELECT insert_url($1);", &[&line]) {
|
||||
Ok(_) => break,
|
||||
Err(_) => {
|
||||
writeln!(fucked_file, "{}", line).unwrap();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -210,12 +211,19 @@ fn add_url(client: &mut postgres::Client, uri: Option<String>) {
|
||||
}
|
||||
};
|
||||
|
||||
let output = client.query_one("SELECT insert_url($1);", &[&url]).unwrap();
|
||||
let url: &str = url.trim();
|
||||
|
||||
let result: i32 = output.get(0);
|
||||
if result == 1 {
|
||||
eprintln!("Database didn\'t like your input");
|
||||
}
|
||||
let output = match client.query_one("SELECT insert_url($1);", &[&url]) {
|
||||
Ok(val) => val,
|
||||
Err(val) => {
|
||||
eprintln!("{}", val);
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
let something: String = output.get(0);
|
||||
|
||||
println!("{}", something);
|
||||
}
|
||||
|
||||
fn add_artist_with_custom_name(client: &mut postgres::Client, uri_and_artist: Option<Vec<String>>) {
|
||||
@ -238,17 +246,23 @@ fn add_artist_with_custom_name(client: &mut postgres::Client, uri_and_artist: Op
|
||||
}
|
||||
};
|
||||
|
||||
let output = client
|
||||
.query_one(
|
||||
"SELECT insert_url_with_custom_artist($1, $2);",
|
||||
&[&url, &artist_name],
|
||||
)
|
||||
.unwrap();
|
||||
let url: &str = url.trim();
|
||||
let artist_name: &str = artist_name.trim();
|
||||
|
||||
let result: i32 = output.get(0);
|
||||
if result == 1 {
|
||||
eprintln!("Database didn\'t like your input");
|
||||
}
|
||||
let output = match client.query_one(
|
||||
"SELECT insert_url_with_custom_artist($1, $2);",
|
||||
&[&url, &artist_name],
|
||||
) {
|
||||
Ok(val) => val,
|
||||
Err(val) => {
|
||||
eprintln!("{}", val);
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
let something: String = output.get(0);
|
||||
|
||||
println!("{}", something);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
Reference in New Issue
Block a user