def create_metadata_cache()

in dbai_src/dbai.py [0:0]


    def create_metadata_cache(self):
        """
        create the metadata cache file for the specified Tables in DB
        for all columns.
        """
        gen_description_prompt = """
        Based on the columns information of this table.
        Generate a very brief description for this table.
        TABLE: {table_id}
        columns_info: {columns_info}
        """

        if self.tables_list in [[], [''], '']:
            api_response = self.bq_client.list_tables(self.dataset_id)
            self.tables_list = [table.table_id for table in api_response]

        metadata = {}
        for table_id in self.tables_list:
            columns_info = self.bq_client.get_table(
                    f'{self.dataset_id}.{table_id}'
                ).to_api_repr()['schema']
            # remove unwanted details like 'mode'
            for field in columns_info.get('fields', []):
                field.pop('mode', None)

            metadata[table_id] = {}
            metadata[table_id]["table_name"] = table_id
            metadata[table_id]["columns_info"] = columns_info
            prompt = gen_description_prompt.format(
                table_id=table_id,
                columns_info=columns_info
                )
            metadata[table_id]["table_description"] = gemini.generate_content(
                prompt
                ).text

        return metadata