interface UserRepository {
    modelName: string;
    countDocuments(query?: FilterQuery<BaseUser>): Promise<number>;
    create(entity: BaseUser): Promise<Saved<BaseUser>>;
    createMany(
        entity: BaseUser[],
        options?: CreateManyOptions,
    ): Promise<string[]>;
    deleteById(id: string): Promise<null | Saved<BaseUser>>;
    destroyById(id: string): Promise<null | Saved<BaseUser>>;
    findById(
        id: string,
        fields?: SelectQuery<BaseUser>[],
        ListQueryOptions?: ListQueryOptions<BaseUser>,
    ): Promise<null | Saved<BaseUser>>;
    findOne(
        query?: FilterQuery<BaseUser>,
        fields?: SelectQuery<BaseUser>[],
        ListQueryOptions?: ListQueryOptions<BaseUser>,
    ): Promise<null | Saved<BaseUser>>;
    findUserByEmail(
        email: string,
        fields?: SelectQuery<BaseUser>[],
    ): Promise<null | BaseUser>;
    findUserByToken(
        token: string,
        fields?: SelectQuery<BaseUser>[],
    ): Promise<null | SavedUser>;
    impersonateUserById(id: string): Promise<SavedUser>;
    list(
        query?: FilterQuery<BaseUser>,
        fields?: SelectQuery<BaseUser>[],
        ListQueryOptions?: ListQueryOptions<BaseUser>,
    ): Promise<Saved<BaseUser>[]>;
    listUsersByGroup(
        group:
            | "system"
            | "superAdmin"
            | "admin"
            | "operator"
            | "host"
            | "guide"
            | "traveler"
            | "anonymous"
            | "tripManager"
            | "accountManager"
            | "basic",
        active?: boolean,
        fields?: SelectQuery<BaseUser>[],
    ): Promise<SavedUser[]>;
    paginate(
        options?: PaginateQueryOptions<BaseUser>,
    ): Promise<PaginationResponse<Saved<BaseUser>>>;
    undeleteUserById(id: string): Promise<SavedUser>;
    updateById(
        id: string,
        entity: PartialQuery<BaseUser>,
        options?: UpdateOptions,
    ): Promise<null | Saved<BaseUser>>;
    updateMany(
        filter: FilterQuery<BaseUser>,
        update: PartialQuery<BaseUser>,
    ): Promise<number>;
    updateOne(
        filter: FilterQuery<BaseUser>,
        update: PartialQuery<BaseUser>,
        options?: UpdateOneOptions,
    ): Promise<null | Saved<BaseUser>>;
    upsertOne(
        filter: FilterQuery<BaseUser>,
        entity: PartialQuery<BaseUser>,
    ): Promise<null | string>;
    useView(name: FINANCIAL_USERS): ViewRepo<FinancialUser>;
}

Hierarchy (View Summary)

Properties

modelName: string

The name of the model.

Methods

  • Parameters

    • group:
          | "system"
          | "superAdmin"
          | "admin"
          | "operator"
          | "host"
          | "guide"
          | "traveler"
          | "anonymous"
          | "tripManager"
          | "accountManager"
          | "basic"
    • Optionalactive: boolean
    • Optionalfields: SelectQuery<BaseUser>[]

    Returns Promise<SavedUser[]>

  • Upsert a single record based on certain criteria.

    Parameters

    • filter: FilterQuery<BaseUser>

      The filter to find the record to update or insert.

    • entity: PartialQuery<BaseUser>

      The entity to upsert.

    Returns Promise<null | string>

    The return types of this method align with the MongoDB UpdateResult interface

    • Returns models.baseModel.Saved<T>['_id'] if the document did not exist (an upsert took place).
    • Returns null if the document did exist before the upsert operation.