X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=lib%2FNDWeb%2FController%2FCovOp.pm;h=7e3d2e5a1c48f6591c63cd41409cd27508eb8e2c;hb=1b1eb5ca9edbf7914f749f592a959f353a0968ca;hp=516e45d23a918ec033ae29f28c99609abb24ac14;hpb=07c3b7b9a60ac7089eb7bc6bf3b3cd5b74be7d71;p=ndwebbie.git diff --git a/lib/NDWeb/Controller/CovOp.pm b/lib/NDWeb/Controller/CovOp.pm index 516e45d..7e3d2e5 100644 --- a/lib/NDWeb/Controller/CovOp.pm +++ b/lib/NDWeb/Controller/CovOp.pm @@ -23,58 +23,76 @@ Catalyst Controller. sub index :Path :Args(0) { my ( $self, $c ) = @_; - $c->stash( where => q{AND MaxResHack > 130000 - ORDER BY minalert ASC,MaxResHack DESC}); + $c->stash( where => q{hack5 > 60000 AND minalert < 60 + ORDER BY hack5 DESC, hack13 DESC + ,(CASE WHEN tick() - lastcovop < 6 THEN lastcovop ELSE NULL END) NULLS FIRST + ,minalert, pstick DESC, dstick DESC,x,y,z + }); + $c->forward('list'); +} + +sub easy : Local { + my ( $self, $c ) = @_; + $c->stash( where => q{minalert < 60 + ORDER BY minalert, hack5 DESC,lastcovop NULLS FIRST + ,hack13 DESC,pstick DESC, dstick DESC,x,y,z + }); $c->forward('list'); } sub distwhores : Local { my ( $self, $c ) = @_; - $c->stash( where => qq{AND distorters > 0 - ORDER BY distorters DESC, minalert ASC}); + $c->stash( where => q{distorters > 0 + ORDER BY distorters DESC, minalert + ,lastcovop NULLS FIRST,pstick DESC, dstick DESC,x,y,z + }); $c->forward('list'); } sub marktarget : Local { my ( $self, $c, $target ) = @_; my $dbh = $c->model; - - my $update = $dbh->prepare(q{INSERT INTO covop_attacks (uid,id,tick) VALUES(?,?,tick())}); - $update->execute($c->user->id,$target); - - $c->res->redirect($c->req->referer); + my $update = $dbh->prepare(q{INSERT INTO covop_attacks (uid,pid,tick) VALUES(?,?,tick())}); + eval{ + $update->execute($c->user->id,$target); + }; + $c->forward('/redirect'); } sub list : Private { my ( $self, $c ) = @_; my $dbh = $c->model; - my $query = $dbh->prepare(q{SELECT id, coords, metal, crystal, eonium - , covop_alert(seccents,structures,gov,0) AS minalert - , covop_alert(seccents,structures,gov,50) AS maxalert - , distorters,gov - , MaxResHack,co.tick AS lastcovop - FROM (SELECT p.id,coords(x,y,z), metal,crystal,eonium, - seccents,NULLIF(ss.total::integer,0) AS structures,distorters - ,max_bank_hack(metal,crystal,eonium,p.value - ,(SELECT value FROM current_planet_stats WHERE id = ?)) AS MaxResHack - , planet_status, relationship,gov + my $query = $dbh->prepare(q{ + SELECT * FROM ( + SELECT *, pid AS id + ,(2*pvalue::float/cvalue) :: Numeric(4,1) AS max_bank_hack + ,max_bank_hack(metal,crystal,eonium,pvalue,cvalue,5) AS hack5 + ,max_bank_hack(metal,crystal,eonium,pvalue,cvalue,13) AS hack13 + FROM (SELECT pid,coords(x,y,z),x,y,z,size + ,metal + metal_roids * (tick()-ps.tick) * 125 AS metal + ,crystal + crystal_roids * (tick()-ps.tick) * 125 AS crystal + ,eonium + eonium_roids * (tick()-ps.tick) * 125 AS eonium + ,distorters,guards + ,covop_alert(seccents,ds.total,size,guards,gov,0) AS minalert + ,covop_alert(seccents,ds.total,size,guards,gov,50) AS maxalert + , planet_status, relationship,gov,ps.tick AS pstick, ds.tick AS dstick + , p.value AS pvalue, c.value AS cvalue FROM current_planet_stats p - LEFT OUTER JOIN planet_scans ps ON p.id = ps.planet - LEFT OUTER JOIN structure_scans ss ON p.id = ss.planet + LEFT OUTER JOIN current_planet_scans ps USING (pid) + LEFT OUTER JOIN current_development_scans ds USING (pid) + CROSS JOIN (SELECT value FROM current_planet_stats WHERE pid = $1) c ) AS foo - LEFT OUTER JOIN (SELECT id,max(tick) AS tick FROM covop_attacks GROUP BY id) co USING (id) - WHERE (metal IS NOT NULL OR seccents IS NOT NULL) + LEFT OUTER JOIN (SELECT pid,max(tick) AS lastcovop FROM covop_attacks + GROUP BY pid) co USING (pid) + WHERE (metal IS NOT NULL OR distorters IS NOT NULL) AND (NOT planet_status IN ('Friendly','NAP')) AND (relationship IS NULL OR NOT relationship IN ('Friendly','NAP')) - } . $c->stash->{where}); + ) a + WHERE } . $c->stash->{where}); $query->execute($c->user->planet); - my @targets; - while (my $target = $query->fetchrow_hashref){ - push @targets,$target; - } - $c->stash(targets => \@targets); + $c->stash(targets => $query->fetchall_arrayref({})); $c->stash(template => 'covop/index.tt2'); }