X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=lib%2FNDWeb%2FController%2FAlliances.pm;h=d8b332017ae86043c314566bd25eca325274bba7;hb=33a44a03fa129739264f7ccd983e38c96c11a677;hp=efec3dd6f955ca6f58d845f15ffdf7577843533e;hpb=b6d8351387cf06b88e362a458aad1e0982e575dd;p=ndwebbie.git diff --git a/lib/NDWeb/Controller/Alliances.pm b/lib/NDWeb/Controller/Alliances.pm index efec3dd..d8b3320 100644 --- a/lib/NDWeb/Controller/Alliances.pm +++ b/lib/NDWeb/Controller/Alliances.pm @@ -4,8 +4,6 @@ use strict; use warnings; use parent 'Catalyst::Controller'; -use NDWeb::Include; - =head1 NAME NDWeb::Controller::Alliances - Catalyst Controller @@ -95,18 +93,63 @@ sub edit : Local { my $ticks = $c->req->param('ticks') || 48; $c->stash(showticks => $ticks); - $query = $dbh->prepare(intelquery q{ - o.alliance AS oalliance ,coords(o.x,o.y,o.z) AS ocoords, i.sender - ,t.alliance AS talliance,coords(t.x,t.y,t.z) AS tcoords, i.target - },q{NOT ingal AND (o.alliance = $1 OR t.alliance = $1) - AND (i.mission = 'Defend' OR i.mission = 'AllyDef') - AND COALESCE( t.alliance != o.alliance, TRUE) - AND i.tick > (tick() - $2) + $query = $dbh->prepare(q{ +SELECT salliance, scoords, sender, talliance, tcoords, target + ,mission, tick AS landingtick, eta, amount, ingal, username +FROM full_intel +WHERE NOT ingal AND (salliance = $1 OR talliance = $1) + AND (mission = 'Defend' OR mission = 'AllyDef') + AND COALESCE( talliance <> salliance, TRUE) + AND tick > (tick() - $2) +ORDER BY tick DESC, mission }); $query->execute($a->{name}, $ticks); $c->stash(intel => $query->fetchall_arrayref({}) ); } + +sub pscans : Local { + my ( $self, $c, $id ) = @_; + my $dbh = $c->model; + + my $members = $dbh->prepare(q{ + SELECT pid AS id, coords(x,y,z), metal, crystal, eonium, ps.tick + ,planet_status,hit_us, sizerank, scorerank, valuerank, xprank + FROM current_planet_stats p left outer join current_planet_scans ps using (pid) + WHERE p.aid = ? + ORDER BY x,y,z + }); + $members->execute($id); + $c->stash(members => $members->fetchall_arrayref({}) ); + +} + +sub fleet : Local { + my ( $self, $c, $id ) = @_; + my $dbh = $c->model; + + my $query = $dbh->prepare(q{SELECT ship, id FROM ship_stats WHERE id >= 0 ORDER BY id ASC;}); + $query->execute; + $c->stash(ships => $query->fetchall_arrayref({})); + + my $members = $dbh->prepare(q{ +WITH +aus AS (SELECT DISTINCT ON (pid) pid, fid, name,tick + FROM fleets f join fleet_scans fs using (fid) + WHERE mission = 'Full fleet' and name IN ('Advanced Unit', 'Military') + ORDER BY pid,tick DESC) +,ships AS (SELECT pid, tick, ship, amount, id AS ship_id + FROM fleet_ships fs JOIN aus USING(fid) JOIN ship_stats USING(ship)) +SELECT pid, coords(x,y,z), p.race, tick, jsonb_object_agg(ship_id, amount) AS ships + FROM ships JOIN current_planet_stats p USING (pid) + WHERE p.aid = $1 + GROUP BY x,y,z,pid,race,tick; + }); + $members->execute($id); + $c->stash(members => $members->fetchall_arrayref({}) ); + +} + sub postallianceupdate : Local { my ( $self, $c, $id, $order ) = @_; my $dbh = $c->model; @@ -189,12 +232,8 @@ sub hostile : Local { } my $query = $dbh->prepare(q{ - SELECT s.alliance_id AS id,s.alliance AS name,count(*) AS hostile_count -FROM calls c - JOIN incomings i ON i.call = c.id - JOIN current_planet_stats s ON i.sender = s.id -WHERE c.landing_tick - i.eta > $1 and c.landing_tick - i.eta < $2 -GROUP BY s.alliance_id,s.alliance +SELECT aid, alliance, hostile_count, targeted, targeted_raids +FROM hostile_alliances($1,$2) ORDER BY hostile_count DESC }); $query->execute($begintick,$endtick);