my $callinfo = "";
if ($callnr){
my $st = $dbh->prepare(q{
-SELECT covered
+SELECT status
,c.landing_tick - (SELECT value::integer FROM misc WHERE id = 'TICK') AS eta
,concat(i.shiptype||'/') AS shiptype
FROM calls c
- JOIN incomings i ON i.call = c.id
+ JOIN incomings i USING (call)
LEFT OUTER JOIN users dc ON dc.uid = c.dc
- JOIN users u ON u.uid = c.member
-WHERE c.id = ?
-GROUP BY c.id,c.landing_tick,c.covered
+WHERE c.call = ?
+GROUP BY c.call,c.landing_tick,c.status
ORDER BY c.landing_tick;
});
my $call = $dbh->selectrow_hashref($st,undef,$callnr);
- unless (defined $call->{covered}){
+ unless (defined $call->{status}){
$c->reply("No call with id: $callnr");
return;
}
chop($call->{shiptype});
$callinfo = "(Anti $call->{shiptype} ETA: $call->{eta})";
- if($call->{covered}){
+ if($call->{status} eq 'Covered'){
$c->reply("Call <b>$callnr</b> $callinfo is covered.");
return;
}
my $dbh = $c->model;
my $query = q{
-SELECT i.id,call,shiptype, coords(x,y,z),c.landing_tick - tick() AS eta
+SELECT inc,call,shiptype, coords(x,y,z),c.landing_tick - tick() AS eta
FROM incomings i
- JOIN current_planet_stats p ON i.sender = p.id
- JOIN calls c ON i.call = c.id
+ JOIN current_planet_stats p USING (pid)
+ JOIN calls c USING (call)
};
my $fleets;
my $type;
($call,$type) = $msg =~ /^(\d+) (.*)$/ or die 'ARGS';
$fleets = $dbh->prepare($query . q{
-WHERE i.call = ?
+WHERE call = ?
});
$fleets->execute($call);
}else{
my ($id,$x,$y,$z,$t) = $msg =~ /^(\d+) (\d+):(\d+):(\d+) (.*)$/;
if (defined $id){
$fleets = $dbh->prepare($query . q{
-WHERE i.call = ? AND p.id = planetid(?,?,?,tick())
+WHERE call = ? AND pid = planetid(?,?,?,tick())
});
$fleets->execute($id,$x,$y,$z);
}else{
($id,$t) = $msg =~ /^(\d+) (.*)$/ or die 'ARGS';
$fleets = $dbh->prepare($query . q{
-WHERE i.id = ?
+WHERE inc = ?
});
$fleets->execute($id);
}
$type = CGI::escapeHTML($type);
$dbh->begin_work;
my $deflog = '';
- my $settype = $dbh->prepare(q{UPDATE incomings SET shiptype = ? WHERE id = ?});
+ my $settype = $dbh->prepare(q{UPDATE incomings SET shiptype = ? WHERE inc = ?});
while (my $inc = $fleets->fetchrow_hashref){
$call //= $inc->{call};
if ($inc->{eta} < 0){
$dbh->rollback;
return;
}
- $settype->execute($type,$inc->{id});
- $deflog .= "Set fleet: [B]$inc->{id} [/B] to: [B]$type [/B]\n";
- $c->reply("Set fleet $inc->{id} from $inc->{coords} on call $call to $type (previously $inc->{shiptype})");
+ $settype->execute($type,$inc->{inc});
+ $deflog .= "Set fleet: [B]$inc->{inc} [/B] to: [B]$type [/B]\n";
+ $c->reply("Set fleet $inc->{inc} from $inc->{coords} on call $call to $type (previously $inc->{shiptype})");
}
if ($fleets->rows == 0){
$c->reply("No matching fleets");
my ($id) = $msg =~ /^(\d+)$/ or die 'ARGS';
my $dbh = $c->model;
- my $extra = '';
+ my $status = 'Open';
given ($self->{name}){
when('callignore'){
- $extra = ',covered = FALSE, open = FALSE'
+ $status = 'Ignored';
}
when('callcov'){
- $extra = ',covered = TRUE, open = FALSE'
+ $status = 'Covered';
}
}
$dbh->begin_work;
my $rows = $dbh->do(q{
UPDATE calls SET dc = (SELECT uid FROM users WHERE hostmask ILIKE $1)
- }. $extra .q{
-WHERE id = $2
- },undef,$c->host,$id);
+ ,status = $3
+WHERE call = $2
+ },undef,$c->host,$id,$status);
if ($rows == 1){
- $c->reply("Marked call $id with ".$self->name);
- $c->def_log($id , "Used: [B]".$self->name."[/B]");
+ $c->reply("Setting status on call $id to $status");
+ $c->def_log($id , "Changed status: [B]$status [/B]");
$dbh->commit;
}else{
$c->reply("$id is not a valid call");
my $findid = $dbh->prepare(q{SELECT planetid(?,?,?,tick())});
my ($id) = $dbh->selectrow_array($findid,undef,$x,$y,$z);
$dbh->begin_work;
- my $rv = $dbh->do(q{UPDATE planets SET planet_status = 'Hostile' WHERE id = $1}
+ my $rv = $dbh->do(q{UPDATE planets SET planet_status = 'Hostile' WHERE pid = $1}
,undef,$id);
if ($rv == 1){
$c->reply("$x:$y:$z is now marked s hostile");
my $dbh = $c->model;
my $findid = $dbh->prepare(q{
-SELECT nick, id, alliance_id FROM planets WHERE id = planetid(?,?,?,tick())
+SELECT nick, pid, alliance FROM planets WHERE pid = planetid(?,?,?,tick())
});
my $planet = $dbh->selectrow_hashref($findid,undef,$x,$y,$z);
- unless($planet->{id}){
+ unless($planet->{pid}){
$c->reply("Couldn't find any planet with coords $x:$y:$z");
- }elsif($planet->{alliance_id} ~~ 1){
+ }elsif($planet->{alliance} ~~ 'NewDawn'){
$c->reply("This is an ND planet.");
}else{
$dbh->begin_work;
- $dbh->do(q{UPDATE planets SET nick = $1 WHERE id = $2}
- ,undef,$nick,$planet->{id});
+ $dbh->do(q{UPDATE planets SET nick = $1 WHERE pid = $2}
+ ,undef,$nick,$planet->{pid});
if ($planet->{nick}){
$c->reply("$x:$y:$z nick has been changed from <b>$planet->{nick}</b> to <b>$nick</b>");
}else{
$c->reply("$x:$y:$z nick has been set to $nick");
}
- $c->intel_log($planet->{id},"Set nick to: $nick");
+ $c->intel_log($planet->{pid},"Set nick to: $nick");
$dbh->commit;
}
}
my $aid;
if ($ally ne 'unknown'){
($aid,$ally) = $dbh->selectrow_array(q{
-SELECT id,name FROM alliances WHERE name ILIKE ?
+SELECT aid,alliance FROM alliances WHERE alliance ILIKE ?
},undef,$ally);
}
if ($aid ~~ 1){
$c->reply("Don't set ND planets manually.");
}elsif ($ally){
my $findid = $dbh->prepare(q{
-SELECT id,alliance,alliance_id FROM current_planet_stats WHERE x = ? AND y = ? and z = ?
+SELECT pid,alliance,aid FROM current_planet_stats WHERE x = ? AND y = ? and z = ?
});
my ($id,$alliance,$alliance_id) = $dbh->selectrow_array($findid,undef,$x,$y,$z);
unless ($id){
$c->reply("$x:$y:$z is already set to $ally");
}else{
$dbh->begin_work;
- $dbh->do(q{UPDATE planets SET alliance_id = $1 WHERE id = $2}
- ,undef,$aid,$id);
+ $dbh->do(q{UPDATE planets SET alliance = $1 WHERE pid = $2}
+ ,undef,$ally,$id);
if (defined $alliance){
$c->reply("Changed $x:$y:$z from <b>$alliance</b> to <b>$ally</b>");
}else{
my ($x,$y,$z,$channel) = $msg =~ /^(\d+)\D(\d+)\D(\d+) (\S+)$/ or die 'ARGS';
my $dbh = $c->model;
- my $findid = $dbh->prepare_cached(q{SELECT id,channel FROM current_planet_stats
+ my $findid = $dbh->prepare_cached(q{SELECT pid,channel FROM current_planet_stats
WHERE x = ? AND y = ? and z = ?});
my ($id,$oc) = $dbh->selectrow_array($findid,undef,$x,$y,$z);
if ($channel ~~ $oc){
$c->reply("$x:$y:$z already got $oc as channel");
}elsif($id){
$dbh->begin_work;
- $dbh->do(q{UPDATE planets SET channel = $1 WHERE id = $2}
+ $dbh->do(q{UPDATE planets SET channel = $1 WHERE pid = $2}
,undef,$channel,$id);
$c->intel_log($id,"Set channel to: $channel");
$dbh->commit;
SELECT (c.landing_tick - tick()) AS eta, concat(i.shiptype||'/') AS shiptype
, dc.username
FROM calls c
- JOIN incomings i ON i.call = c.id
+ JOIN incomings i USING (call)
LEFT OUTER JOIN users dc ON dc.uid = c.dc
- JOIN users u ON u.uid = c.member
-WHERE open AND (c.landing_tick - tick()) >= 7
-GROUP BY c.id,c.landing_tick,dc.username
+WHERE status = 'Open' AND (c.landing_tick - tick()) >= 7
+GROUP BY call,c.landing_tick,dc.username
ORDER BY c.landing_tick;
});
$f->execute();
my ($avalue,$ascore) = $c->model->selectrow_array(q{
SELECT value,score FROM current_planet_stats
-WHERE id = (SELECT planet FROM users WHERE hostmask ILIKE ?)
+WHERE pid = (SELECT pid FROM users WHERE hostmask ILIKE ?)
}, undef, $c->host);
my ($tvalue,$tscore,$tsize) = $c->model->selectrow_array(q{
SELECT value,score,size FROM current_planet_stats
my ($value,$score) = $c->model->selectrow_array(q{
SELECT value,score FROM planet_stats WHERE tick = $2 AND
- id = (SELECT planet FROM users WHERE hostmask ILIKE $1)
+ pid = (SELECT pid FROM users WHERE hostmask ILIKE $1)
}, undef, $c->host,$tick);
unless ($value){
$c->reply("You don't have a planet registered.");
}
my $attackers = $c->model->prepare(q{
SELECT coords(p.x,p.y,p.z), ruler, planet FROM current_planet_stats p
- JOIN planet_stats ps using (id)
+ JOIN planet_stats ps using (pid)
WHERE ps.tick = $1 AND trunc(2000.0*$2*$3/ps.value)::int = $4
});
$attackers->execute($tick,$agents,$value,$stolen);
my $query = $c->model->prepare(q{SELECT scan_id
FROM scans
- WHERE planet = $1 AND type = $2 AND tick >= tick()});
+ WHERE pid = $1 AND type = $2 AND tick >= tick()});
$query->execute($planet,$type);
if (my $scan = $query->fetchrow_hashref){
my $req = $c->model->prepare(q{
SELECT * FROM scan_requests
WHERE uid = (SELECT uid FROM users WHERE hostmask ILIKE $1)
- AND planet = $2 AND type = $3 AND NOT sent
+ AND pid = $2 AND type = $3 AND NOT sent
});
$req->execute($c->host,$planet,$type);
$id = $scan->{id};
}else{
$req = $c->model->prepare(q{
-INSERT INTO scan_requests (uid,nick,planet,type)
+INSERT INTO scan_requests (uid,nick,pid,type)
VALUES((SELECT uid FROM users WHERE hostmask ILIKE $1),$2,$3,$4) RETURNING (id)
});
$req->execute($c->host,$c->nick,$planet,$type);
my $reqs = $c->model->prepare(q{
SELECT min(sr.id) AS id, x,y,z,type
FROM scan_requests sr
- JOIN current_planet_stats p ON p.id = sr.planet
+ JOIN current_planet_stats p USING (pid)
WHERE sr.time > NOW() - '30 min'::INTERVAL
AND NOT EXISTS (SELECT scan_id FROM scans
- WHERE planet = sr.planet
+ WHERE pid = sr.pid
AND type = sr.type
AND tick >= sr.tick
)
my $scan = $c->model->selectrow_hashref(q{
SELECT id, scan_id, tick FROM scans
-WHERE type = $1 AND planet = planetid($2,$3,$4,0) AND COALESCE(tick < $5,TRUE)
+WHERE type = $1 AND pid = planetid($2,$3,$4,0) AND COALESCE(tick < $5,TRUE)
ORDER BY tick DESC LIMIT 1
},undef,$type,$x,$y,$z,$tick);
unless ($scan->{id}){
my $f = $dbh->prepare(q{
SELECT username,SUM(fs.amount) AS amount
FROM users u
- JOIN (SELECT DISTINCT ON (planet) planet,fid FROM fleets
+ JOIN (SELECT DISTINCT ON (pid) pid,fid FROM fleets
WHERE mission = 'Full fleet' AND name <> 'Unit'
- ORDER BY planet,tick DESC,fid DESC
- ) f USING (planet)
+ ORDER BY pid,tick DESC,fid DESC
+ ) f USING (pid)
JOIN fleet_ships fs USING (fid)
WHERE ship ILIKE $1 AND uid IN (SELECT uid FROM groupmembers WHERE gid = 2)
GROUP BY username ORDER BY amount DESC
FROM fleet_ships fs
JOIN (SELECT fid,username
FROM fleets f
- JOIN users u USING (planet)
+ JOIN users u USING (pid)
WHERE mission = 'Full fleet' AND name <> 'Unit'
AND username ILIKE $1
- ORDER BY planet,tick DESC,fid DESC
+ ORDER BY pid,tick DESC,fid DESC
LIMIT 1
) f USING (fid)
ORDER BY num
my ($c,$planet, $message) = @_;
my $log = $c->model->prepare_cached(q{
INSERT INTO forum_posts (ftid,uid,message) VALUES(
- (SELECT ftid FROM planets WHERE id = $3)
+ (SELECT ftid FROM planets WHERE pid = $3)
,(SELECT uid FROM users WHERE hostmask ILIKE $1)
,$2)
});
my ($c,$call, $message) = @_;
my $log = $c->model->prepare(q{
INSERT INTO forum_posts (ftid,uid,message) VALUES(
- (SELECT ftid FROM calls WHERE id = $3)
+ (SELECT ftid FROM calls WHERE call = $3)
,(SELECT uid FROM users WHERE hostmask ILIKE $1),$2)
});
$log->execute($c->host,$message,$call);
my $disp = new NDIRC::Dispatcher;
-$disp->load('Basic','SMS');
+$disp->load(qw/Basic SMS Channel Def Intel Members PA Quotes Scans Usermgm/);
$ND::scanchan = '#testarmer';
$ND::defchan = '#testarlite';