From b946b5a2acce328ac0e163dbf7bf8e83e7eb677a Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Tue, 1 Mar 2016 09:08:43 -0800 Subject: [PATCH] making counters for ancient sequence-less installs --- bin/makecounters | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 bin/makecounters diff --git a/bin/makecounters b/bin/makecounters new file mode 100644 index 000000000..0490ef591 --- /dev/null +++ b/bin/makecounters @@ -0,0 +1,47 @@ +#!/usr/bin/perl + +use strict; +use FS::UID qw( adminsuidsetup driver_name ); +use FS::Record qw( dbdef ); + +my $user = shift or die; +my $dbh = adminsuidsetup $user; + +my $schema = dbdef(); + +my @tables = scalar(@ARGV) + ? @ARGV + : grep { ! /^h_/ } $schema->tables; + +foreach my $table ( @tables ) { + my $tableobj = $schema->table($table) + or die "unknown table $table (did you run dbdef-create?)\n"; + + my $primary_key = $tableobj->primary_key; + next unless $primary_key; + + my $col = $tableobj->column($primary_key); + +#warn "$table ". $col->type; +#warn "$table ". $col->default; + + next if uc($col->type) eq 'SERIAL' + || ( driver_name eq 'Pg' + && defined($col->default) + && $col->quoted_default =~ /^nextval\(/i + ) + || ( driver_name eq 'mysql' + && defined($col->local) + && $col->local =~ /AUTO_INCREMENT/i + ); + + my $value = FS::Record->scalar_sql("SELECT max($primary_key) FROM $table") + or next; + + warn "setting counter for $table to $value\n"; + open(FILE, ">/usr/local/etc/freeside/counters.DBI:Pg:dbname=freeside/$table.$primary_key") + or die $!; + print FILE "#COUNTER-1.0\n$value\n"; + close FILE or die $!; + +} -- 2.11.0