trainlog/tools/mark_ai_session_drafts_published.py

38 lines
1.2 KiB
Python

#!/usr/bin/env python3
"""Commit the lifecycle cursor for one already-published AI draft batch."""
from __future__ import annotations
import argparse
import datetime as dt
import json
import sqlite3
from pathlib import Path
from export_ai_session_drafts import mark_published
from trainlog_sqlite import connect_database
def main():
parser = argparse.ArgumentParser()
parser.add_argument("artifact", type=Path)
parser.add_argument("--database", required=True, type=Path)
args = parser.parse_args()
try:
payload = json.loads(args.artifact.read_text(encoding="utf-8"))
connection = connect_database(args.database)
try:
published_at = dt.datetime.now(dt.timezone.utc).isoformat(
timespec="seconds").replace("+00:00", "Z")
count = mark_published(connection, payload, published_at)
finally:
connection.close()
print(f"AI_SESSION_DRAFT_PUBLISH_MARK=PASS drafts={count}")
return 0
except (OSError, sqlite3.Error, ValueError, json.JSONDecodeError) as error:
print(f"AI_SESSION_DRAFT_PUBLISH_MARK=FAIL {error}")
return 1
if __name__ == "__main__":
raise SystemExit(main())