--- name: sqlite_column_exists kind: function lang: go domain: infra version: "1.0.0" purity: impure signature: "func ColumnExists(conn *sql.DB, table, name string) (bool, error)" description: "Comprueba si una columna existe en una tabla SQLite consultando PRAGMA table_info. Retorna false sin error si la tabla no existe." tags: [database, sqlite, schema, pragma, column, migration] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: ["database/sql", "fmt"] params: - name: conn desc: "conexion SQLite abierta" - name: table desc: "nombre de la tabla a inspeccionar" - name: name desc: "nombre de la columna a buscar" output: "true si la columna existe, false si no existe o la tabla no existe; error si la query falla" tested: true tests: - "columna existente retorna true" - "columna inexistente retorna false" - "tabla inexistente retorna false sin error" test_file_path: "functions/infra/sqlite_column_exists_test.go" file_path: "functions/infra/sqlite_column_exists.go" --- ## Ejemplo ```go exists, err := ColumnExists(db, "cards", "assignee_id") if err != nil { return err } if !exists { _, err = db.Exec(`ALTER TABLE cards ADD COLUMN assignee_id TEXT`) } ``` ## Notas Extraido de apps/kanban/backend/db.go. Util como comprobacion previa a ALTER TABLE ADD COLUMN en scripts de migracion que necesitan ser idempotentes. PRAGMA table_info retorna cero filas si la tabla no existe, por lo que la funcion retorna false sin error en ese caso.