RT 83251 - moved script
[freeside.git] / bin / makecounters
1 #!/usr/bin/perl
2
3 use strict;
4 use FS::UID qw( adminsuidsetup driver_name );
5 use FS::Record qw( dbdef );
6
7 my $user = shift or die;
8 my $dbh = adminsuidsetup $user;
9
10 my $schema = dbdef();
11
12 my @tables = scalar(@ARGV)
13                ? @ARGV
14                : grep { ! /^h_/ } $schema->tables;
15
16 foreach my $table ( @tables ) {
17   my $tableobj = $schema->table($table)
18     or die "unknown table $table (did you run dbdef-create?)\n";
19
20   my $primary_key = $tableobj->primary_key;
21   next unless $primary_key;
22
23   my $col = $tableobj->column($primary_key);
24
25 #warn "$table ". $col->type;
26 #warn "$table ". $col->default;
27
28   next if uc($col->type) eq 'SERIAL'
29            || ( driver_name eq 'Pg'
30                   && defined($col->default)
31                   && $col->quoted_default =~ /^nextval\(/i
32               )
33            || ( driver_name eq 'mysql'
34                   && defined($col->local)
35                   && $col->local =~ /AUTO_INCREMENT/i
36               );
37
38   my $value = FS::Record->scalar_sql("SELECT max($primary_key) FROM $table")
39     or next;
40
41   warn "setting counter for $table to $value\n";
42   open(FILE, ">/usr/local/etc/freeside/counters.DBI:Pg:dbname=freeside/$table.$primary_key")
43     or die $!;
44   print FILE "#COUNTER-1.0\n$value\n";
45   close FILE or die $!;
46
47 }