#!/usr/bin/perl
#
# hack to update/add read-only permissions for a user on the db
#
# usage: pg-readonly freesideuser readonlyuser

use strict;
use DBI;
use FS::UID qw(adminsuidsetup);
use FS::Record qw(dbdef);

my $user = shift or die &usage;
my $rouser = shift or die &usage;

my $dbh = adminsuidsetup $user;

foreach my $table ( dbdef->tables ) {
  $dbh->do("GRANT SELECT ON $table TO $rouser");
  $dbh->commit();
  if ( my $pkey = dbdef->table($table)->primary_key ) {
    $dbh->do("GRANT SELECT ON ${table}_${pkey}_seq TO $rouser");
    $dbh->commit();
  }
}

my @rt_tables = qw(
Attachments
Queues
Links
Principals
Groups
ScripConditions
Transactions
Scrips
ACL
GroupMembers
CachedGroupMembers
Users
Tickets
ScripActions
Templates
ObjectCustomFieldValues
CustomFields
ObjectCustomFields
CustomFieldValues
Attributes
sessions
);

foreach my $table ( @rt_tables ) {
  $dbh->do("GRANT SELECT ON $table TO $rouser");
  $dbh->commit();
  $dbh->do("GRANT SELECT ON ${table}_id_seq TO $rouser");
  $dbh->commit();
}
