fix: db.py SQL (<>ALL, escape %% in LIKE) + incremental_sync tz-aware compare
This commit is contained in:
@@ -37,6 +37,8 @@ def upsert_records(raw_orders: list) -> dict:
|
|||||||
def riin_incremental_sync() -> dict:
|
def riin_incremental_sync() -> dict:
|
||||||
db = SyncDB()
|
db = SyncDB()
|
||||||
latest = db.get_latest_ordered_at("RIIN")
|
latest = db.get_latest_ordered_at("RIIN")
|
||||||
|
if latest is not None and latest.tzinfo is not None:
|
||||||
|
latest = latest.replace(tzinfo=None)
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
from_dt = floor_to_hour(latest) if latest else floor_to_hour(now)
|
from_dt = floor_to_hour(latest) if latest else floor_to_hour(now)
|
||||||
to_dt = now
|
to_dt = now
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ def upsert_records(raw_orders: list) -> dict:
|
|||||||
def sds_incremental_sync() -> dict:
|
def sds_incremental_sync() -> dict:
|
||||||
db = SyncDB()
|
db = SyncDB()
|
||||||
latest = db.get_latest_ordered_at("SDS")
|
latest = db.get_latest_ordered_at("SDS")
|
||||||
|
if latest is not None and latest.tzinfo is not None:
|
||||||
|
latest = latest.replace(tzinfo=None)
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
from_dt = floor_to_hour(latest) if latest else floor_to_hour(now)
|
from_dt = floor_to_hour(latest) if latest else floor_to_hour(now)
|
||||||
if from_dt >= now:
|
if from_dt >= now:
|
||||||
|
|||||||
+2
-2
@@ -46,7 +46,7 @@ class SyncDB:
|
|||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(
|
cur.execute(
|
||||||
'SELECT DISTINCT "orderNo" FROM "Orders" WHERE "systemName"=%s '
|
'SELECT DISTINCT "orderNo" FROM "Orders" WHERE "systemName"=%s '
|
||||||
'AND "systemStatus" IS DISTINCT FROM ALL %s',
|
'AND ("systemStatus" IS NULL OR "systemStatus" <> ALL %s)',
|
||||||
(system_name, exclude_statuses),
|
(system_name, exclude_statuses),
|
||||||
)
|
)
|
||||||
rows = cur.fetchall()
|
rows = cur.fetchall()
|
||||||
@@ -92,7 +92,7 @@ class SyncDB:
|
|||||||
cur.execute(
|
cur.execute(
|
||||||
'SELECT DISTINCT o."orderNo", o."createdAt" FROM "Orders" o '
|
'SELECT DISTINCT o."orderNo", o."createdAt" FROM "Orders" o '
|
||||||
'JOIN "Goods" g ON g."orderNo"=o."orderNo" AND g."createdAt"=o."createdAt" '
|
'JOIN "Goods" g ON g."orderNo"=o."orderNo" AND g."createdAt"=o."createdAt" '
|
||||||
'WHERE o."systemName"=%s AND o."systemStatus"=ANY(%s) AND g."productionNo" LIKE \'100%\'',
|
'WHERE o."systemName"=%s AND o."systemStatus"=ANY(%s) AND g."productionNo" LIKE \'100%%\'',
|
||||||
(system_name, statuses),
|
(system_name, statuses),
|
||||||
)
|
)
|
||||||
rows = cur.fetchall()
|
rows = cur.fetchall()
|
||||||
|
|||||||
Reference in New Issue
Block a user