import { logError } from "@/lib/logger";
import type { RepositoryContext } from "../datastore/repository";
import { BaseRepository } from "../datastore/repository";

export const MemberAuthRepository = (ctx: RepositoryContext) => {
  const repo = new BaseRepository(ctx);

  const FindUserCredByEmail = async (email: string) => {
    try {
      const record = await repo.datastore
        .selectFrom("users")
        .where("email", "=", email)
        .selectAll()
        .executeTakeFirstOrThrow();
      return record;
    } catch (err) {
      logError(err);
      throw new Error("Failed to retrieve user by email");
    }
  };

  return {
    FindUserCredByEmail,
  };
};

export type TMemberAuthRepository = ReturnType<typeof MemberAuthRepository>;
