demo/core/setup/resources.ps1

function New-MariaDBNamespace([string] $namespace,
    [switch] $resourceFileOnly) {

    if (-not $resourceFileOnly -and (Test-Namespace $namespace)) {
        return
    }
    New-NamespaceResource $namespace -useGitOps:$resourceFileOnly
}

function New-MariaDBCredentialSecret([string] $namespace,
    [string] $name,
    [string] $rootPwd,
    [string] $replicatorPwd,
    [switch] $resourceFileOnly) {

    $credentials = @{
        'mariadb-root-password' = $rootPwd
    }

    if ('' -ne $replicatorPwd) {
        $credentials['mariadb-replication-password'] = $replicatorPwd
    }

    New-GenericSecretResource $namespace $name -keyValues $credentials -useGitOps:$resourceFilesOnly
}

function New-MariaDBOptionConfigMap([string] $namespace,
    [string] $name,
    [string] $characterSet,
    [string] $collation,
    [int]    $lowerCaseTableNames,
    [int]    $binaryLogExpirationSeconds,
    [switch] $resourceFileOnly) {

    $dbConfig = @'
[mysqld]
skip-name-resolve
explicit_defaults_for_timestamp
basedir=/opt/bitnami/mariadb
plugin_dir=/opt/bitnami/mariadb/plugin
port=3306
socket=/opt/bitnami/mariadb/tmp/mysql.sock
tmpdir=/opt/bitnami/mariadb/tmp
max_allowed_packet=16M
bind-address=*
pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid
log-error=/opt/bitnami/mariadb/logs/mysqld.log
slow_query_log=0
slow_query_log_file=/opt/bitnami/mariadb/logs/mysqld.log
long_query_time=10.0
character-set-server={0}
collation-server={1}
lower_case_table_names={2}
binlog_expire_logs_seconds={3}

[client]
port=3306
socket=/opt/bitnami/mariadb/tmp/mysql.sock
default-character-set=UTF8
plugin_dir=/opt/bitnami/mariadb/plugin

[manager]
port=3306
socket=/opt/bitnami/mariadb/tmp/mysql.sock
pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid
'@


    $dbConfigFile = 'db.cnf'
    $dbConfig -f $characterSet,$collation,$lowerCaseTableNames,$binaryLogExpirationSeconds | out-file $dbConfigFile -Encoding ascii -Force

    New-ConfigMapResource $namespace $name -fileKeyValues @{ 'my.cnf' = $dbConfigFile } -useGitOps:$resourceFileOnly
}