
    j                     R   S r SSKJr  SSKrSSKrSSKJr  \" \R                  R                  S5      =(       d    \" \	5      R                  S-  5      r\" \R                  R                  S5      =(       d    \" \	5      R                  S-  5      r/ S	QrSS
 jr\S:X  a  \" 5         gg)a  
Migration F9 - tablas fotos_obra + daily_log.

Ejecutar:
    cd 02_HERRAMIENTAS/db
    python migrate_f9.py

Idempotente: usa CREATE TABLE IF NOT EXISTS. No toca data existente.
No corre init_db.sql completo (eso resetearia obras/rubros con seeds existentes).
    )annotationsN)PathDATABASE_PATHzergon.db	BLOBS_DIRblobs)a  
    CREATE TABLE IF NOT EXISTS fotos_obra (
      id              INTEGER PRIMARY KEY AUTOINCREMENT,
      obra_id         INTEGER NOT NULL REFERENCES obras(id) ON DELETE CASCADE,
      fecha           TEXT NOT NULL,
      sector          TEXT,
      piso            TEXT,
      nota            TEXT,
      blob_path       TEXT NOT NULL,
      exif_gps_lat    REAL,
      exif_gps_lon    REAL,
      exif_fecha      TEXT,
      usuario         TEXT,
      mime_type       TEXT NOT NULL DEFAULT 'image/jpeg',
      size_bytes      INTEGER NOT NULL DEFAULT 0 CHECK (size_bytes >= 0),
      created_at      TEXT NOT NULL DEFAULT (datetime('now'))
    )
    a  
    CREATE TABLE IF NOT EXISTS daily_log (
      id              INTEGER PRIMARY KEY AUTOINCREMENT,
      obra_id         INTEGER NOT NULL REFERENCES obras(id) ON DELETE CASCADE,
      fecha           TEXT NOT NULL,
      autor           TEXT,
      actividades     TEXT,
      observaciones   TEXT,
      clima           TEXT,
      decisiones_key  TEXT,
      created_at      TEXT NOT NULL DEFAULT (datetime('now'))
    )
    zNCREATE INDEX IF NOT EXISTS idx_fotos_obra_fecha ON fotos_obra (obra_id, fecha)zMCREATE INDEX IF NOT EXISTS idx_daily_log_fecha  ON daily_log (obra_id, fecha)c                    [         R                  5       (       d  [        S[          S35      e[        R                  " [
        SS9  [        S[
         35        [        R                  " [        [         5      5      n U R                  S5         [         H  nU R                  U5        M     U R                  5         U R                  S5      R                  5       n[        SU Vs/ s H  o3S	   PM	     sn 35        U R                  S
5      R                  5       S	   nU R                  S5      R                  5       S	   n[        SU SU 35        [        S5        U R                  5         g s  snf ! U R                  5         f = f)Nzergon.db no encontrada en z. Corre init_db.py primero.T)exist_okz  [migrate_f9] blobs dir: zPRAGMA foreign_keys = ONzfSELECT name FROM sqlite_master WHERE type='table' AND name IN ('fotos_obra','daily_log') ORDER BY namez!  [migrate_f9] tablas presentes: r   zSELECT COUNT(*) FROM fotos_obrazSELECT COUNT(*) FROM daily_logz!  [migrate_f9] filas: fotos_obra=z, daily_log=z  [migrate_f9] OK)DB_PATHexists
SystemExitosmakedirsr   printsqlite3connectstrexecuteDDLcommitfetchallfetchoneclose)connstmtrowsrcfcds         /app/db/migrate_f9.pymainr    9   s?   >>5gY>YZ[[KK	D)	&yk
23??3w<(DLL+,DLL ||C
 (* 	 	12FAQ42F1GHI\\;<EEGJ\\:;DDFqI1"\"FG!"

 3G 	

s    AE1 $E,
2A)E1 ,E1 1F__main__)returnNone)__doc__
__future__r   r   r   pathlibr   environget__file__parentr
   r   r   r    __name__     r   <module>r.      s   	 # 	  
rzz~~o.V4>3H3H:3U
W,Qh1F1F1PR	"J8 zF r-   