diff --git a/src/types.rs b/src/types.rs index bb4b563..6cb6bb4 100644 --- a/src/types.rs +++ b/src/types.rs @@ -225,9 +225,15 @@ impl Update for BookAuthor { BEGIN SELECT id INTO book_id FROM books WHERE source = source_ AND remote_id = book_; SELECT id INTO author_id FROM authors WHERE source = source_ AND remote_id = author_; + + IF book_id IS NULL OR author_id IS NULL + RETURN; + END IF; + IF EXISTS (SELECT * FROM book_authors WHERE book = book_id AND author = author_id) THEN RETURN; END IF; + INSERT INTO book_authors (book, author) VALUES (book_id, author_id); END; $$ LANGUAGE plpgsql;