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 #14 from YunoHost-Apps/v2.0.0-more

V2.0.0 more
This commit is contained in:
Mateusz 2024-04-20 14:29:50 +02:00 committed by GitHub
commit 3d9159c15e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 198 additions and 105 deletions

View file

@ -130,11 +130,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,22 +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:assets
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp build:styles
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp clean:dist
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp build: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
@ -89,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;
@ -111,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/
@ -120,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,116 +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:assets
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp build:styles
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp clean:dist
ynh_exec_as $app $ynh_node_load_PATH $ynh_npm exec gulp build: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