import { User } from "@caldav/shared"; import { UserRepository, CreateUserData } from "../../services/interfaces"; import { UserModel } from "./models"; export class MongoUserRepository implements UserRepository { async findById(id: string): Promise { throw new Error("Not implemented"); } async findByEmail(email: string): Promise { const user = await UserModel.findOne({ email: email.toLowerCase() }); // NOTE: Casting required because Mongoose's toJSON() type doesn't reflect our virtual 'id' field return (user?.toJSON() as unknown as User) ?? null; } async create(data: CreateUserData): Promise { const user = await UserModel.create(data); // NOTE: Casting required because Mongoose's toJSON() type doesn't reflect our virtual 'id' field return user.toJSON() as unknown as User; } }