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