import type { Selectable } from "kysely";
import type { MembershipClubChargeCenters } from "../datastore/db";

export interface IMembershipChargeCenterRepository {
  CreateMembershipChargeCenter: (
    name: string,
    currency: string,
    viewpoint_charge_center_id: string,
    note?: string,
  ) => Promise<Selectable<MembershipClubChargeCenters>>;

  SearchMembershipChargeCenters: () => Promise<
    Selectable<MembershipClubChargeCenters>[]
  >;

  FindMembershipChargeCenter: (
    id: string,
  ) => Promise<Selectable<MembershipClubChargeCenters>>;

  UpdateMembershipChargeCenter: (
    id: string,
    update: {
      name?: string;
      currency?: string;
      viewpoint_charge_center_id?: string;
      note?: string;
    },
  ) => Promise<Selectable<MembershipClubChargeCenters> | null>;

  RemoveMembershipChargeCenter: (id: string) => Promise<void>;
}

export interface IMemberChargeCenterServices {
  CreateMemberChargeCenter: (
    name: string,
    currency: string,
    viewpoint_charge_center_id: string,
    note?: string,
  ) => Promise<Selectable<MembershipClubChargeCenters>>;

  SearchMembershipChargeCenters: () => Promise<
    Selectable<MembershipClubChargeCenters>[]
  >;

  FindMembershipChargeCenter: (
    id: string,
  ) => Promise<Selectable<MembershipClubChargeCenters>>;

  UpdateMembershipChargeCenter: (
    id: string,
    update: {
      name?: string;
      currency?: string;
      viewpoint_charge_center_id?: string;
      note?: string;
    },
  ) => Promise<Selectable<MembershipClubChargeCenters> | null>;

  RemoveMembershipChargeCenter: (id: string) => Promise<void>;
}
