#!/usr/bin/perl
#
# $Name:  $
#
# $Log: findStars.pl,v $
# Revision 1.2  2001/11/14 03:59:20  robc
# Perltidy code
# Use "do" for parmater pickup
#
# Revision 1.1  2001/10/06 09:53:43  robc
# First version
#

use strict;
use warnings;

use Pg;
use AppConfig qw( :argcount :expand );

my $band = shift;
my $ra   = shift;
my $dec  = shift;
my $dra  = shift;
my $ddec = shift;

my $ID = q$Id: findStars.pl,v 1.2 2001/11/14 03:59:20 robc Exp $;
my $version = join ( ' ', ( split ( ' ', $ID ) )[ 1 .. 3 ] );
$version =~ s/,v\b//;
$version =~ s/(\S+)$/($1)/;

my $CONFIG_FILE = $ENV{ TASSIV_CFG }
   || '/tass/src/tassiv_reduce/tassiv_reduce.cfg';
my $c = AppConfig->new(
   {
      CREATE => 1,
      GLOBAL => {
                  EXPAND   => EXPAND_VAR,
                  ARGCOUNT => ARGCOUNT_ONE
      }
   }
   );
$c = setup_args( $c, $CONFIG_FILE );

my $DB_NAME = $c->name;
my $DB_HOST = $c->host;

sub get_mine( $ $ $ $ );

$band = lc( $band );

my $get = \&get_mine;

my $t4dbh = Pg::connectdb( "dbname=$DB_NAME host=$DB_HOST" );
die $t4dbh->errorMessage unless PGRES_CONNECTION_OK eq $t4dbh->status;

if ( ( $ra - $dra ) < 0 )
   {
   &$get( 0, $ra + $dra, $dec - $ddec, $dec + $ddec );
   &$get( $ra - $dra + 360, 360, $dec - $ddec, $dec + $ddec );
   }
elsif ( ( $ra + $dra ) > 360 )
   {
   &$get( $ra - $dra, 360, $dec - $ddec, $dec + $ddec );
   &$get( 0, $ra + $dra - 360, $dec - $ddec, $dec + $ddec );
   }
else
   {
   &$get( $ra - $dra, $ra + $dra, $dec - $ddec, $dec + $ddec );
   }

sub get_mine( $ $ $ $ )
   {
   my ( $ramn, $ramx, $decmn, $decnx ) = @_;

   my $query = "SELECT star_id, ra, dec, $band
                FROM reference_ubvri
					 WHERE ra BETWEEN $ramn AND $ramx
					   AND dec BETWEEN $decmn AND $decnx
               ";
   my $result = $t4dbh->exec( $query );
   die $query . $t4dbh->errorMessage
      unless PGRES_TUPLES_OK eq $result->resultStatus;
   while ( @_ = $result->fetchrow )
      {
      print join ( "\t", @_[ 0 .. 3 ] ), "\n";
      }
   }

sub setup_args( $$ )
   {
   my ( $c, $file ) = @_;

   $c->define(
               DB_name => {
                            DEFAULT => 'tassiv',
                            ALIAS   => 'name'
               },
               DB_host => {
                            DEFAULT => 'localhost',
                            ALIAS   => 'host'
               }
               );
   $c->file( $file );

   return $c;
   }
