Class InMemoryCustomerRepository

Hierarchy (View Summary)

Implements

Constructors

Properties

items: Map<
    string,
    {
        createdAt: Date;
        email: string;
        firstName: string;
        id: string;
        lastName: string;
        phone: string;
        preferences?: { notes?: string; preferredBarber?: string };
        updatedAt: Date;
    },
>

Methods

  • Parameters

    • items: {
          createdAt: Date;
          email: string;
          firstName: string;
          id: string;
          lastName: string;
          phone: string;
          preferences?: { notes?: string; preferredBarber?: string };
          updatedAt: Date;
      }[]
    • filters: IFilterOptions

    Returns {
        createdAt: Date;
        email: string;
        firstName: string;
        id: string;
        lastName: string;
        phone: string;
        preferences?: { notes?: string; preferredBarber?: string };
        updatedAt: Date;
    }[]

  • Returns void

  • Parameters

    • entity: {
          createdAt: Date;
          email: string;
          firstName: string;
          id: string;
          lastName: string;
          phone: string;
          preferences?: { notes?: string; preferredBarber?: string };
          updatedAt: Date;
      }

    Returns Promise<
        {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Returns Promise<
        {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        }[],
    >

  • Parameters

    • email: string

    Returns Promise<
        | null
        | {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Parameters

    • id: string

    Returns Promise<
        | null
        | {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Parameters

    • phone: string

    Returns Promise<
        | null
        | {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Parameters

    Returns Promise<
        IPagedResult<
            {
                createdAt: Date;
                email: string;
                firstName: string;
                id: string;
                lastName: string;
                phone: string;
                preferences?: { notes?: string; preferredBarber?: string };
                updatedAt: Date;
            },
        >,
    >

  • Parameters

    • criteria: { email?: string; firstName?: string; lastName?: string; phone?: string }

    Returns Promise<
        {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        }[],
    >

  • Parameters

    Returns Promise<
        | null
        | {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Parameters

    Returns Promise<
        IPagedResult<
            {
                createdAt: Date;
                email: string;
                firstName: string;
                id: string;
                lastName: string;
                phone: string;
                preferences?: { notes?: string; preferredBarber?: string };
                updatedAt: Date;
            },
        >,
    >

  • Parameters

    Returns Promise<
        IPagedResult<
            {
                actualDuration?: number;
                additionalServices?: { notes?: string; price: number; serviceId: string }[];
                barberId: string;
                cancellationReason?: string;
                cancelledAt?: Date;
                cancelledBy?: string;
                completedAt?: Date;
                completedBy?: string;
                createdAt: Date;
                customerId: string;
                endTime: Date;
                feedback?: {
                    cleanliness?: number;
                    comment?: string;
                    rating?: number;
                    serviceQuality?: number;
                    timeliness?: number;
                };
                id: string;
                notes?: string;
                paymentMethod?: "CASH"
                | "CARD"
                | "DIGITAL_WALLET";
                paymentStatus?: "PAID" | "PENDING" | "FAILED";
                reschedulingHistory?: {
                    previousBarberId: string;
                    previousEndTime: Date;
                    previousStartTime: Date;
                    reason?: string;
                    rescheduledAt: Date;
                    rescheduledBy: string;
                }[];
                serviceId: string;
                startTime: Date;
                status: "pending"
                | "confirmed"
                | "cancelled"
                | "completed";
                totalAmount?: number;
                updatedAt: Date;
            },
        >,
    >

  • Parameters

    Returns Promise<
        IPagedResult<
            {
                createdAt: Date;
                email: string;
                firstName: string;
                id: string;
                lastName: string;
                phone: string;
                preferences?: { notes?: string; preferredBarber?: string };
                updatedAt: Date;
            },
        >,
    >

  • Parameters

    • customerId: string

    Returns Promise<
        {
            averageServiceDuration: number;
            cancelledAppointments: number;
            completedAppointments: number;
            lastVisit?: Date;
            preferredServices: string[];
            totalAppointments: number;
        },
    >

  • Parameters

    Returns Promise<
        IPagedResult<
            {
                createdAt: Date;
                email: string;
                firstName: string;
                id: string;
                lastName: string;
                phone: string;
                preferences?: { notes?: string; preferredBarber?: string };
                updatedAt: Date;
            },
        >,
    >

  • Parameters

    • sourceCustomerId: string
    • targetCustomerId: string

    Returns Promise<
        {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Parameters

    Returns Promise<
        IPagedResult<
            {
                createdAt: Date;
                email: string;
                firstName: string;
                id: string;
                lastName: string;
                phone: string;
                preferences?: { notes?: string; preferredBarber?: string };
                updatedAt: Date;
            },
        >,
    >

  • Parameters

    • id: string
    • entity: {
          createdAt: Date;
          email: string;
          firstName: string;
          id: string;
          lastName: string;
          phone: string;
          preferences?: { notes?: string; preferredBarber?: string };
          updatedAt: Date;
      }

    Returns Promise<
        {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Parameters

    • customerId: string
    • updates: { email?: string; phone?: string }

    Returns Promise<
        {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Parameters

    • customerId: string
    • preferences: { notes?: string; preferredBarber?: string }

    Returns Promise<
        {
            createdAt: Date;
            email: string;
            firstName: string;
            id: string;
            lastName: string;
            phone: string;
            preferences?: { notes?: string; preferredBarber?: string };
            updatedAt: Date;
        },
    >

  • Parameters

    • email: string
    • phone: string

    Returns Promise<
        {
            existingCustomer?: {
                createdAt: Date;
                email: string;
                firstName: string;
                id: string;
                lastName: string;
                phone: string;
                preferences?: { notes?: string; preferredBarber?: string };
                updatedAt: Date;
            };
            isEmailValid: boolean;
            isPhoneValid: boolean;
        },
    >