refactored the shipcall's GET mysql-query into a separate file and reused it in the evaluation routine.
This commit is contained in:
parent
2671bbbd05
commit
6966ba65e3
@ -8,6 +8,7 @@ from .. import local_db
|
|||||||
from ..services.auth_guard import check_jwt
|
from ..services.auth_guard import check_jwt
|
||||||
|
|
||||||
from BreCal.database.update_database import evaluate_shipcall_state
|
from BreCal.database.update_database import evaluate_shipcall_state
|
||||||
|
from BreCal.database.sql_queries import create_sql_query_shipcall_get
|
||||||
|
|
||||||
def GetShipcalls(options):
|
def GetShipcalls(options):
|
||||||
"""
|
"""
|
||||||
@ -18,20 +19,7 @@ def GetShipcalls(options):
|
|||||||
|
|
||||||
pooledConnection = local_db.getPoolConnection()
|
pooledConnection = local_db.getPoolConnection()
|
||||||
commands = pydapper.using(pooledConnection)
|
commands = pydapper.using(pooledConnection)
|
||||||
query = ("SELECT s.id as id, ship_id, type, eta, voyage, etd, arrival_berth_id, departure_berth_id, tug_required, pilot_required, " +
|
query = create_sql_query_shipcall_get(options)
|
||||||
"flags, s.pier_side, bunkering, replenishing_terminal, replenishing_lock, draft, tidal_window_from, " +
|
|
||||||
"tidal_window_to, rain_sensitive_cargo, recommended_tugs, anchored, moored_lock, canceled, evaluation, " +
|
|
||||||
"evaluation_message, evaluation_time, evaluation_notifications_sent, s.created as created, s.modified as modified, time_ref_point " +
|
|
||||||
"FROM shipcall s " +
|
|
||||||
"LEFT JOIN times t ON t.shipcall_id = s.id AND t.participant_type = 8 " +
|
|
||||||
"WHERE " +
|
|
||||||
"(type = 1 AND " +
|
|
||||||
"((t.id IS NOT NULL AND t.eta_berth >= DATE(NOW() - INTERVAL %d DAY)) OR " +
|
|
||||||
"(eta >= DATE(NOW() - INTERVAL %d DAY)))) OR " +
|
|
||||||
"((type = 2 OR type = 3) AND " +
|
|
||||||
"((t.id IS NOT NULL AND t.etd_berth >= DATE(NOW() - INTERVAL %d DAY)) OR " +
|
|
||||||
"(etd >= DATE(NOW() - INTERVAL %d DAY)))) " +
|
|
||||||
"ORDER BY eta") % (options["past_days"], options["past_days"], options["past_days"], options["past_days"])
|
|
||||||
|
|
||||||
data = commands.query(query, model=model.Shipcall.from_query_row, buffered=True)
|
data = commands.query(query, model=model.Shipcall.from_query_row, buffered=True)
|
||||||
for shipcall in data:
|
for shipcall in data:
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import pydapper
|
|||||||
from BreCal.schemas import model
|
from BreCal.schemas import model
|
||||||
from BreCal.local_db import getPoolConnection
|
from BreCal.local_db import getPoolConnection
|
||||||
from BreCal.database.update_database import evaluate_shipcall_state
|
from BreCal.database.update_database import evaluate_shipcall_state
|
||||||
|
from BreCal.database.sql_queries import create_sql_query_shipcall_get
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
import schedule
|
import schedule
|
||||||
@ -26,16 +27,8 @@ def UpdateShipcalls(options:dict = {'past_days':2}):
|
|||||||
pooledConnection = getPoolConnection()
|
pooledConnection = getPoolConnection()
|
||||||
commands = pydapper.using(pooledConnection)
|
commands = pydapper.using(pooledConnection)
|
||||||
|
|
||||||
query = ("SELECT s.id as id, ship_id, type, eta, voyage, etd, arrival_berth_id, departure_berth_id, tug_required, pilot_required, "
|
# obtain data from the MYSQL database (uses 'options' to filter the resulting data by the ETA, considering those entries of 'past_days'-range)
|
||||||
"flags, s.pier_side, bunkering, replenishing_terminal, replenishing_lock, draft, tidal_window_from, tidal_window_to, rain_sensitive_cargo, recommended_tugs, "
|
query = create_sql_query_shipcall_get(options)
|
||||||
"anchored, moored_lock, canceled, evaluation, evaluation_message, evaluation_notifications_sent, evaluation_time, s.created as created, s.modified as modified, time_ref_point FROM shipcall s " +
|
|
||||||
"LEFT JOIN times t ON t.shipcall_id = s.id AND t.participant_type = 8 "
|
|
||||||
"WHERE "
|
|
||||||
"(type = 1 AND (COALESCE(t.eta_berth, eta) >= DATE(NOW() - INTERVAL %d DAY))) OR "
|
|
||||||
"((type = 2 OR type = 3) AND (COALESCE(t.etd_berth, etd) >= DATE(NOW() - INTERVAL %d DAY)))"
|
|
||||||
"ORDER BY s.id") % (options["past_days"], options["past_days"])
|
|
||||||
|
|
||||||
# obtain data from the MYSQL database
|
|
||||||
data = commands.query(query, model=model.Shipcall)
|
data = commands.query(query, model=model.Shipcall)
|
||||||
|
|
||||||
# get the shipcall ids, which are of interest
|
# get the shipcall ids, which are of interest
|
||||||
|
|||||||
Reference in New Issue
Block a user