import { RepositoryBase, IRepositoryBase } from '@tomei/general';
import { SettingsGroupModel } from '../../entities/settings-group.entity';

export class ProductGroupRepository
  extends RepositoryBase<SettingsGroupModel>
  implements IRepositoryBase<SettingsGroupModel>
{
  constructor() {
    super(SettingsGroupModel);
  }

  async findByPk(code: string): Promise<SettingsGroupModel> {
    try {
      const options = {
        where: {
          Code: code,
        },
      };
      const result = await SettingsGroupModel.findOne(options);
      return result;
    } catch (error) {
      throw new Error(
        `An Error occured when fetching product group: ${error.message}`,
      );
    }
  }

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

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