implement subcategory

This commit is contained in:
2024-10-14 16:53:55 +07:00
parent 6c04f52ddd
commit 76ff5d28ac
4 changed files with 78 additions and 11 deletions

View File

@@ -23,12 +23,25 @@ export class CategorySchema extends PothosSchema {
fields: (t) => ({
id: t.exposeID('id'),
name: t.exposeString('name'),
serviceAndCategory: t.relation('serviceAndCategory'),
subCategory: t.relation('SubCategory'),
}),
});
}
@PothosRef()
subCategory() {
return this.builder.prismaObject('SubCategory', {
fields: (t) => ({
id: t.exposeID('id'),
name: t.exposeString('name'),
categoryId: t.exposeID('categoryId'),
category: t.relation('category'),
serviceAndCategory: t.relation('serviceAndCategory'),
}),
});
}
@Pothos()
init(): void {
this.builder.queryFields((t) => ({
categories: t.prismaField({
@@ -54,6 +67,19 @@ export class CategorySchema extends PothosSchema {
});
},
}),
subCategories: t.prismaField({
type: [this.subCategory()],
args: this.builder.generator.findManyArgs('SubCategory'),
resolve: async (query, root, args, ctx, info) => {
return await this.prisma.subCategory.findMany({
...query,
where: args.filter ?? undefined,
orderBy: args.orderBy ?? undefined,
skip: args.skip ?? undefined,
take: args.take ?? 10,
});
},
}),
}));
// mutation
@@ -87,6 +113,21 @@ export class CategorySchema extends PothosSchema {
});
},
}),
createSubCategory: t.prismaField({
type: this.subCategory(),
args: {
input: t.arg({
type: this.builder.generator.getCreateInput('SubCategory'),
required: true,
}),
},
resolve: async (query, root, args, ctx, info) => {
return await this.prisma.subCategory.create({
data: args.input,
});
},
}),
}));
}
}

View File

@@ -24,7 +24,8 @@ export class ServiceAndCategorySchema extends PothosSchema {
serviceId: t.exposeID('serviceId'),
categoryId: t.exposeID('categoryId'),
service: t.relation('service'),
category: t.relation('category'),
subCategory: t.relation('SubCategory'),
subCategoryId: t.exposeID('subCategoryId'),
}),
});
}

File diff suppressed because one or more lines are too long