* Add unsend email editor Add email editor Add more email editor Add renderer partial Add more marketing email features * Add more campaign feature * Add variables * Getting there * campaign is there mfs * Add migration
70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
import { z } from "zod";
|
|
import { env } from "~/env";
|
|
|
|
import { createTRPCRouter, adminProcedure } from "~/server/api/trpc";
|
|
import { SesSettingsService } from "~/server/service/ses-settings-service";
|
|
import { getAccount } from "~/server/aws/ses";
|
|
|
|
export const adminRouter = createTRPCRouter({
|
|
getSesSettings: adminProcedure.query(async () => {
|
|
return SesSettingsService.getAllSettings();
|
|
}),
|
|
|
|
getQuotaForRegion: adminProcedure
|
|
.input(
|
|
z.object({
|
|
region: z.string(),
|
|
})
|
|
)
|
|
.query(async ({ input }) => {
|
|
const acc = await getAccount(input.region);
|
|
return acc.SendQuota?.MaxSendRate;
|
|
}),
|
|
|
|
addSesSettings: adminProcedure
|
|
.input(
|
|
z.object({
|
|
region: z.string(),
|
|
unsendUrl: z.string().url(),
|
|
sendRate: z.number(),
|
|
transactionalQuota: z.number(),
|
|
})
|
|
)
|
|
.mutation(async ({ input }) => {
|
|
return SesSettingsService.createSesSetting({
|
|
region: input.region,
|
|
unsendUrl: input.unsendUrl,
|
|
sendingRateLimit: input.sendRate,
|
|
transactionalQuota: input.transactionalQuota,
|
|
});
|
|
}),
|
|
|
|
updateSesSettings: adminProcedure
|
|
.input(
|
|
z.object({
|
|
settingsId: z.string(),
|
|
sendRate: z.number(),
|
|
transactionalQuota: z.number(),
|
|
})
|
|
)
|
|
.mutation(async ({ input }) => {
|
|
return SesSettingsService.updateSesSetting({
|
|
id: input.settingsId,
|
|
sendingRateLimit: input.sendRate,
|
|
transactionalQuota: input.transactionalQuota,
|
|
});
|
|
}),
|
|
|
|
getSetting: adminProcedure
|
|
.input(
|
|
z.object({
|
|
region: z.string().optional().nullable(),
|
|
})
|
|
)
|
|
.query(async ({ input }) => {
|
|
return SesSettingsService.getSetting(
|
|
input.region ?? env.AWS_DEFAULT_REGION
|
|
);
|
|
}),
|
|
});
|