skailan-contacts
Version:
Servicio de gestión de contactos para Skailan
82 lines • 2.91 kB
JavaScript
import { Tag } from '../../../domain/entities/Tag';
export class TagPrismaRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
async findById(id, organizationId) {
try {
const tagData = await this.prisma.tag.findFirst({
where: {
id,
organizationId
},
});
return tagData ? new Tag(tagData.id, tagData.organizationId, tagData.name, tagData.createdAt, tagData.updatedAt) : null;
}
catch (error) {
throw new Error(`Error finding tag by ID: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async findByName(name, organizationId) {
try {
const tagData = await this.prisma.tag.findFirst({
where: {
name,
organizationId
},
});
return tagData ? new Tag(tagData.id, tagData.organizationId, tagData.name, tagData.createdAt, tagData.updatedAt) : null;
}
catch (error) {
throw new Error(`Error finding tag by name: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async findAll(organizationId) {
try {
const tagsData = await this.prisma.tag.findMany({
where: { organizationId },
orderBy: { name: 'asc' }
});
return tagsData.map(tagData => new Tag(tagData.id, tagData.organizationId, tagData.name, tagData.createdAt, tagData.updatedAt));
}
catch (error) {
throw new Error(`Error finding all tags: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async save(tag) {
try {
const savedTag = await this.prisma.tag.upsert({
where: {
id: tag.id
},
update: {
name: tag.name,
updatedAt: new Date(),
},
create: {
id: tag.id,
organizationId: tag.organizationId,
name: tag.name,
},
});
return new Tag(savedTag.id, savedTag.organizationId, savedTag.name, savedTag.createdAt, savedTag.updatedAt);
}
catch (error) {
throw new Error(`Error saving tag: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async delete(id, organizationId) {
try {
await this.prisma.tag.delete({
where: {
id
},
});
}
catch (error) {
throw new Error(`Error deleting tag: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
}
//# sourceMappingURL=TagPrismaRepository.js.map