feat: add public share options for workflow
This commit is contained in:
@@ -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()];
|
||||
})
|
||||
),
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user