#!/bin/bash

if [[ $@ =~ "--help" ]] || [[ $@ =~ "-h" ]] || [ $# -ne 1 ]; then
	echo "Usage: `basename $0` -h | --help | output-file"
	exit
fi

if [ $(spacewalk-cfg-get db_backend) = "oracle" ]; then
	sql="
set pagesize 4000 linesize 200
set serverout on

declare
  n number;
begin
  for i in (select * from user_tables order by table_name)
    loop
      execute immediate 'select count(*) from ' || i.table_name into n;
      dbms_output.put_line(i.table_name || ': ' || n);
    end loop;
end;
/

column constraint_name format a30 heading \"CONSTRAINT NAME\"
column constraint_type format a4 heading \"TYPE\"
column table_name format a30 heading \"TABLE NAME\"
column search_condition heading \"SEARCH CONDITION\"
column r_constraint_name format a30 heading \"REFERENCED CONSTRAINT\"

select
	constraint_name, constraint_type, table_name, search_condition, r_constraint_name
from
	user_constraints
where
	table_name not like '%BIN%'
order by
	table_name, constraint_type;

column label format a30
column name format a25
column epoch format a10
column version format a10
column release format a10

select
	rvi.label, to_char(rvi.created, 'YYYY-MM-DD') created, to_char(rvi.modified, 'YYYY-MM-DD') modified,
	rpn.name,
	rpe.epoch, rpe.version, rpe.release
from
	rhnVersionInfo rvi,
	rhnPackageName rpn,
	rhnPackageEvr rpe
where
	rvi.evr_id = rpe.id and
	rvi.name_id = rpn.id;

quit;
"
elif [ $(spacewalk-cfg-get db_backend) = "postgresql" ]; then
	sql="
select schemaname as schema,
       relname as table,
       n_live_tup as rows
  from pg_stat_user_tables
 order by n_live_tup desc;

select con.conname as name,
       con.contype as type,
       cl.relname as table,
       con.consrc as src
  from pg_constraint con,
       pg_class cl
 where cl.oid = con.conrelid
 order by name;

select
        rvi.label, to_char(rvi.created, 'YYYY-MM-DD') as created,
        to_char(rvi.modified, 'YYYY-MM-DD') as modified,
        rpn.name,
        rpe.epoch,
        rpe.version,
        rpe.release
from
        rhnVersionInfo rvi,
        rhnPackageName rpn,
        rhnPackageEvr rpe
where
        rvi.evr_id = rpe.id and
        rvi.name_id = rpn.id;
"

fi

output=$(echo "$sql" | spacewalk-sql --select-mode -)

if [ "$1" = "-" ]; then
        echo "$output"
else
        echo "$output" > $1
fi
