aboutsummaryrefslogtreecommitdiff
path: root/src/queries/prisma/pixel.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/queries/prisma/pixel.ts')
-rw-r--r--src/queries/prisma/pixel.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/queries/prisma/pixel.ts b/src/queries/prisma/pixel.ts
new file mode 100644
index 0000000..4c9e132
--- /dev/null
+++ b/src/queries/prisma/pixel.ts
@@ -0,0 +1,60 @@
+import type { Prisma } from '@/generated/prisma/client';
+import prisma from '@/lib/prisma';
+import type { QueryFilters } from '@/lib/types';
+
+export async function findPixel(criteria: Prisma.PixelFindUniqueArgs) {
+ return prisma.client.pixel.findUnique(criteria);
+}
+
+export async function getPixel(pixelId: string) {
+ return findPixel({
+ where: {
+ id: pixelId,
+ },
+ });
+}
+
+export async function getPixels(criteria: Prisma.PixelFindManyArgs, filters: QueryFilters = {}) {
+ const { search } = filters;
+
+ const where: Prisma.PixelWhereInput = {
+ ...criteria.where,
+ ...prisma.getSearchParameters(search, [{ name: 'contains' }, { slug: 'contains' }]),
+ };
+
+ return prisma.pagedQuery('pixel', { ...criteria, where }, filters);
+}
+
+export async function getUserPixels(userId: string, filters?: QueryFilters) {
+ return getPixels(
+ {
+ where: {
+ userId,
+ },
+ },
+ filters,
+ );
+}
+
+export async function getTeamPixels(teamId: string, filters?: QueryFilters) {
+ return getPixels(
+ {
+ where: {
+ teamId,
+ },
+ },
+ filters,
+ );
+}
+
+export async function createPixel(data: Prisma.PixelUncheckedCreateInput) {
+ return prisma.client.pixel.create({ data });
+}
+
+export async function updatePixel(pixelId: string, data: any) {
+ return prisma.client.pixel.update({ where: { id: pixelId }, data });
+}
+
+export async function deletePixel(pixelId: string) {
+ return prisma.client.pixel.delete({ where: { id: pixelId } });
+}