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

Implement postgresql database choice

This commit is contained in:
Tagada 2023-05-28 18:43:16 +02:00
parent 03cc1fbd95
commit 80f55d4feb
7 changed files with 69 additions and 22 deletions

View file

@ -52,11 +52,12 @@ ram.runtime = "50M"
choices = ["none", "7.4", "8.0", "8.1", "8.2"]
default = "8.0"
[install.with_mysql]
ask.en = "Do you need a MySQL database?"
ask.fr = "Avez-vous besoin d'une base de données MySQL ?"
type = "boolean"
default = false
[install.database]
ask.en = "Do you need a database?"
ask.fr = "Avez-vous besoin d'une base de données ?"
type = "select"
choices = [ "none", "mysql, 'posrgresql" ]
default = "none"
[resources]
[resources.system_user]
@ -69,9 +70,10 @@ ram.runtime = "50M"
[resources.apt]
packages = "nginx" # Kind of "dummy" value to be sure to have a non-empty dep list
packages_from_raw_bash = """
if [[ "$with_mysql" = 1 ]]
then
if [[ "$database" == "mysql" ]]; then
echo "mariadb-server"
elif [[ "$database" == "postgresql" ]]; then
echo "postgresql postgresql-contrib"
fi
if [[ "$phpversion" != none ]]

View file

@ -40,10 +40,15 @@ fi
# BACKUP THE MYSQL DATABASE
#=================================================
if [ $with_mysql -eq 1 ]
if [ $database != "none" ]
then
ynh_print_info --message="Backing up the MySQL database..."
ynh_mysql_dump_db --database="$db_name" > db.sql
ynh_print_info --message="Backing up the database..."
if [ $database == "mysql" ]; then
ynh_mysql_dump_db --database="$db_name" > db.sql*
elif [ $database == "postgresql" ]
ynh_psql_dump_db --database="$db_name" > db.sql
fi
fi
#=================================================

View file

@ -35,9 +35,8 @@ ynh_app_setting_set --app=$app --key=password --value=$password
# CREATE A MYSQL DATABASE
#=================================================
if [ $with_mysql -eq 1 ]
then
ynh_script_progression --message="Creating a MySQL database..." --weight=2
if [ $database != "none" ]; then
ynh_script_progression --message="Creating a database..." --weight=2
db_name=$(ynh_sanitize_dbid --db_name=$app)
db_user=$db_name
@ -45,7 +44,12 @@ then
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
ynh_app_setting_set --app=$app --key=db_user --value=$db_user
ynh_app_setting_set --app=$app --key=db_pwd --value=$db_pwd
if [ $database == "mysql" ]; then
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name
elif [ $database == "postgresql" ]; then
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name
fi
fi
#=================================================

View file

@ -15,14 +15,18 @@ source /usr/share/yunohost/helpers
# REMOVE THE MYSQL DATABASE
#=================================================
if [ $with_mysql -eq 1 ]; then
ynh_script_progression --message="Removing the MySQL database..." --weight=2
if [ $database != "none" ]; then
ynh_script_progression --message="Removing the database..." --weight=2
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name
# Remove a database if it exists, along with the associated user
if [ $database == "mysql" ]; then
ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name
elif [ $database == "postgresql" ]; then
ynh_psql_remove_db --db_user=$db_user --db_name=$db_name
fi
fi
#=================================================

View file

@ -20,14 +20,20 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.d/"
# RESTORE THE MYSQL DATABASE
#=================================================
if [ $with_mysql -eq 1 ]; then
ynh_script_progression --message="Restoring the MySQL database..."
if [ $database != "none" ]; then
ynh_script_progression --message="Restoring the database..."
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name
db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd)
if [ $database == "mysql" ]; then
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql
elif [ $database == "postgresql" ]; then
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
ynh_psql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql
fi
fi
#=================================================

View file

@ -20,6 +20,18 @@ upgrade_type=$(ynh_check_app_version_changed)
#=================================================
ynh_script_progression --message="Ensuring downward compatibility..."
# If database doesn't exist, create it and remove with_mysql setting
if [ -z "$(database:-)" ]; then
if [ $with_mysql -eq 1 ]; then
$database="mysql"
else
$database="none"
fi
ynh_app_setting_set --app=$app --key=database --value=$database
ynh_app_setting_delete --app=$app --key=with_mysql
fi
# If admin_mail_html doesn't exist, create it
if [ -z "${admin_mail_html:-}" ]; then
admin_mail_html=1

View file

@ -7,8 +7,10 @@ test_format = 1.0
# -------------------------------
args.with_sftp = "1"
args.with_mysql = "1"
args.database = "none"
args.phpversion = "8.0"
test_upgrade_from.bf5d3ed.name = "Upgrade from 1.0~ynh14"
test_upgrade_from.bf5d3ed.args.with_mysql = "0"
[80_test]
@ -19,3 +21,15 @@ test_format = 1.0
only = ["install.subdir", "backup_restore", "upgrade" ]
args.phpversion = "none"
[mysql_test]
only = ["install.subdir", "backup_restore", "upgrade", "upgrade.bf5d3ed" ]
args.database = "mysql"
test_upgrade_from.bf5d3ed.name = "Upgrade from 1.0~ynh14"
test_upgrade_from.bf5d3ed.args.with_mysql = "1"
[postgresql_test]
only = ["install.subdir", "backup_restore", "upgrade" ]
args.database = "postgresql"