<?xml version="1.0" encoding="UTF-8" ?>
<XMLDB PATH="local/zooms3/db" VERSION="20260518" COMMENT="XMLDB file for local_zooms3"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd">
  <TABLES>
    <TABLE NAME="local_zooms3_recording_sync" COMMENT="Tracks zoom recording download and S3 sync status">
      <FIELDS>
        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
        <FIELD NAME="meeting_id" TYPE="int" LENGTH="15" NOTNULL="true" SEQUENCE="false" COMMENT="Zoom meeting ID"/>
        <FIELD NAME="meeting_uuid" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="Zoom meeting UUID"/>
        <FIELD NAME="topic" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="Meeting topic"/>
        <FIELD NAME="host_email" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="Host email"/>
        <FIELD NAME="status" TYPE="char" LENGTH="20" NOTNULL="true" DEFAULT="pending" SEQUENCE="false" COMMENT="pending|processing|completed|failed|token_expired|unrecoverable|transcoding|ready|transcode_failed"/>
        <FIELD NAME="recording_type" TYPE="char" LENGTH="50" NOTNULL="false" SEQUENCE="false" COMMENT="Selected recording view type e.g. shared_screen_with_speaker_view"/>
        <FIELD NAME="file_size" TYPE="int" LENGTH="15" NOTNULL="false" SEQUENCE="false" COMMENT="Recording file size in bytes"/>
        <FIELD NAME="s3_path" TYPE="text" NOTNULL="false" SEQUENCE="false" COMMENT="S3 object key after upload"/>
        <FIELD NAME="download_url" TYPE="text" NOTNULL="false" SEQUENCE="false" COMMENT="Zoom download URL"/>
        <FIELD NAME="download_token" TYPE="text" NOTNULL="false" SEQUENCE="false" COMMENT="Zoom JWT download token"/>
        <FIELD NAME="token_expires_at" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="Token expiry timestamp"/>
        <FIELD NAME="retry_count" TYPE="int" LENGTH="3" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Number of retry attempts"/>
        <FIELD NAME="last_attempt_at" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="Timestamp of last attempt"/>
        <FIELD NAME="error_log" TYPE="text" NOTNULL="false" SEQUENCE="false" COMMENT="Error details on failure"/>
        <FIELD NAME="recovery_method" TYPE="char" LENGTH="20" NOTNULL="false" SEQUENCE="false" COMMENT="null or zoom_api"/>
        <FIELD NAME="webhook_json_path" TYPE="text" NOTNULL="false" SEQUENCE="false" COMMENT="Path to webhook.json in temp dir"/>
        <FIELD NAME="started_at" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="Processing start timestamp"/>
        <FIELD NAME="completed_at" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="Processing completion timestamp"/>
        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
        <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
      </FIELDS>
      <KEYS>
        <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
      </KEYS>
      <INDEXES>
        <INDEX NAME="meeting_id_idx" UNIQUE="false" FIELDS="meeting_id"/>
        <INDEX NAME="status_idx" UNIQUE="false" FIELDS="status"/>
        <INDEX NAME="status_retry_idx" UNIQUE="false" FIELDS="status,retry_count"/>
      </INDEXES>
    </TABLE>
  </TABLES>
</XMLDB>
