Ë
    ¤õÆiÐ  ã                   óx   — d dl Z d dlmZ dede j                  fd„Zde j                  dededefd	„Zdeddfd
„Zy)é    N)ÚOptionalÚdb_pathÚreturnc                 ó^   — t        j                  | d¬«      }t         j                  |_        |S )Né   )Útimeout)Úsqlite3ÚconnectÚRowÚrow_factory)r   Úconns     ú%/var/www/html/luxverbi-app/db/bulk.pyÚbulk_dbr      s#   € Ü�?‰?˜7¨BÔ/€DÜ—{‘{€DÔØ€Kó    r   ÚtableÚcolc                 óž   — | j                  «       }|j                  d|› d�«       |j                  «       D �cg c]  }|d   ‘Œ	 }}||v S c c}w )NzPRAGMA table_info(ú)é   )ÚcursorÚexecuteÚfetchall)r   r   r   ÚcurÚrÚcolss         r   Ú_table_has_columnr      sO   € Ø
�+‰+‹-€CØ‡K�KÐ$ U G¨1Ð-Ô.ØŸ,™,›.Ö)�QˆAˆa‹DÐ)€DÐ)Ø�$ˆ;Ðùò *s   ¸A
c                 óØ   — t        | «      }|j                  «       }|j                  d«       t        |dd«      s|j                  d«       |j	                  «        |j                  «        y)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 | cancelled
          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
        )
        Ú	bulk_jobsÚaccount_aliasz3ALTER TABLE bulk_jobs ADD COLUMN account_alias TEXTN)r   r   r   r   ÚcommitÚclose)r   r   r   s      r   Úinit_bulk_dbr"      sX   € ô �7Ó€DØ
�+‰+‹-€Cà‡K�Kð#	ô%ôP ˜T ;°Ô@Ø�‰ÐIÔJà‡K�K„MØ‡J�J…Lr   )	r	   Útypingr   ÚstrÚ
Connectionr   Úboolr   r"   © r   r   ú<module>r(      s^   ðã Ý ð�Sð ˜W×/Ñ/ó ð˜G×.Ñ.ð °sð Àð Èó ð5˜#ð 5 $ô 5r   