async def _get_table_info(self, table: str) -> Dict[str, Any]:
        """Get table structure information.

        Args:
            table: Table name

        Returns:
            Dictionary containing column information and primary keys
        """
        # Get column information using PRAGMA table_info
        async with self.conn.execute(f"PRAGMA table_info({table})") as cursor:
            columns = await cursor.fetchall()

        # Get primary key information from the same PRAGMA
        primary_keys = [col[1] for col in columns if col[5]]  # col[5] is pk flag

        # Build column metadata
        column_info = {}
        for col in columns:
            # col[1] is name, col[2] is type
            sqlite_type = col[2].lower().split("(")[0]  # Remove size constraints
            python_type = SQLITE_TYPE_MAP.get(sqlite_type, Any)

            column_info[col[1]] = {
                "python_type": python_type,
                "nullable": not col[3],  # col[3] is notnull
                "default": col[4],  # col[4] is dflt_value
                "sqlite_type": sqlite_type,
            }

        return {
            "columns": column_info,
            "primary_keys": primary_keys,
        }
Get table structure information.

        Args:
            table: Table name

        Returns:
            Dictionary containing column information and primary keys
        
backend/airweave/platform/sources/sqlite.py