def __init__(self, ext_params={}, is_transaction_owner=True, event_type=None): # If callee is not the transaction owner then, callee cannot commit or rollback the transaction self.is_transaction_owner = is_transaction_owner self.base_repository = BaseRepository() self.transaction_repo = TransactionRepository() self.normal_repo = NormalRepository() self.general_error_code = ErrorCodes.GENERAL_ERROR self.ext_params = ext_params self.event_type = event_type
def __init__(self, ext_params={}, event_type=None): BaseRepository.__init__(self, ext_params, event_type) pass
def __init__(self, ext_params={}): BaseRepository.__init__(self, ext_params)
class BaseService: def __init__(self, ext_params={}, is_transaction_owner=True, event_type=None): # If callee is not the transaction owner then, callee cannot commit or rollback the transaction self.is_transaction_owner = is_transaction_owner self.base_repository = BaseRepository() self.transaction_repo = TransactionRepository() self.normal_repo = NormalRepository() self.general_error_code = ErrorCodes.GENERAL_ERROR self.ext_params = ext_params self.event_type = event_type def begin_transaction(self): if self.is_transaction_owner: if transaction.get_autocommit(): transaction.set_autocommit(autocommit=False) def commit(self): if self.is_transaction_owner: transaction.commit() self.close_cursor() def rollback(self): if self.is_transaction_owner: transaction.rollback() self.close_cursor() def close_cursor(self): self.base_repository.close_cursor() """ All CRUD operation """ def add(self, object): self.begin_transaction() self.pre_add(object) returned_object = self.add_data(object) returned_object = self.post_add(returned_object) self.commit() return returned_object def pre_add(self, object): pass def add_data(self, object): pass def post_add(self, object): return object def update(self, object): self.begin_transaction() self.pre_update(object) returned_object = self.update_data(object) returned_object = self.post_update(returned_object) self.commit() return returned_object def pre_update(self, object): pass def update_data(self, object): pass def post_update(self, object): return object def delete(self, object): self.begin_transaction() self.pre_delete(object) returned_object = self.delete_data(object) returned_object = self.post_delete(returned_object) self.commit() return self.post_delete(returned_object) def pre_delete(self, object): pass def delete_data(self, object): pass def post_delete(self, object): return object def get(self, params: ParamsObject): self.pre_get(params) data = self.get_data(params) return self.post_get(data) def pre_get(self, params): pass def get_data(self, params): pass def post_get(self, object): return object def get_list(self, params: ParamsObject): self.pre_get_list(params) data_list_objects = self.get_data_list(params) return self.post_get_list(data_list_objects) def pre_get_list(self, params): pass def get_data_list(self, params): pass def post_get_list(self, object): return object def execute_raw_sql(self, raq_sql): data = None self.begin_transaction() data = self.base_repository.execute_raw_sql(raq_sql) self.commit() return data def __get_data_direct(self, sp_name, params: ParamsObject, is_cacheable=True, cache_key_prefix="", is_multiple_rs=False): data = None if params is None: params = [] if is_multiple_rs: data = self.normal_repo.get_direct_multiple( sp_name, params.get_params_list()) else: data = self.normal_repo.get_direct(sp_name, params.get_params_list()) return data def get_direct(self, sp_name, params, is_cacheable=True, cache_key_prefix=""): return self.__get_data_direct(sp_name, params, is_cacheable, cache_key_prefix, False) def get_direct_multiple(self, sp_name, params, is_cacheable=True, cache_key_prefix=""): return self.__get_data_direct(sp_name, params, is_cacheable, cache_key_prefix, True) def __add_update_delete_direct(self, sp_name, params: ParamsObject, flag="ADD"): data = None if flag == "ADD": data = self.normal_repo.add_direct(sp_name, params.get_params_list()) elif flag == "UPDATE": data = self.normal_repo.update_direct(sp_name, params.get_params_list()) elif flag == "DELETE": data = self.normal_repo.delete_direct(sp_name, params.get_params_list()) else: pass return data def __add_update_delete_direct_transactional(self, sp_name, params: ParamsObject, flag="ADD"): data = None self.begin_transaction() if flag == "ADD": data = self.transaction_repo.add_direct(sp_name, params.get_params_list()) elif flag == "UPDATE": data = self.transaction_repo.update_direct( sp_name, params.get_params_list()) elif flag == "DELETE": data = self.transaction_repo.delete_direct( sp_name, params.get_params_list()) else: pass self.commit() return data def add_direct(self, sp_name, params): return self.__add_update_delete_direct(sp_name, params, "ADD") def update_direct(self, sp_name, params): return self.__add_update_delete_direct(sp_name, params, "UPDATE") def delete_direct(self, sp_name, params): return self.__add_update_delete_direct(sp_name, params, "DELETE") def add_direct_transactional(self, sp_name, params): return self.__add_update_delete_direct_transactional( sp_name, params, "ADD") def update_direct_transactional(self, sp_name, params): return self.__add_update_delete_direct_transactional( sp_name, params, "UPDATE") def delete_direct_transactional(self, sp_name, params): return self.__add_update_delete_direct_transactional( sp_name, params, "DELETE") def get_object(self, params: ParamsObject): data = None self.pre_get_object(params) data = self.get_data_object(params) return self.post_get_object(data) def pre_get_object(self, params): pass def get_data_object(self, params): pass def post_get_object(self, object): return object def get_list_object(self, params: ParamsObject): data = None self.pre_get_list_object(params) data = self.get_data_list_object(params) return self.post_get_list_object(data) def get_data_list_object(self, params): pass def pre_get_list_object(self, params): pass def post_get_list_object(self, object): return object def get_list_object_paginated(self, params: ParamsObject): data = None self.pre_get_list_object_paginated(params) data = self.get_data_list_object_paginated(params) return self.post_get_list_object_paginated(data) def get_data_list_object_paginated(self, params): pass def pre_get_list_object_paginated(self, params): pass def post_get_list_object_paginated(self, object): return object