Add MVP version

This commit is contained in:
KMKoushik
2024-03-24 17:43:56 +11:00
parent 9032efa9b2
commit bbc64b5392
49 changed files with 3249 additions and 298 deletions

View File

@@ -0,0 +1,42 @@
import { z } from "zod";
import {
createTRPCRouter,
protectedProcedure,
publicProcedure,
teamProcedure,
} from "~/server/api/trpc";
import { db } from "~/server/db";
import { addApiKey } from "~/server/service/api-service";
import { createDomain, getDomain } from "~/server/service/domain-service";
export const apiRouter = createTRPCRouter({
createToken: teamProcedure
.input(
z.object({ name: z.string(), permission: z.enum(["FULL", "SENDING"]) })
)
.mutation(async ({ ctx, input }) => {
return addApiKey({
name: input.name,
permission: input.permission,
teamId: ctx.team.id,
});
}),
getApiKeys: teamProcedure.query(async ({ ctx }) => {
const keys = await ctx.db.apiKey.findMany({
where: {
teamId: ctx.team.id,
},
select: {
id: true,
name: true,
permission: true,
partialToken: true,
lastUsed: true,
},
});
return keys;
}),
});

View File

@@ -0,0 +1,34 @@
import { z } from "zod";
import {
createTRPCRouter,
protectedProcedure,
publicProcedure,
teamProcedure,
} from "~/server/api/trpc";
import { db } from "~/server/db";
import { createDomain, getDomain } from "~/server/service/domain-service";
export const domainRouter = createTRPCRouter({
createDomain: teamProcedure
.input(z.object({ name: z.string() }))
.mutation(async ({ ctx, input }) => {
return createDomain(ctx.team.id, input.name);
}),
domains: teamProcedure.query(async ({ ctx }) => {
const domains = await db.domain.findMany({
where: {
teamId: ctx.team.id,
},
});
return domains;
}),
getDomain: teamProcedure
.input(z.object({ id: z.number() }))
.query(async ({ ctx, input }) => {
return getDomain(input.id);
}),
});

View File

@@ -0,0 +1,41 @@
import { z } from "zod";
import {
createTRPCRouter,
protectedProcedure,
publicProcedure,
teamProcedure,
} from "~/server/api/trpc";
import { db } from "~/server/db";
import { createDomain, getDomain } from "~/server/service/domain-service";
export const emailRouter = createTRPCRouter({
emails: teamProcedure.query(async ({ ctx }) => {
const emails = await db.email.findMany({
where: {
teamId: ctx.team.id,
},
});
return emails;
}),
getEmail: teamProcedure
.input(z.object({ id: z.string() }))
.query(async ({ ctx, input }) => {
const email = await db.email.findUnique({
where: {
id: input.id,
},
include: {
emailEvents: {
orderBy: {
createdAt: "desc",
},
},
},
});
return email;
}),
});

View File

@@ -1,42 +0,0 @@
import { z } from "zod";
import {
createTRPCRouter,
protectedProcedure,
publicProcedure,
} from "~/server/api/trpc";
export const postRouter = createTRPCRouter({
hello: publicProcedure
.input(z.object({ text: z.string() }))
.query(({ input }) => {
return {
greeting: `Hello ${input.text}`,
};
}),
create: protectedProcedure
.input(z.object({ name: z.string().min(1) }))
.mutation(async ({ ctx, input }) => {
// simulate a slow db call
await new Promise((resolve) => setTimeout(resolve, 1000));
return ctx.db.post.create({
data: {
name: input.name,
createdBy: { connect: { id: ctx.session.user.id } },
},
});
}),
getLatest: protectedProcedure.query(({ ctx }) => {
return ctx.db.post.findFirst({
orderBy: { createdAt: "desc" },
where: { createdBy: { id: ctx.session.user.id } },
});
}),
getSecretMessage: protectedProcedure.query(() => {
return "you can now see this secret message!";
}),
});