diff --git a/sql/clear_tables.sql b/sql/clear_tables.sql deleted file mode 100644 index 9829ca0..0000000 --- a/sql/clear_tables.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE OR REPLACE PROCEDURE clear_tables() AS $$ - DELETE FROM artist_website; - DELETE FROM website; - DELETE FROM artist; -$$ LANGUAGE SQL; \ No newline at end of file diff --git a/sql/create_tables.sql b/sql/create_tables.sql index 57f8b26..c5b1f7f 100644 --- a/sql/create_tables.sql +++ b/sql/create_tables.sql @@ -2,24 +2,28 @@ CREATE OR REPLACE PROCEDURE create_tables() AS $$ DROP TABLE IF EXISTS artist_website; DROP TABLE IF EXISTS website; DROP TABLE IF EXISTS artist; - + CREATE TABLE IF NOT EXISTS artist ( id serial PRIMARY KEY, - name text NOT NULL + name text NOT NULL, + CONSTRAINT a_name UNIQUE(name) ); - + CREATE TABLE IF NOT EXISTS website ( id serial PRIMARY KEY, - name text NOT NULL + name text NOT NULL, + CONSTRAINT w_name UNIQUE(name) ); - + CREATE TABLE IF NOT EXISTS artist_website ( id serial PRIMARY KEY, url text NOT NULL, folder_path text, website_id integer, artist_id integer, + CONSTRAINT aw_url UNIQUE(url), + CONSTRAINT aw_folder_path UNIQUE(folder_path), CONSTRAINT aw_artist FOREIGN KEY (artist_id) REFERENCES artist (ID), CONSTRAINT aw_website FOREIGN KEY (website_id) REFERENCES website (ID) ); -$$ LANGUAGE SQL; \ No newline at end of file +$$ LANGUAGE SQL; diff --git a/sql/insert_url.sql b/sql/insert_url.sql new file mode 100644 index 0000000..3159eed --- /dev/null +++ b/sql/insert_url.sql @@ -0,0 +1,18 @@ +CREATE OR REPLACE FUNCTION insert_url(in_url text) RETURNS integer AS $$ +BEGIN + PERFORM * FROM artist_website aw + WHERE aw.url = in_url; + + IF FOUND THEN + RETURN 1; + END IF; + + INSERT INTO artist_website (url) VALUES (in_url); + + CALL set_artist_name(in_url); + CALL set_website_name(in_url); + CALL set_folder_path(in_url); + + RETURN 0; +END; +$$ LANGUAGE plpgsql STRICT; \ No newline at end of file diff --git a/sql/set_stuff_trigger.sql b/sql/set_stuff_trigger.sql deleted file mode 100644 index 45f1cab..0000000 --- a/sql/set_stuff_trigger.sql +++ /dev/null @@ -1,25 +0,0 @@ -CREATE OR REPLACE FUNCTION set_stuff() RETURNS trigger AS $$ -DECLARE - temp_url text; -BEGIN - SELECT aw.url INTO temp_url FROM artist_website aw - WHERE aw.id = NEW.id; - - IF NOT FOUND THEN - RAISE EXCEPTION 'No url has been found'; - END IF; - - CALL set_artist_name(NEW.url); - CALL set_website_name(NEW.url); - CALL set_folder_path(NEW.url); - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- DROP TRIGGER IF EXISTS set_stuff_trigger ON artist_website; - -CREATE OR REPLACE TRIGGER set_stuff_trigger AFTER INSERT ON artist_website -FOR EACH ROW EXECUTE PROCEDURE set_stuff(); - -ALTER TABLE artist_website ENABLE TRIGGER set_stuff_trigger; \ No newline at end of file