view sql/job-todo.sql @ 19:de4bf839b565

misc: revamp SQL
author David Demelier <markand@malikania.fr>
date Fri, 15 Jul 2022 11:11:48 +0200
parents 8c408176d2b1
children dd078aea5d02
line wrap: on
line source

--
-- job-todo.sql -- list jobs to perform for a worker
--
-- Copyright (c) 2021 David Demelier <markand@malikania.fr>
--
-- Permission to use, copy, modify, and/or distribute this software for any
-- purpose with or without fee is hereby granted, provided that the above
-- copyright notice and this permission notice appear in all copies.
--
-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--

--
-- This request won't list jobs that were created before the worker itself
-- otherwise when adding a new worker it would need to run potentially a very
-- high number of jobs
--
SELECT `job`.`rowid`
     , `job`.`tag`
     , `job`.`project_id`
  FROM `job`
 WHERE `job`.`rowid`
NOT IN (
       SELECT `jobresult`.`job_id`
         FROM `jobresult`
        WHERE `jobresult`.`worker_id` = ?
       )
   AND `job`.`date` >= (
                 SELECT `worker`.`date`
                   FROM `worker`
                  WHERE `worker`.`rowid` = ?
                 )
 LIMIT ?