import GroupSystemAccessModel from '../../models/group-system-access.entity';
import { RepositoryBase, IRepositoryBase } from '@tomei/general';

export class GroupSystemAccessRepository
  extends RepositoryBase<GroupSystemAccessModel>
  implements IRepositoryBase<GroupSystemAccessModel>
{
  constructor() {
    super(GroupSystemAccessModel);
  }

  async findAndCountAll(options?: any) {
    try {
      let GroupSystemAccess: any;
      if (options) {
        GroupSystemAccess =
          await GroupSystemAccessModel.findAndCountAll(options);
      } else {
        GroupSystemAccess = await GroupSystemAccessModel.findAndCountAll();
      }
      return GroupSystemAccess;
    } catch (error) {
      throw new Error(
        `An Error occured when retriving GroupSystemAccess: ${error.message}`,
      );
    }
  }

  async delete(GroupCode: string, SystemCode: string, dbTransaction?: any) {
    try {
      const options = {
        where: {
          GroupCode: GroupCode,
          SystemCode: SystemCode,
        },
        transaction: dbTransaction,
      };
      await GroupSystemAccessModel.destroy(options);
    } catch (error) {
      throw new Error(`An Error occured when delete : ${error.message}`);
    }
  }
}
