flwo / apps /server /src /modules /fields /fields.service.js
moustafa7's picture
feat: advanced template management - fields, assets, reviews, projects, customization
a126dda
Raw History Blame Contribute Delete
1.69 kB
import { prisma } from '../../config/database.js'
import { AppError } from '../../lib/AppError.js'
export async function getFields(templateId) {
return prisma.templateField.findMany({
where: { templateId },
orderBy: { sortOrder: 'asc' },
})
}
export async function createField(templateId, data) {
const existing = await prisma.templateField.findUnique({
where: { templateId_key: { templateId, key: data.key } },
})
if (existing) throw new AppError('الحقل موجود بالفعل', 409, 'FIELD_EXISTS')
return prisma.templateField.create({
data: { ...data, templateId },
})
}
export async function updateField(id, data) {
const field = await prisma.templateField.findUnique({ where: { id } })
if (!field) throw new AppError('الحقل غير موجود', 404, 'FIELD_NOT_FOUND')
return prisma.templateField.update({ where: { id }, data })
}
export async function deleteField(id) {
const field = await prisma.templateField.findUnique({ where: { id } })
if (!field) throw new AppError('الحقل غير موجود', 404, 'FIELD_NOT_FOUND')
await prisma.templateField.delete({ where: { id } })
}
export async function reorderFields(templateId, orderedIds) {
const fields = await prisma.templateField.findMany({ where: { templateId }, select: { id: true } })
const validIds = new Set(fields.map(f => f.id))
const unknown = orderedIds.filter(id => !validIds.has(id))
if (unknown.length > 0) throw new AppError('بعض الحقول غير موجودة', 400, 'INVALID_IDS')
await prisma.$transaction(
orderedIds.map((id, index) =>
prisma.templateField.update({ where: { id }, data: { sortOrder: index } })
)
)
}