Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: modules/discourse/manifests/postactiontype.pp

Issue 9431166: Make sure to populate post_action_types table (Closed)
Patch Set: Created Feb. 27, 2013, 5:01 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « modules/discourse/manifests/init.pp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 define discourse::postactiontype(
2 $id,
3 $key = $title,
4 $is_flag = false,
5 $icon = undef,
6 $position = 0,
7 $ensure = 'present'
8 ) {
9 # Attempt some escaping
10 $escaped_id = regsubst($id, '\D', '', 'G')
11 $escaped_key = regsubst($key, '[\'\\]', '\\\1', 'G')
12 if $is_flag {
13 $escaped_flag = 'true'
14 }
15 else {
16 $escaped_flag = 'false'
17 }
18 if $icon {
19 $dummy = regsubst($icon, '[\'\\]', '\\\1', 'G')
20 $escaped_icon = "'${dummy}'"
21 }
22 else {
23 $escaped_icon = "null"
24 }
25 $escaped_position = regsubst($position, '\D', '', 'G')
26
27 case $ensure {
28 default: {
29 err("unknown ensure value ${ensure}")
30 }
31 present: {
32 # This is apparently how you do a conditional INSERT in PostgreSQL - sorry
33 $update_sql = "UPDATE post_action_types SET name_key = '$escaped_key', is_ flag = $escaped_flag, icon = $escaped_icon, position = $escaped_position WHERE i d = $escaped_id RETURNING 1"
34 $columns = "id, name_key, is_flag, icon, position, created_at, updated_at"
35 $values = "SELECT $escaped_id, '$escaped_key', $escaped_flag, $escaped_ico n, $escaped_position, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP"
36
37 postgresql_psql {"WITH upd AS ($update_sql) INSERT INTO post_action_types ($columns) $values WHERE NOT EXISTS (SELECT * FROM upd)":
38 db => 'discourse',
39 psql_user => 'discourse',
40 unless => 'SELECT false'
41 }
42 }
43 absent: {
44 postgresql_psql {"DELETE FROM post_action_types WHERE id = $escaped_id":
45 db => 'discourse',
46 psql_user => 'discourse',
47 unless => 'SELECT false'
48 }
49 }
50 }
51 }
OLDNEW
« no previous file with comments | « modules/discourse/manifests/init.pp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld