From 229e4c6729a57b0a73d0822d6a678b5343946523 Mon Sep 17 00:00:00 2001
From: drebs <drebs@riseup.net>
Date: Mon, 20 Nov 2023 14:56:55 -0300
Subject: [PATCH] Default WordPress databases do utf8mb3 charset and collation

---
 profile/manifests/mysql/db.pp           |  4 ++++
 profile/manifests/wordpress/instance.pp | 10 +++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/profile/manifests/mysql/db.pp b/profile/manifests/mysql/db.pp
index a5e3c8b6..110be54f 100644
--- a/profile/manifests/mysql/db.pp
+++ b/profile/manifests/mysql/db.pp
@@ -4,6 +4,8 @@ define profile::mysql::db (
   String $pass = 'password',
   String $host = $::fqdn,
   Array[String] $grant = ['ALL'],
+  String $charset = 'utf8',
+  String $collate = 'utf8_general_ci',
 ) {
 
   mysql::db { "${title}_${host}":
@@ -12,6 +14,8 @@ define profile::mysql::db (
     dbname   => $title,
     host     => $host,
     grant    => $grant,
+    charset  => $charset,
+    collate  => $collate,
   }
 
 }
diff --git a/profile/manifests/wordpress/instance.pp b/profile/manifests/wordpress/instance.pp
index 1d74d7d2..c3ba59f6 100644
--- a/profile/manifests/wordpress/instance.pp
+++ b/profile/manifests/wordpress/instance.pp
@@ -3,15 +3,19 @@ define profile::wordpress::instance (
   String $db_pass,
   String $domain = $name,
   String $db_name = join(['wp_', regsubst($domain, /[^a-z0-9_]/, '_', 'G')]),
+  String $charset = 'utf8mb3',
+  String $collate = 'utf8mb3_general_ci',
 ) {
   if $domain !~ /[a-z0-9_.]+/ {
     fail("Invalid domain: ${domain}")
   }
 
   profile::mysql::db { $db_name:
-    user => $db_name,
-    host => 'localhost',
-    pass => $db_pass,
+    user    => $db_name,
+    host    => 'localhost',
+    pass    => $db_pass,
+    charset => $charset,
+    collate => $collate,
   }
 
   $php_socket = "/var/run/php-fpm/${db_name}"
-- 
GitLab