Files
gridpilot.gg/core/identity/application/use-cases/achievement/CreateAchievementUseCase.ts
2025-12-16 15:42:38 +01:00

17 lines
583 B
TypeScript

import { Achievement, AchievementProps } from '@core/identity/domain/entities/Achievement';
export interface IAchievementRepository {
save(achievement: Achievement): Promise<void>;
findById(id: string): Promise<Achievement | null>;
}
export class CreateAchievementUseCase {
constructor(private readonly achievementRepository: IAchievementRepository) {}
async execute(props: Omit<AchievementProps, 'createdAt'>): Promise<Achievement> {
const achievement = Achievement.create(props);
await this.achievementRepository.save(achievement);
return achievement;
}
}