sub AddEntity{ my($type,$name) = @_; $MaxEntityID++; my $sql = "INSERT INTO ENTITIES (ID,TYPE,NAME) VALUES ($MaxEntityID,\'$type\',\'$name\')"; DoSQL($sql) or die "\n"; $IDcache{uc("$type\:\:$name")}=$MaxEntityID; return $MaxEntityID; } sub GetEntityID{ my ($type,$name)=@_; my $sql = "SELECT * FROM ENTITIES WHERE TYPE='$type' and NAME='$name'"; my $id = $IDcache{uc("$type\:\:$name")} || 0; if ($id) { print "$type\:$name ID = $id (retrieved from cache)\n"; return $id; } DoSQL($sql) or die "\n"; if ($db->FetchRow) { $id = $db->Data("ID"); $IDcache{uc("$type\:\:$name")} = $id; print "$type\:$name ID = $id\n"; return $id; } else { print "$type\:$name is a new entity!\n"; return 0; } } sub GetMaxID{ my $type = shift; my $sql = "SELECT ID FROM [$type]"; DoSQL($sql) or die "\n"; my $maxid=0; while ($db->FetchRow) { my $id=$db->Data("ID"); if ($id>$maxid) { $maxid=$id; } } print "Max $type ID: $maxid\n"; return $maxid; } sub DoSQL{ my $sql = shift; my $error = $db->Sql($sql); if ($error) { carp "SQL error $error in:\n\"$sql\"\n\n"; return 0; } return 1; }