feat: add public share options for workflow

This commit is contained in:
BennyKok
2024-01-14 23:35:25 +08:00
parent dafc8b168b
commit 18cfbce171
22 changed files with 1327 additions and 158 deletions
+25
View File
@@ -0,0 +1,25 @@
import { db } from "@/db/db";
import { usersTable } from "@/db/schema";
import { clerkClient } from "@clerk/nextjs";
export async function setInitialUserData(userId: string) {
const user = await clerkClient.users.getUser(userId);
// incase we dont have username such as google login, fallback to first name + last name
const usernameFallback = user.username ?? (user.firstName ?? "") + (user.lastName ?? "");
// For the display name, if it for some reason is empty, fallback to username
let nameFallback = (user.firstName ?? "") + (user.lastName ?? "");
if (nameFallback === "") {
nameFallback = usernameFallback;
}
const result = await db.insert(usersTable).values({
id: userId,
// this is used for path, make sure this is unique
username: usernameFallback,
// this is for display name, maybe different from username
name: nameFallback,
});
}
@@ -0,0 +1,24 @@
import type { WorkflowVersionType } from "@/db/schema";
import { getInputsFromWorkflow } from "@/lib/getInputsFromWorkflow";
import { z } from "zod";
export function workflowVersionInputsToZod(
workflow_version: WorkflowVersionType
) {
const inputs = getInputsFromWorkflow(workflow_version);
return plainInputsToZod(inputs);
}
export function plainInputsToZod(
inputs: ReturnType<typeof getInputsFromWorkflow>
) {
if (!inputs) return null;
return z.object({
...Object.fromEntries(
inputs?.map((x) => {
return [x?.input_id, z.string().optional()];
})
),
});
}