package DBIx::dbMan::Extension::EditObjects;

use strict;
use base 'DBIx::dbMan::Extension';

our $VERSION = '0.03';

1;

sub IDENTIFICATION { return "000001-000043-000003"; }

sub preference { return 0; }

sub known_actions { return [ qw/EDIT_OBJECT/ ]; }

sub handle_action {
	my ($obj,%action) = @_;

	$action{processed} = 1;
	if ($action{action} eq 'EDIT_OBJECT' and not $action{type}) {
		$action{action} = 'NONE';
		unless ($obj->{-dbi}->current) {
			$obj->{-interface}->error("No current connection selected.");
			return %action;
		}
		my $sth = $obj->{-dbi}->table_info({ TABLE_NAME => $action{what} });
		unless (defined $sth) {
			$obj->{-interface}->error("Object ".$action{what}." not found.");
			return %action;
		}
		my $ret = $sth->fetchall_arrayref();
		unless (defined $ret) {
			$sth->finish;
			$obj->{-interface}->error("Object ".$action{what}." not found.");
			return %action;
		}
		$sth->finish;
		my $found = 0;
		my $type = '';
		for (@$ret) {
			if ($_->[2] eq $action{what}) {
				$type = $_->[3];  ++$found;
			}
		}
		unless ($found) {
			$obj->{-interface}->error("Object ".$action{what}." not found.");
			return %action;
		}
		$action{type} = $type;
		$action{action} = 'EDIT_OBJECT';
		delete $action{processed};
	}

	return %action;
}