NAME
FusqlFS::Backend::PgSQL::Role::Base - abstract PostgreSQL configuration complexity for FusqlFS::Backend::PgSQL::Role::* classes
SYNOPSIS
package FusqlFS::Backend::PgSQL::Role::Acl;
use parent 'FusqlFS::Backend::PgSQL::Role::Base';
sub init
{
my $self = shift;
my $relkind = shift;
my @kind = $self->kind($relkind);
# initialize instance
}
DESCRIPTION
This class hides configuration complexity for FusqlFS::Backend::PgSQL::Role::* family of modules including FusqlFS::Backend::PgSQL::Role::Acl and FusqlFS::Backend::PgSQL::Role::Owner.
Its single method kind() accepts single character argument designating the kind of referenced database artifact and returns a number of configuration parameters to construct correct SQL statements for the artifact's kind. The possible values of this argument are:
r-
Table (a.k.a. relation).
i-
Table's index.
S-
Sequence.
v-
View.
_F-
Function (a.k.a. stored procedure).
_L-
Language.
If list context kind() method returns a list of ($kind, $pfx, $table, $filter) where
$kind-
is the name of artifact type, e.g.
TABLE,INDEX,SEQUENCE,VIEW,FUNCTIONorLANGUAGE, $pfx-
is the prefix for fields in
pg_catalogschema's table with data of the artifact type, e.g.relforpg_classorproforpg_proc, $table-
is the table in
pg_catalogschema with information about artifacts of this kind, e.g.pg_class,pg_procorpg_language, $name-
is the SQL statement to get artifact's name (usually it's just
${pfx}name, but can be rather different, e.g. in case of functions), use this instead of self-composed name fields in bothWHEREandSELECTexpressions. $filter-
is the additional
WHEREclause forpg_classtable to filter data by requiredrelkindfield value, contains empty string for tables other thanpg_class.
In scalar context this method returns hashref with keys named kind, pfx, table, name, filter and values as described above, so this hashref is usable with FusqlFS::Artifact/hprintf method.