mirror of
https://github.com/thiloho/archtika.git
synced 2025-11-22 02:41:35 +01:00
Add ability to export articles, track publications in json file on NGINX, fix vulnerabilities and refactor
This commit is contained in:
@@ -4,28 +4,32 @@ CREATE FUNCTION internal.cleanup_filesystem ()
|
||||
AS $$
|
||||
DECLARE
|
||||
_website_id UUID;
|
||||
_domain_prefix VARCHAR(16);
|
||||
_base_path CONSTANT TEXT := '/var/www/archtika-websites/';
|
||||
_website_user_id UUID;
|
||||
_website_slug TEXT;
|
||||
_username TEXT;
|
||||
_base_path CONSTANT TEXT := '/var/www/archtika-websites';
|
||||
_preview_path TEXT;
|
||||
_prod_path TEXT;
|
||||
_article_slug TEXT;
|
||||
BEGIN
|
||||
IF TG_TABLE_NAME = 'website' THEN
|
||||
_website_id := OLD.id;
|
||||
_website_user_id = OLD.user_id;
|
||||
_website_slug := OLD.slug;
|
||||
ELSE
|
||||
_website_id := OLD.website_id;
|
||||
END IF;
|
||||
SELECT
|
||||
d.prefix INTO _domain_prefix
|
||||
u.username INTO _username
|
||||
FROM
|
||||
internal.domain_prefix AS d
|
||||
internal.user AS u
|
||||
WHERE
|
||||
d.website_id = _website_id;
|
||||
_preview_path := _base_path || 'previews/' || _website_id;
|
||||
_prod_path := _base_path || COALESCE(_domain_prefix, _website_id::TEXT);
|
||||
u.id = _website_user_id;
|
||||
_preview_path := _base_path || '/previews/' || _website_id;
|
||||
_prod_path := _base_path || '/' || _username || '/' || _website_slug;
|
||||
IF TG_TABLE_NAME = 'website' THEN
|
||||
EXECUTE FORMAT('COPY (SELECT '''') TO PROGRAM ''rm -rf %s''', _preview_path);
|
||||
EXECUTE FORMAT('COPY (SELECT '''') TO PROGRAM ''rm -rf %s''', _prod_path);
|
||||
EXECUTE FORMAT('COPY (SELECT 1) TO PROGRAM ''rm -rf %s''', _preview_path);
|
||||
EXECUTE FORMAT('COPY (SELECT 1) TO PROGRAM ''rm -rf %s''', _prod_path);
|
||||
ELSIF TG_TABLE_NAME = 'article' THEN
|
||||
SELECT
|
||||
a.slug INTO _article_slug
|
||||
@@ -33,11 +37,7 @@ BEGIN
|
||||
internal.article AS a
|
||||
WHERE
|
||||
a.id = OLD.id;
|
||||
EXECUTE FORMAT('COPY (SELECT '''') TO PROGRAM ''rm -f %s/articles/%s.html''', _preview_path, _article_slug);
|
||||
EXECUTE FORMAT('COPY (SELECT '''') TO PROGRAM ''rm -f %s/articles/%s.html''', _prod_path, _article_slug);
|
||||
ELSIF TG_TABLE_NAME = 'legal_information' THEN
|
||||
EXECUTE FORMAT('COPY (SELECT '''') TO PROGRAM ''rm -f %s/legal-information.html''', _preview_path);
|
||||
EXECUTE FORMAT('COPY (SELECT '''') TO PROGRAM ''rm -f %s/legal-information.html''', _prod_path);
|
||||
EXECUTE FORMAT('COPY (SELECT 1) TO PROGRAM ''rm -f %s/articles/%s.html''', _preview_path, _article_slug);
|
||||
END IF;
|
||||
RETURN COALESCE(NEW, OLD);
|
||||
END;
|
||||
@@ -46,7 +46,7 @@ LANGUAGE plpgsql
|
||||
SECURITY DEFINER;
|
||||
|
||||
CREATE TRIGGER _cleanup_filesystem_website
|
||||
BEFORE DELETE ON internal.website
|
||||
BEFORE UPDATE OR DELETE ON internal.website
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION internal.cleanup_filesystem ();
|
||||
|
||||
@@ -55,17 +55,10 @@ CREATE TRIGGER _cleanup_filesystem_article
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION internal.cleanup_filesystem ();
|
||||
|
||||
CREATE TRIGGER _cleanup_filesystem_legal_information
|
||||
BEFORE DELETE ON internal.legal_information
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION internal.cleanup_filesystem ();
|
||||
|
||||
-- migrate:down
|
||||
DROP TRIGGER _cleanup_filesystem_website ON internal.website;
|
||||
|
||||
DROP TRIGGER _cleanup_filesystem_article ON internal.article;
|
||||
|
||||
DROP TRIGGER _cleanup_filesystem_legal_information ON internal.legal_information;
|
||||
|
||||
DROP FUNCTION internal.cleanup_filesystem;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user