示例#1
0
 def __build_from_query__(self):
     """
     Method for build from query
     :return: from query
     """
     return RFUtilsDb.build_from_query(db_engine_type=self.db_engine_type,
                                       table_name=self._table_name)
示例#2
0
    def add(self, vo, params=None, rf_transaction=None, locale=None):
        """
        Method for add in query
        :param vo: to add
        :param params:
        :param rf_transaction:
        :param locale:
        :return: vo inserted
        """
        # Audit create vo
        if RFUtilsBuilt.has_attr(vo, "createdAt"):
            RFUtilsBuilt.set_attr(vo, "createdAt", datetime.datetime.now())

        # Audit update vo
        if RFUtilsBuilt.has_attr(vo, "updatedAt"):
            RFUtilsBuilt.set_attr(vo, "updatedAt", datetime.datetime.now())

        dic_params_query = {}
        query_builder_insert = RFUtilsDb.build_insert_query(
            vo_instance=vo, dic_params_query=dic_params_query)
        result = rf_transaction.execute_query(
            query_builder_insert,
            dic_params_query=dic_params_query,
            insert=True)

        # set latest pk inserted
        if len(vo.__ar_pk_fields__) == 1:
            RFUtilsBuilt.set_attr(vo, vo.__ar_pk_fields__[0], result)

        return vo
示例#3
0
    def list(self,
             ar_fields=None,
             ar_filters=None,
             ar_joins=None,
             ar_orders=None,
             ar_groups=None,
             limit=None,
             params=None,
             rf_transaction=None,
             locale=None):
        """
        Method for list query
        :param ar_fields:
        :param ar_filters:
        :param ar_joins:
        :param ar_orders:
        :param ar_groups:
        :param limit:
        :param params:
        :param rf_transaction:
        :param locale:
        :return: list of query
        """
        dic_params_query = {}

        # Build select
        query_builder_select = self.__build_select_query__(
            ar_fields_query=self.__get_fields_query__(ar_fields,
                                                      rf_transaction),
            ar_joins_query=ar_joins)

        # Build from
        query_builder_form = self.__build_from_query__()

        # Build joins
        query_builder_joins = self.__build_joins_query__(ar_joins)

        # Build where
        query_builder_where = self.__build_where_query__(
            ar_filters_query=ar_filters, dic_params_query=dic_params_query)

        # Build groupby
        # TODO
        # Build orderby
        query_builder_order = self.__build_order_query__(ar_orders=ar_orders)

        # Build limit
        query_builder_limit = self.__build_limit_query__(
            limit=limit, dic_params_query=dic_params_query)

        query_builder = query_builder_select + query_builder_form + query_builder_joins + query_builder_where + \
                        query_builder_order + query_builder_limit

        ar_data = rf_transaction.execute_list_query(
            query_builder, dic_params_query=dic_params_query)

        ar_response = RFUtilsDb.fetch_value_query(self.vo_class, ar_data)

        return ar_response
示例#4
0
 def __build_order_query__(self, ar_orders=None):
     """
     Method for build order query
     :param ar_orders:  orders for build
     :return: order query
     """
     return RFUtilsDb.build_order_query(ar_orders=ar_orders,
                                        db_engine_type=self.db_engine_type)
示例#5
0
 def __build_limit_query__(self, limit=None, dic_params_query={}):
     """
     Method for muild limit
     :param limit: to build
     :param dic_params_query: to set limit query
     :return: build limit query
     """
     return RFUtilsDb.build_limit(limit=limit,
                                  dic_params_query=dic_params_query)
示例#6
0
 def __build_joins_query__(self, ar_joins_query):
     """
     Method for build joins query
     :param ar_joins_query: to build
     :return: joins for query
     """
     return RFUtilsDb.build_joins_query(db_engine_type=self.db_engine_type,
                                        ar_joins_query=ar_joins_query,
                                        vo_class_name=self._vo_class_name)
示例#7
0
 def __build_where_query__(self,
                           ar_filters_query=None,
                           dic_params_query={}):
     """
     Mhetod for build where query
     :param ar_filters_query: to apply
     :param dic_params_query: for add to apply in engine database
     :return: builder with query built with filters to apply
     """
     return RFUtilsDb.build_where_query(ar_filters_query=ar_filters_query,
                                        dic_params_query=dic_params_query,
                                        db_engine_type=self.db_engine_type)
示例#8
0
 def __get_fields_query__(self, ar_fields, rf_transaction):
     """
     Method for get fields to get in query
     :param ar_fields: passed for list function
     :param rf_transaction: to execute query
     :return: ar fields to get in query
     """
     return RFUtilsDb.get_fields_query(
         ar_fields=ar_fields,
         rf_transaction=rf_transaction,
         db_engine_type=self.db_engine_type,
         ar_default_fields_table=self._fields_table)
示例#9
0
 def __build_select_query__(self,
                            ar_fields_query=None,
                            ar_joins_query=None):
     """
     Method for build select query
     :param ar_fields_query: to get in query
     :param ar_joins_query: joins for query. Is necessary if has join is fetch
     :return: select query
     """
     return RFUtilsDb.build_select_query(
         ar_fields_query=ar_fields_query,
         ar_joins_query=ar_joins_query,
         db_engine_type=self.db_engine_type,
         ar_default_fields_table=self._fields_table,
         vo_class_name=self._vo_class_name)
示例#10
0
    def edit(self, vo, params=None, rf_transaction=None, locale=None):
        """
        Method for edit vo
        :param vo: to edit
        :param params:
        :param rf_transaction:
        :param locale:
        :return: vo edited
        """
        # Audit update vo
        if RFUtilsBuilt.has_attr(vo, "updatedAt"):
            RFUtilsBuilt.set_attr(vo, "updatedAt", datetime.datetime.now())

        dic_params_query = {}
        query_builder_update = RFUtilsDb.build_update_query(
            vo_instance=vo, dic_params_query=dic_params_query)
        rf_transaction.execute_query(query_builder_update,
                                     dic_params_query=dic_params_query)
        return vo