U
    ?ti                     @   sP   d dl Z d dlmZ ee jdddZe jeeedddZeddd	d
ZdS )    N)Optional)db_pathreturnc                 C   s   t j| dd}t j|_|S )N   )timeout)sqlite3connectRowrow_factory)r   conn r   %/var/www/html/luxverbi-app/db/bulk.pybulk_db   s    r   )r   tablecolr   c                 C   s4   |   }|d| d dd | D }||kS )NzPRAGMA table_info()c                 S   s   g | ]}|d  qS )   r   ).0rr   r   r   
<listcomp>   s     z%_table_has_column.<locals>.<listcomp>)cursorexecutefetchall)r   r   r   curcolsr   r   r   _table_has_column   s    r   c                 C   sD   t | }| }|d t|dds0|d |  |  dS )u   
    Crea la tabla bulk_jobs si no existe.
    Nota: mantenemos access_token NOT NULL por compatibilidad con tu versión anterior.
    Añadimos account_alias opcional (para refrescar tokens en el cron).
    a  
        CREATE TABLE IF NOT EXISTS bulk_jobs (
          id TEXT PRIMARY KEY,
          created_at_ts INTEGER NOT NULL,
          publish_at_ts INTEGER NOT NULL,
          next_attempt_ts INTEGER NOT NULL,
          status TEXT NOT NULL,              -- scheduled | submitting | submitted | complete | failed
          attempts INTEGER NOT NULL DEFAULT 0,
          last_error TEXT,

          -- token actual (puede caducar). Se mantiene por compatibilidad.
          access_token TEXT NOT NULL,

          -- alias opcional para refrescar token en cron (recomendado)
          account_alias TEXT,

          title TEXT,
          privacy_level TEXT NOT NULL,
          allow_comment INTEGER NOT NULL,
          allow_duet INTEGER NOT NULL,
          allow_stitch INTEGER NOT NULL,
          commercial_toggle INTEGER NOT NULL,
          brand_organic_toggle INTEGER NOT NULL,
          brand_content_toggle INTEGER NOT NULL,
          is_aigc INTEGER NOT NULL,

          stored_filename TEXT NOT NULL,
          original_filename TEXT,
          video_url TEXT,

          publish_id TEXT,
          last_status TEXT,
          last_fail_reason TEXT,
          updated_at_ts INTEGER NOT NULL
        )
        Z	bulk_jobsZaccount_aliasz3ALTER TABLE bulk_jobs ADD COLUMN account_alias TEXTN)r   r   r   r   commitclose)r   r   r   r   r   r   init_bulk_db   s    (
r   )	r   typingr   str
Connectionr   boolr   r   r   r   r   r   <module>   s   