1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/penpot_ynh.git synced 2024-09-03 19:56:56 +02:00

Merge pull request #11 from YunoHost-Apps/upgrade-v2.0.0

Upgrade to v2.0.0 and add auto-updater
This commit is contained in:
Mateusz 2024-04-20 14:31:06 +02:00 committed by GitHub
commit 75970cbd8d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 209 additions and 113 deletions

View file

@ -18,7 +18,7 @@ It shall NOT be edited by hand.
Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return. Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return.
**Shipped version:** 1.19.3~ynh3 **Shipped version:** 2.0.0~ynh3
## Screenshots ## Screenshots

View file

@ -18,7 +18,7 @@ EZ editatu eskuz.
Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return. Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return.
**Paketatutako bertsioa:** 1.19.3~ynh3 **Paketatutako bertsioa:** 2.0.0~ynh3
## Pantaila-argazkiak ## Pantaila-argazkiak

View file

@ -18,7 +18,7 @@ Il NE doit PAS être modifié à la main.
Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return. Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return.
**Version incluse:** 1.19.3~ynh3 **Version incluse:** 2.0.0~ynh3
## Captures décran ## Captures décran

View file

@ -18,7 +18,7 @@ NON debe editarse manualmente.
Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return. Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return.
**Versión proporcionada:** 1.19.3~ynh3 **Versión proporcionada:** 2.0.0~ynh3
## Capturas de pantalla ## Capturas de pantalla

View file

@ -18,7 +18,7 @@
Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return. Design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return.
**分发版本:** 1.19.3~ynh3 **分发版本:** 2.0.0~ynh3
## 截图 ## 截图

View file

@ -6,7 +6,7 @@ name = "Penpot"
description.en = "Design and prototyping platform" description.en = "Design and prototyping platform"
description.fr = "Plateforme de conception et de prototypage" description.fr = "Plateforme de conception et de prototypage"
version = "1.19.3~ynh3" version = "2.0.0~ynh3"
maintainers = ["orhtej2"] maintainers = ["orhtej2"]
@ -42,8 +42,9 @@ ram.runtime = "50M"
[resources.sources] [resources.sources]
[resources.sources.main] [resources.sources.main]
url = "https://github.com/penpot/penpot/archive/refs/tags/1.19.3.tar.gz" url = "https://github.com/penpot/penpot/archive/refs/tags/2.0.0.tar.gz"
sha256 = "2649db3bd8742540f76f33547095b227e86c5bda74908a900011b8516d4bb3ce" sha256 = "133fc088b2e194ffdd3a9816c7fabcf9630699157ce28a242c81cb6283de6af6"
autoupdate.strategy = "latest_github_tag"
[resources.sources.jdk] [resources.sources.jdk]
amd64.url = "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.3%2B9/OpenJDK21U-jdk_x64_linux_hotspot_21.0.3_9.tar.gz" amd64.url = "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.3%2B9/OpenJDK21U-jdk_x64_linux_hotspot_21.0.3_9.tar.gz"
@ -134,11 +135,9 @@ ram.runtime = "50M"
"woff2", "woff2",
"python3", "python3",
"python3-tabulate", "python3-tabulate",
"fontforge" "fontforge",
"rsync"
] ]
extras.yarn.repo = "deb https://dl.yarnpkg.com/debian/ stable main"
extras.yarn.key = "https://dl.yarnpkg.com/debian/pubkey.gpg"
extras.yarn.packages = "yarn"
[resources.database] [resources.database]
type = "postgresql" type = "postgresql"

View file

@ -5,8 +5,8 @@
#================================================= #=================================================
nodejs_version=20 nodejs_version=20
current_hash="1eaf7b2b4" current_hash="41cdd245"
version="1.19.3-10698-g1eaf7b2b4" version="2.0.0-10698-g41cdd245"
build_date="Mon, 18 Sep 2023 09:14:03 +0000" build_date="Mon, 18 Sep 2023 09:14:03 +0000"
#================================================= #=================================================

View file

