fix types infer
This commit is contained in:
parent
5b4043c367
commit
eb6ef74f8a
@ -1,6 +1,11 @@
|
|||||||
import { parseDataSafe } from "../../../lib/parseDataSafe";
|
|
||||||
import { db } from "@/db/db";
|
import { db } from "@/db/db";
|
||||||
import { workflowTable, workflowVersionTable } from "@/db/schema";
|
import {
|
||||||
|
workflowAPIType,
|
||||||
|
workflowTable,
|
||||||
|
workflowType,
|
||||||
|
workflowVersionTable,
|
||||||
|
} from "@/db/schema";
|
||||||
|
import { parseDataSafe } from "@/lib/parseDataSafe";
|
||||||
import { sql } from "drizzle-orm";
|
import { sql } from "drizzle-orm";
|
||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
@ -15,8 +20,8 @@ const UploadRequest = z.object({
|
|||||||
user_id: z.string(),
|
user_id: z.string(),
|
||||||
workflow_id: z.string().optional(),
|
workflow_id: z.string().optional(),
|
||||||
workflow_name: z.string().optional(),
|
workflow_name: z.string().optional(),
|
||||||
workflow: z.any(),
|
workflow: workflowType,
|
||||||
workflow_api: z.any(),
|
workflow_api: workflowAPIType,
|
||||||
});
|
});
|
||||||
|
|
||||||
export async function OPTIONS(request: Request) {
|
export async function OPTIONS(request: Request) {
|
||||||
@ -41,7 +46,15 @@ export async function POST(request: Request) {
|
|||||||
|
|
||||||
if (!data || error) return error;
|
if (!data || error) return error;
|
||||||
|
|
||||||
let { user_id, workflow, workflow_api, workflow_id, workflow_name } = data;
|
const {
|
||||||
|
user_id,
|
||||||
|
workflow,
|
||||||
|
workflow_api,
|
||||||
|
workflow_id: _workflow_id,
|
||||||
|
workflow_name,
|
||||||
|
} = data;
|
||||||
|
|
||||||
|
let workflow_id = _workflow_id;
|
||||||
|
|
||||||
let version = -1;
|
let version = -1;
|
||||||
|
|
||||||
@ -49,7 +62,7 @@ export async function POST(request: Request) {
|
|||||||
try {
|
try {
|
||||||
if ((!workflow_id || workflow_id.length == 0) && workflow_name) {
|
if ((!workflow_id || workflow_id.length == 0) && workflow_name) {
|
||||||
// Create a new parent workflow
|
// Create a new parent workflow
|
||||||
const workflow = await db
|
const workflow_parent = await db
|
||||||
.insert(workflowTable)
|
.insert(workflowTable)
|
||||||
.values({
|
.values({
|
||||||
user_id,
|
user_id,
|
||||||
@ -57,7 +70,7 @@ export async function POST(request: Request) {
|
|||||||
})
|
})
|
||||||
.returning();
|
.returning();
|
||||||
|
|
||||||
workflow_id = workflow[0].id;
|
workflow_id = workflow_parent[0].id;
|
||||||
|
|
||||||
// Create a new version
|
// Create a new version
|
||||||
const data = await db
|
const data = await db
|
||||||
@ -76,7 +89,7 @@ export async function POST(request: Request) {
|
|||||||
.insert(workflowVersionTable)
|
.insert(workflowVersionTable)
|
||||||
.values({
|
.values({
|
||||||
workflow_id,
|
workflow_id,
|
||||||
workflow,
|
workflow: workflow,
|
||||||
workflow_api,
|
workflow_api,
|
||||||
// version: sql`${workflowVersionTable.version} + 1`,
|
// version: sql`${workflowVersionTable.version} + 1`,
|
||||||
version: sql`(
|
version: sql`(
|
||||||
|
@ -8,6 +8,7 @@ import {
|
|||||||
jsonb,
|
jsonb,
|
||||||
pgEnum,
|
pgEnum,
|
||||||
} from "drizzle-orm/pg-core";
|
} from "drizzle-orm/pg-core";
|
||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
export const dbSchema = pgSchema("comfyui_deploy");
|
export const dbSchema = pgSchema("comfyui_deploy");
|
||||||
|
|
||||||
@ -35,21 +36,25 @@ export const workflowRelations = relations(workflowTable, ({ many }) => ({
|
|||||||
versions: many(workflowVersionTable),
|
versions: many(workflowVersionTable),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
export type WorkflowJSONType = {
|
export const workflowType = z.any();
|
||||||
nodes: {
|
// export const workflowType = z.object({
|
||||||
id: string;
|
// last_node_id: z.number(),
|
||||||
type: string;
|
// last_link_id: z.number(),
|
||||||
widgets_values: any[];
|
// nodes: z.array(
|
||||||
}[];
|
// z.object({
|
||||||
};
|
// id: z.number(),
|
||||||
|
// type: z.string(),
|
||||||
|
// widgets_values: z.array(z.any()),
|
||||||
|
// })
|
||||||
|
// ),
|
||||||
|
// });
|
||||||
|
|
||||||
export type WorkflowAPIType = Record<
|
export const workflowAPIType = z.record(
|
||||||
string,
|
z.object({
|
||||||
{
|
inputs: z.record(z.any()),
|
||||||
inputs: Record<string, string>;
|
class_type: z.string(),
|
||||||
class_type: string;
|
})
|
||||||
}
|
);
|
||||||
>;
|
|
||||||
|
|
||||||
export const workflowVersionTable = dbSchema.table("workflow_versions", {
|
export const workflowVersionTable = dbSchema.table("workflow_versions", {
|
||||||
workflow_id: uuid("workflow_id")
|
workflow_id: uuid("workflow_id")
|
||||||
@ -58,8 +63,8 @@ export const workflowVersionTable = dbSchema.table("workflow_versions", {
|
|||||||
onDelete: "cascade",
|
onDelete: "cascade",
|
||||||
}),
|
}),
|
||||||
id: uuid("id").primaryKey().defaultRandom().notNull(),
|
id: uuid("id").primaryKey().defaultRandom().notNull(),
|
||||||
workflow: jsonb("workflow").$type<WorkflowJSONType>(),
|
workflow: jsonb("workflow").$type<z.infer<typeof workflowType>>(),
|
||||||
workflow_api: jsonb("workflow_api").$type<WorkflowAPIType>(),
|
workflow_api: jsonb("workflow_api").$type<z.infer<typeof workflowAPIType>>(),
|
||||||
version: integer("version").notNull(),
|
version: integer("version").notNull(),
|
||||||
|
|
||||||
created_at: timestamp("created_at").defaultNow().notNull(),
|
created_at: timestamp("created_at").defaultNow().notNull(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user