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; } }