| OLD | NEW |
| (Empty) |
| 1 define discourse::sitesetting( | |
| 2 $setting = $title, | |
| 3 $value = undef, | |
| 4 $type = 1, | |
| 5 $ensure = 'present' | |
| 6 ) { | |
| 7 | |
| 8 $escaped_value = postgresql_escape($value) | |
| 9 $escaped_setting = postgresql_escape($setting) | |
| 10 $escaped_type = postgresql_escape($type) | |
| 11 | |
| 12 case $ensure { | |
| 13 default: { | |
| 14 err("unknown ensure value ${ensure}") | |
| 15 } | |
| 16 present: { | |
| 17 # This is apparently how you do a conditional INSERT in PostgreSQL - sorry | |
| 18 $update_sql = "UPDATE site_settings SET value = $escaped_value, data_type
= $escaped_type WHERE name = $escaped_setting RETURNING 1" | |
| 19 $columns = "name, data_type, value, created_at, updated_at" | |
| 20 $values = "SELECT $escaped_setting, $escaped_type, $escaped_value, CURRENT
_TIMESTAMP, CURRENT_TIMESTAMP" | |
| 21 | |
| 22 postgresql_psql {"WITH upd AS ($update_sql) INSERT INTO site_settings ($co
lumns) $values WHERE NOT EXISTS (SELECT * FROM upd)": | |
| 23 db => 'discourse', | |
| 24 psql_user => 'discourse', | |
| 25 notify => Service['discourse'], | |
| 26 unless => "SELECT 1 FROM site_settings WHERE name = $escaped_setting AND
value = $escaped_value AND data_type = $escaped_type", | |
| 27 } | |
| 28 } | |
| 29 absent: { | |
| 30 postgresql_psql {"DELETE FROM site_settings WHERE name = $escaped_setting"
: | |
| 31 db => 'discourse', | |
| 32 psql_user => 'discourse', | |
| 33 notify => Service['discourse'], | |
| 34 unless => "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM site_settings WHERE
name = $escaped_setting)", | |
| 35 } | |
| 36 } | |
| 37 } | |
| 38 } | |
| OLD | NEW |