Esempio n. 1
0
    def __refresh(self, context, table_info, field_list=__field_list):
        query_builder = collections.deque()
        query_builder.append("SELECT ")
        query_builder.append(",".join(map('"{}"'.format, field_list)))

        query_builder.append(
            " FROM {} WHERE tenant='{}' AND name='{}'".format(
                self.SYSTEM_TABLE_TABLE_INFO,
                context.tenant, table_info.name
            )
        )

        result = self.__cluster_handler.execute_query(
            "".join(query_builder), consistent=True
        )

        if not result:
            self._remove_table_info_from_cache(context, table_info.name)
            raise exception.TableNotExistsException(
                "Table '{}' does not exist".format(table_info.name)
            )
        for name, value in result[0].iteritems():
            if name == "schema":
                value = models.ModelBase.from_json(value)
            setattr(table_info, name, value)
        return True
Esempio n. 2
0
    def update(self, context, table_info, field_list=None):
        if not field_list:
            field_list = self.__field_list

        if 'last_update_date_time' not in field_list:
            field_list.append('last_update_date_time')
        table_info.last_update_date_time = datetime.now()

        enc = encoder.Encoder()

        query_builder = collections.deque()
        query_builder.append("UPDATE {} SET ".format(
            self.SYSTEM_TABLE_TABLE_INFO))

        query_builder.append(",".join([
            '"{}"={}'.format(
                field, enc.cql_encode_all_types(getattr(table_info, field)))
            for field in field_list
        ]))

        query_builder.append(
            " WHERE tenant='{}' AND name='{}' IF exists=1".format(
                context.tenant, table_info.name))

        result = self.__cluster_handler.execute_query("".join(query_builder),
                                                      consistent=True)

        if not result[0]['[applied]']:
            raise exception.TableNotExistsException(
                "Table {} is not exists".format(table_info.name))
        self._remove_table_info_from_cache(context, table_info.name)
        return True