@ -64,21 +64,23 @@ chmod -R o-rwx "$install_dir"
ynh_script_progression --message="Building frontend..." --weight=5 ynh_script_progression --message="Building frontend..." --weight=5
pushd $install_dir/build/frontend pushd $install_dir/build/frontend
ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH yarn install --pure-lockfile ynh_exec_warn_less env $ynh_node_load_PATH COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack enable
ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack enable
ynh_exec_warn_less ynh_exec_as "$app" env $ynh_node_load_PATH COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack prepare --activate
ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production COREPACK_ENABLE_DOWNLOAD_PROMPT=0 yarn install --immutable
# ynh_exec_warn_less # ynh_exec_warn_less
ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME clojure -J-Xms100M -J-Xmx800M -J-XX:+UseSerialGC -M:dev:shadow-cljs release main --config-merge "{:release-version \"${current_hash}\"}" ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME NODE_ENV=production clojure -J-Xms100M -J-Xmx800M -J-XX:+UseSerialGC -M:dev:shadow-cljs release main --config-merge "{:release-version \"${current_hash}\"}"
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp build
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp dist:clean
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp dist:copy
ynh_replace_string --match_string="%version%" --replace_string="$version" --target_file="$install_dir/build/frontend/target/dist/index.html" ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn run compile
ynh_replace_string --match_string="%buildDate%" --replace_string="$build_date" --target_file="$install_dir/build/frontend/target/dist/index.html"
echo "$version" > target/version.txt; ynh_replace_string --match_string="%version%" --replace_string="$version" --target_file="$install_dir/build/frontend/resources/public/index.html"
ynh_replace_string --match_string="%buildDate%" --replace_string="$build_date" --target_file="$install_dir/build/frontend/resources/public/index.html"
#echo "$version" > target/version.txt;
popd popd
mkdir -p $install_dir/frontend mkdir -p $install_dir/frontend
mv $install_dir/build/frontend/target/dist/* $install_dir/frontend mv $install_dir/build/frontend/resources/public/* $install_dir/frontend
chown -R $app:www-data $install_dir/frontend chown -R $app:www-data $install_dir/frontend
chmod -R 750 $install_dir/frontend chmod -R 750 $install_dir/frontend
@ -88,6 +90,7 @@ pushd $install_dir/build/backend
mkdir -p target/classes; mkdir -p target/classes;
mkdir -p target/dist; mkdir -p target/dist;
echo "$version" > target/classes/version.txt; echo "$version" > target/classes/version.txt;
cp ../CHANGES.md target/classes/changelog.md;
chown -R $app:$app target chown -R $app:$app target
ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME clojure -T:build jar; ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME clojure -T:build jar;
@ -110,6 +113,9 @@ chmod -R 700 $install_dir/backend
ynh_script_progression --message="Building exporter..." --weight=5 ynh_script_progression --message="Building exporter..." --weight=5
pushd $install_dir/build/exporter pushd $install_dir/build/exporter
ynh_exec_warn_less ynh_exec_as "$app" env $ynh_node_load_PATH corepack prepare --activate
ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH yarn install --immutable
ynh_secure_remove --file="target"
ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME NODE_ENV=production clojure -M:dev:shadow-cljs release main ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME NODE_ENV=production clojure -M:dev:shadow-cljs release main
cp yarn.lock target/ cp yarn.lock target/
cp package.json target/ cp package.json target/
@ -119,14 +125,16 @@ popd
mkdir -p $install_dir/exporter mkdir -p $install_dir/exporter
mv $install_dir/build/exporter/target/* $install_dir/exporter mv $install_dir/build/exporter/target/* $install_dir/exporter
cp $install_dir/build/.yarnrc.yml $install_dir/exporter
chown -R $app:$app $install_dir/exporter chown -R $app:$app $install_dir/exporter
chmod -R 700 $install_dir/exporter chmod -R 700 $install_dir/exporter
ynh_secure_remove --file=$install_dir/.cache ynh_secure_remove --file=$install_dir/.cache
pushd $install_dir/exporter pushd $install_dir/exporter
ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn install --pure-lockfile ynh_exec_warn_less ynh_exec_as "$app" env $ynh_node_load_PATH corepack prepare --activate
ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn --network-timeout 1000000 run playwright install chromium ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn install --immutable
ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn run playwright install chromium
popd popd
ynh_script_progression --message="Cleaning up..." --weight=1 ynh_script_progression --message="Cleaning up..." --weight=1

View file

@ -36,115 +36,122 @@ ynh_use_nodejs
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
ynh_setup_source --dest_dir="$install_dir/jdk" --source_id="jdk" ynh_setup_source --dest_dir="$install_dir/jdk" --source_id="jdk"
export JAVA_HOME=$install_dir/jdk export JAVA_HOME=$install_dir/jdk
chown -R $app:www-data "$install_dir" chown -R $app:www-data "$install_dir"
tmp_dir=$(mktemp -d) tmp_dir=$(mktemp -d)
pushd $tmp_dir pushd $tmp_dir
curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
chmod +x linux-install.sh chmod +x linux-install.sh
ynh_exec_warn_less ./linux-install.sh -p $install_dir/clojure ynh_exec_warn_less ./linux-install.sh -p $install_dir/clojure
popd popd
ynh_secure_remove --file=$tmp_dir ynh_secure_remove --file=$tmp_dir
ynh_setup_source --dest_dir="$install_dir/babashka" --source_id="babashka" ynh_setup_source --dest_dir="$install_dir/babashka" --source_id="babashka"
export PATH=$JAVA_HOME/bin:$install_dir/clojure/bin:$install_dir/babashka:$PATH export PATH=$JAVA_HOME/bin:$install_dir/clojure/bin:$install_dir/babashka:$PATH
ynh_script_progression --message="Upgrading source files..." ynh_script_progression --message="Upgrading source files..."
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$install_dir/build" ynh_setup_source --dest_dir="$install_dir/build"
chmod -R o-rwx "$install_dir" chmod -R o-rwx "$install_dir"
chown -R $app:www-data "$install_dir" chown -R $app:www-data "$install_dir"
ynh_script_progression --message="Building frontend..." --weight=5 ynh_script_progression --message="Building frontend..." --weight=5
pushd $install_dir/build/frontend pushd $install_dir/build/frontend
ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH yarn install --pure-lockfile ynh_exec_warn_less env $ynh_node_load_PATH COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack enable
ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack enable
ynh_exec_warn_less ynh_exec_as "$app" env $ynh_node_load_PATH COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack prepare --activate
ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production COREPACK_ENABLE_DOWNLOAD_PROMPT=0 yarn install --immutable
# ynh_exec_warn_less # ynh_exec_warn_less
ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME clojure -J-Xms100M -J-Xmx800M -J-XX:+UseSerialGC -M:dev:shadow-cljs release main --config-merge "{:release-version \"${current_hash}\"}" ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME NODE_ENV=production clojure -J-Xms100M -J-Xmx800M -J-XX:+UseSerialGC -M:dev:shadow-cljs release main --config-merge "{:release-version \"${current_hash}\"}"
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp build
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp dist:clean
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp dist:copy
ynh_replace_string --match_string="%version%" --replace_string="$version" --target_file="$install_dir/build/frontend/target/dist/index.html" ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn run compile
ynh_replace_string --match_string="%buildDate%" --replace_string="$build_date" --target_file="$install_dir/build/frontend/target/dist/index.html"
echo "$version" > target/version.txt;
popd
ynh_secure_remove --file=$install_dir/frontend ynh_replace_string --match_string="%version%" --replace_string="$version" --target_file="$install_dir/build/frontend/resources/public/index.html"
mkdir -p $install_dir/frontend ynh_replace_string --match_string="%buildDate%" --replace_string="$build_date" --target_file="$install_dir/build/frontend/resources/public/index.html"
mv $install_dir/build/frontend/target/dist/* $install_dir/frontend popd
chown -R $app:www-data $install_dir/frontend
chmod -R 755 $install_dir/frontend
ynh_script_progression --message="Building backend..." --weight=5 ynh_secure_remove --file=$install_dir/frontend
mkdir -p $install_dir/frontend
mv $install_dir/build/frontend/resources/public/* $install_dir/frontend
chown -R $app:www-data $install_dir/frontend
chmod -R 755 $install_dir/frontend
pushd $install_dir/build/backend ynh_script_progression --message="Building backend..." --weight=5
mkdir -p target/classes;
mkdir -p target/dist;
echo "$version" > target/classes/version.txt;
chown -R $app:$app target
ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME clojure -T:build jar; pushd $install_dir/build/backend
mv target/penpot.jar target/dist/penpot.jar mkdir -p target/classes;
cp resources/log4j2.xml target/dist/log4j2.xml mkdir -p target/dist;
cp scripts/run.template.sh target/dist/run.sh echo "$version" > target/classes/version.txt;
chmod +x target/dist/run.sh; cp ../CHANGES.md target/classes/changelog.md;
chown -R $app:$app target
# Prefetch templates ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME clojure -T:build jar;
mkdir builtin-templates; mv target/penpot.jar target/dist/penpot.jar
bb ./scripts/prefetch-templates.clj resources/app/onboarding.edn builtin-templates/ cp resources/log4j2.xml target/dist/log4j2.xml
cp -r builtin-templates target/dist/ cp scripts/run.template.sh target/dist/run.sh
popd chmod +x target/dist/run.sh;
ynh_secure_remove --file=$install_dir/backend # Prefetch templates
mkdir -p $install_dir/backend mkdir builtin-templates;
mv $install_dir/build/backend/target/dist/* $install_dir/backend bb ./scripts/prefetch-templates.clj resources/app/onboarding.edn builtin-templates/
chown -R $app:$app $install_dir/backend cp -r builtin-templates target/dist/
chmod -R 700 $install_dir/backend popd
ynh_script_progression --message="Building exporter..." --weight=5 ynh_secure_remove --file=$install_dir/backend
mkdir -p $install_dir/backend
mv $install_dir/build/backend/target/dist/* $install_dir/backend
chown -R $app:$app $install_dir/backend
chmod -R 700 $install_dir/backend
pushd $install_dir/build/exporter ynh_script_progression --message="Building exporter..." --weight=5
ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME NODE_ENV=production clojure -M:dev:shadow-cljs release main
cp yarn.lock target/
cp package.json target/
ynh_replace_string --match_string="%version%" --replace_string="$version" --target_file="$install_dir/build/exporter/target/app.js" pushd $install_dir/build/exporter
popd ynh_exec_warn_less ynh_exec_as "$app" env $ynh_node_load_PATH corepack prepare --activate
ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH yarn install --immutable
ynh_secure_remove --file="target"
ynh_exec_warn_less ynh_exec_as $app env PATH=$PATH JAVA_HOME=$JAVA_HOME NODE_ENV=production clojure -M:dev:shadow-cljs release main
cp yarn.lock target/
cp package.json target/
ynh_secure_remove --file=$install_dir/exporter ynh_replace_string --match_string="%version%" --replace_string="$version" --target_file="$install_dir/build/exporter/target/app.js"
mkdir -p $install_dir/exporter popd
mv $install_dir/build/exporter/target/* $install_dir/exporter
chown -R $app:$app $install_dir/exporter
chmod -R 700 $install_dir/exporter
ynh_secure_remove --file=$install_dir/.cache ynh_secure_remove --file=$install_dir/exporter
mkdir -p $install_dir/exporter
mv $install_dir/build/exporter/target/* $install_dir/exporter
cp $install_dir/build/.yarnrc.yml $install_dir/exporter
chown -R $app:$app $install_dir/exporter
chmod -R 700 $install_dir/exporter
pushd $install_dir/exporter ynh_secure_remove --file=$install_dir/.cache
ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn install --pure-lockfile
ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn --network-timeout 1000000 run playwright install chromium
popd
ynh_script_progression --message="Cleaning up..." --weight=1 pushd $install_dir/exporter
ynh_exec_warn_less ynh_exec_as "$app" env $ynh_node_load_PATH corepack prepare --activate
ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn install --immutable
ynh_exec_as $app env $ynh_node_load_PATH NODE_ENV=production yarn run playwright install chromium
popd
ynh_secure_remove --file=$install_dir/.npm ynh_script_progression --message="Cleaning up..." --weight=1
ynh_secure_remove --file=$install_dir/.yarn
ynh_secure_remove --file=$install_dir/build ynh_secure_remove --file=$install_dir/.npm
ynh_secure_remove --file=$install_dir/.m2 ynh_secure_remove --file=$install_dir/.yarn
ynh_secure_remove --file=$install_dir/.clojure ynh_secure_remove --file=$install_dir/build
ynh_secure_remove --file=$install_dir/clojure ynh_secure_remove --file=$install_dir/.m2
ynh_secure_remove --file=$install_dir/babashka ynh_secure_remove --file=$install_dir/.clojure
ynh_secure_remove --file=$install_dir/.cache/ms-playwright/firefox-* ynh_secure_remove --file=$install_dir/clojure
ynh_secure_remove --file=$install_dir/.cache/ms-playwright/webkit-* ynh_secure_remove --file=$install_dir/babashka
ynh_secure_remove --file=$install_dir/.cache/yarn ynh_secure_remove --file=$install_dir/.cache/ms-playwright/firefox-*
ynh_secure_remove --file=$install_dir/.cache/node ynh_secure_remove --file=$install_dir/.cache/ms-playwright/webkit-*
ynh_secure_remove --file=$install_dir/.cache/yarn
ynh_secure_remove --file=$install_dir/.cache/node
fi fi
#================================================= #=================================================

View file

@ -0,0 +1,82 @@
diff --git a/backend/src/app/migrations/sql/0108-mod-file-thumbnail-table.sql b/backend/src/app/migrations/sql/0108-mod-file-thumbnail-table.sql
index b7d05bdc7..57dc229ca 100645
--- a/backend/src/app/migrations/sql/0108-mod-file-thumbnail-table.sql
+++ b/backend/src/app/migrations/sql/0108-mod-file-thumbnail-table.sql
@@ -18,7 +18,8 @@ ALTER TABLE file_thumbnail
ADD FOREIGN KEY (media_id) REFERENCES storage_object(id) DEFERRABLE;
--- Add deletion protection
-CREATE OR REPLACE TRIGGER deletion_protection__tgr
+DROP TRIGGER IF EXISTS deletion_protection__tgr on file_thumbnail;
+CREATE TRIGGER deletion_protection__tgr
BEFORE DELETE ON file_thumbnail FOR EACH STATEMENT
WHEN ((current_setting('rules.deletion_protection', true) IN ('on', '')) OR
(current_setting('rules.deletion_protection', true) IS NULL))
diff --git a/backend/src/app/migrations/sql/0109-mod-file-tagged-object-thumbnail-table.sql b/backend/src/app/migrations/sql/0109-mod-file-tagged-object-thumbnail-table.sql
index 3184a6576..37e77d3e1 100644
--- a/backend/src/app/migrations/sql/0109-mod-file-tagged-object-thumbnail-table.sql
+++ b/backend/src/app/migrations/sql/0109-mod-file-tagged-object-thumbnail-table.sql
@@ -19,7 +19,8 @@ ALTER TABLE file_tagged_object_thumbnail
ADD FOREIGN KEY (file_id) REFERENCES file(id) DEFERRABLE;
--- Add deletion protection
-CREATE OR REPLACE TRIGGER deletion_protection__tgr
+DROP TRIGGER IF EXISTS deletion_protection__tgr on file_tagged_object_thumbnail;
+CREATE TRIGGER deletion_protection__tgr
BEFORE DELETE ON file_tagged_object_thumbnail FOR EACH STATEMENT
WHEN ((current_setting('rules.deletion_protection', true) IN ('on', '')) OR
(current_setting('rules.deletion_protection', true) IS NULL))
diff --git a/backend/src/app/migrations/sql/0110-mod-file-media-object-table.sql b/backend/src/app/migrations/sql/0110-mod-file-media-object-table.sql
index 49cbebc96..cbf480079 100644
--- a/backend/src/app/migrations/sql/0110-mod-file-media-object-table.sql
+++ b/backend/src/app/migrations/sql/0110-mod-file-media-object-table.sql
@@ -20,7 +20,8 @@ ALTER TABLE file_media_object
ADD FOREIGN KEY (file_id) REFERENCES file(id) DEFERRABLE;
--- Add deletion protection
-CREATE OR REPLACE TRIGGER deletion_protection__tgr
+DROP TRIGGER IF EXISTS deletion_protection__tgr on file_media_object;
+CREATE TRIGGER deletion_protection__tgr
BEFORE DELETE ON file_media_object FOR EACH STATEMENT
WHEN ((current_setting('rules.deletion_protection', true) IN ('on', '')) OR
(current_setting('rules.deletion_protection', true) IS NULL))
diff --git a/backend/src/app/migrations/sql/0112-mod-profile-table.sql b/backend/src/app/migrations/sql/0112-mod-profile-table.sql
index 2db8d75b0..ae2f1c8fe 100644
--- a/backend/src/app/migrations/sql/0112-mod-profile-table.sql
+++ b/backend/src/app/migrations/sql/0112-mod-profile-table.sql
@@ -7,7 +7,8 @@ ALTER TABLE profile
ADD FOREIGN KEY (default_team_id) REFERENCES team(id) DEFERRABLE;
--- Add deletion protection
-CREATE OR REPLACE TRIGGER deletion_protection__tgr
+DROP TRIGGER IF EXISTS deletion_protection__tgr on profile;
+CREATE TRIGGER deletion_protection__tgr
BEFORE DELETE ON profile FOR EACH STATEMENT
WHEN ((current_setting('rules.deletion_protection', true) IN ('on', '')) OR
(current_setting('rules.deletion_protection', true) IS NULL))
diff --git a/backend/src/app/migrations/sql/0113-mod-team-font-variant-table.sql b/backend/src/app/migrations/sql/0113-mod-team-font-variant-table.sql
index b9caa08f6..b80806fb1 100644
--- a/backend/src/app/migrations/sql/0113-mod-team-font-variant-table.sql
+++ b/backend/src/app/migrations/sql/0113-mod-team-font-variant-table.sql
@@ -13,7 +13,8 @@ ALTER TABLE team_font_variant
ADD FOREIGN KEY (team_id) REFERENCES team(id) DEFERRABLE;
--- Add deletion protection
-CREATE OR REPLACE TRIGGER deletion_protection__tgr
+DROP TRIGGER IF EXISTS deletion_protection__tgr on team_font_variant;
+CREATE TRIGGER deletion_protection__tgr
BEFORE DELETE ON team_font_variant FOR EACH STATEMENT
WHEN ((current_setting('rules.deletion_protection', true) IN ('on', '')) OR
(current_setting('rules.deletion_protection', true) IS NULL))
diff --git a/backend/src/app/migrations/sql/0114-mod-team-table.sql b/backend/src/app/migrations/sql/0114-mod-team-table.sql
index 8c7675643..df6c17016 100644
--- a/backend/src/app/migrations/sql/0114-mod-team-table.sql
+++ b/backend/src/app/migrations/sql/0114-mod-team-table.sql
@@ -1,4 +1,5 @@
--- Add deletion protection
-CREATE OR REPLACE TRIGGER deletion_protection__tgr
+DROP TRIGGER IF EXISTS deletion_protection__tgr on team;
+CREATE TRIGGER deletion_protection__tgr
CREATE OR REPLACE TRIGGER deletion_protection__tgr
BEFORE DELETE ON team FOR EACH STATEMENT
WHEN ((current_setting('rules.deletion_protection', true) IN ('on', '')) OR