1 # = Type: postgresql::server::schema
3 # Create a new schema. See README.md for more details.
7 # The database must exist and the PostgreSQL user should have enough privileges
11 # postgresql::server::schema {'private':
15 define postgresql::server::schema(
16 $db = $postgresql::server::default_database,
19 $connect_settings = $postgresql::server::default_connect_settings,
21 $user = $postgresql::server::user
22 $group = $postgresql::server::group
23 $psql_path = $postgresql::server::psql_path
24 $version = $postgresql::server::_version
25 $module_workdir = $postgresql::server::module_workdir
27 Postgresql::Server::Db <| dbname == $db |> -> Postgresql::Server::Schema[$name]
29 # If the connection settings do not contain a port, then use the local server port
30 if $connect_settings != undef and has_key( $connect_settings, 'PGPORT') {
33 $port = $postgresql::server::port
40 psql_path => $psql_path,
42 cwd => $module_workdir,
43 connect_settings => $connect_settings,
46 postgresql_psql { "${db}: CREATE SCHEMA \"${schema}\"":
47 command => "CREATE SCHEMA \"${schema}\"",
48 unless => "SELECT 1 FROM pg_namespace WHERE nspname = '${schema}'",
49 require => Class['postgresql::server'],
53 postgresql_psql { "${db}: ALTER SCHEMA \"${schema}\" OWNER TO \"${owner}\"":
54 command => "ALTER SCHEMA \"${schema}\" OWNER TO ${owner}",
55 unless => "SELECT 1 FROM pg_namespace JOIN pg_roles rol ON nspowner = rol.oid WHERE nspname = '${schema}' AND rolname = '${owner}'",
56 require => Postgresql_psql["${db}: CREATE SCHEMA \"${schema}\""],
59 if defined(Postgresql::Server::Role[$owner]) {
60 Postgresql::Server::Role[$owner]->Postgresql_psql["${db}: ALTER SCHEMA \"${schema}\" OWNER TO \"${owner}\""]