some plpgsql stuff

This commit is contained in:
2024-11-01 22:36:13 +01:00
parent b0d5dfcf81
commit e776ba0333
4 changed files with 28 additions and 36 deletions

View File

@ -1,5 +0,0 @@
CREATE OR REPLACE PROCEDURE clear_tables() AS $$
DELETE FROM artist_website;
DELETE FROM website;
DELETE FROM artist;
$$ LANGUAGE SQL;

View File

@ -5,12 +5,14 @@ CREATE OR REPLACE PROCEDURE create_tables() AS $$
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 (
@ -19,6 +21,8 @@ CREATE OR REPLACE PROCEDURE create_tables() AS $$
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)
);

18
sql/insert_url.sql Normal file
View File

@ -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;

View File

@ -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;