Files
stats/packages/trpc/src/routers/share.ts
2025-01-21 15:19:50 +00:00

37 lines
977 B
TypeScript

import ShortUniqueId from 'short-unique-id';
import { db } from '@openpanel/db';
import { zShareOverview } from '@openpanel/validation';
import { hashPassword } from '@openpanel/auth';
import { createTRPCRouter, protectedProcedure } from '../trpc';
const uid = new ShortUniqueId({ length: 6 });
export const shareRouter = createTRPCRouter({
shareOverview: protectedProcedure
.input(zShareOverview)
.mutation(async ({ input }) => {
const passwordHash = input.password
? await hashPassword(input.password)
: null;
return db.shareOverview.upsert({
where: {
projectId: input.projectId,
},
create: {
id: uid.rnd(),
organizationId: input.organizationId,
projectId: input.projectId,
public: input.public,
password: passwordHash,
},
update: {
public: input.public,
password: passwordHash,
},
});
}),
});