Initial content, migrated from the aml gateway rpi7-am-1

This commit is contained in:
2026-10-02 19:48:16 +02:00
parent b17f125d2d
commit e83ecb5bfc
4 changed files with 46 additions and 1 deletions
+8 -1
View File
@@ -1,3 +1,10 @@
# bar-closer
Nightly close of oven_bar rows left without an exit
Runs once a day at 04:00 and exits. Closes every `oven_bar` row that was opened but never
got an exit, setting `exited_time` to its `entered_time`, so a missed exit detection does not
leave a bar open forever and shift `bar-tracker`'s oldest-open matching.
Reads no signals, which is why `signals.yml` is empty. Needs the db-controller reachable from
the job's sidecar. A query returns at most 100 rows, so more than 100 orphans take more than one
night to clear. Runs in `docker.izazpi.cloud/aml/aml-python`; the version is in
`schedule.yaml`.
+27
View File
@@ -0,0 +1,27 @@
from i7lib.dbutils import Database
from i7lib.timeutils import to_datetime
def main():
db = Database()
rows = db.query(
"oven_bar",
filters=[
{"column": "exited_time", "op": "eq", "value": 0},
{"column": "deleted", "op": "eq", "value": 0},
],
)
if not rows:
print("no orphan bars to close")
return
for row in rows:
db.update("oven_bar", row["id"], {"exited_time": row["entered_time"]})
dt = to_datetime(row["entered_time"]).strftime("%Y-%m-%d %H:%M:%S")
print(f"closed orphan bar id={row['id']}, entered_time={dt}")
print(f"closed {len(rows)} orphan bar(s)")
if __name__ == "__main__":
main()
+11
View File
@@ -0,0 +1,11 @@
name: bar-closer
active: true
schedule: "0 4 * * *"
action: run
runOnStartup: false
imageName: docker.izazpi.cloud/aml/aml-python:0.1.0
command: ["python", "/app/bar_closer.py"]
maxCpuCores: 0.5
maxMemoryMb: 128
autoremove: false
logOption: 1
View File