Skip to content

Commit 6d8668e

Browse files
Schemas and dbConnect added
1 parent a066d4e commit 6d8668e

File tree

7 files changed

+178
-73
lines changed

7 files changed

+178
-73
lines changed

app/workflow/page.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
"use client"
22
import React from 'react';
3-
import WorkflowExecutor from '@/components/WorkflowExecutor';
3+
import WorkflowBuilder from '@/components/WorkflowBuilder';
44

5-
export default function RunWorkflowPage() {
5+
export default function BuildWorkflowPage() {
66
return (
77
<div className="flex flex-col min-h-screen">
88
<main className="flex-grow p-4">
9-
<WorkflowExecutor />
9+
<WorkflowBuilder />
1010
</main>
1111
</div>
1212
);

lib/dbConnect.ts

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import mongoose from "mongoose";
2+
3+
type ConnectionObject = {
4+
isConnected?: number
5+
}
6+
7+
const connection: ConnectionObject = {}
8+
9+
async function dbConnect(): Promise<void> {
10+
if (connection.isConnected) {
11+
console.log("Already connected to database")
12+
return
13+
}
14+
15+
try {
16+
const db = await mongoose.connect(process.env.MONGODB_URI || '')
17+
18+
connection.isConnected = db.connections[0].readyState
19+
20+
console.log("Database connected successfully")
21+
} catch (error) {
22+
console.log("Database connection failed", error)
23+
24+
process.exit(1)
25+
}
26+
}
27+
28+
export default dbConnect;

schemas/WorkFlowExecutionSchema.ts

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
import { Schema, model, models } from 'mongoose';
3+
4+
const ExecutionSchema = new Schema({
5+
workflowId: {
6+
type: Schema.Types.ObjectId,
7+
ref: 'Workflow',
8+
required: true,
9+
},
10+
userId: {
11+
type: Schema.Types.ObjectId,
12+
ref: 'User',
13+
required: true,
14+
},
15+
fileName: {
16+
type: String,
17+
required: true,
18+
},
19+
status: {
20+
type: String,
21+
enum: ['pending', 'processing', 'completed', 'failed'],
22+
default: 'pending',
23+
},
24+
result: {
25+
type: Schema.Types.Mixed,
26+
},
27+
errorMessage: {
28+
type: String,
29+
},
30+
createdAt: {
31+
type: Date,
32+
default: Date.now,
33+
},
34+
updatedAt: {
35+
type: Date,
36+
default: Date.now,
37+
},
38+
});
39+
40+
export default models.Execution || model('Execution', ExecutionSchema);

schemas/fileSchema.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
import { Schema, model, models } from 'mongoose';
3+
4+
const FileSchema = new Schema({
5+
userId: {
6+
type: Schema.Types.ObjectId,
7+
ref: 'User',
8+
required: true,
9+
},
10+
fileName: {
11+
type: String,
12+
required: true,
13+
},
14+
filePath: {
15+
type: String,
16+
required: true,
17+
},
18+
uploadedAt: {
19+
type: Date,
20+
default: Date.now,
21+
},
22+
});
23+
24+
export default models.File || model('File', FileSchema);

schemas/userSchema.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
import { Schema, model, models } from 'mongoose';
3+
4+
const UserSchema = new Schema({
5+
email: {
6+
type: String,
7+
required: true,
8+
unique: true,
9+
},
10+
name: {
11+
type: String,
12+
},
13+
image: {
14+
type: String,
15+
},
16+
workflows: [
17+
{
18+
type: Schema.Types.ObjectId,
19+
ref: 'Workflow',
20+
},
21+
],
22+
});
23+
24+
export default models.User || model('User', UserSchema);

schemas/workflowSchema.ts

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
2+
import { Schema, model, models } from 'mongoose';
3+
4+
const NodeSchema = new Schema({
5+
id: {
6+
type: String,
7+
required: true,
8+
},
9+
type: {
10+
type: String,
11+
enum: ['filterData', 'wait', 'convertFormat', 'sendPostRequest'],
12+
required: true,
13+
},
14+
position: {
15+
x: { type: Number, required: true },
16+
y: { type: Number, required: true },
17+
},
18+
data: {
19+
label: { type: String },
20+
additionalData: { type: Schema.Types.Mixed },
21+
},
22+
});
23+
24+
const EdgeSchema = new Schema({
25+
id: {
26+
type: String,
27+
required: true,
28+
},
29+
source: {
30+
type: String,
31+
required: true,
32+
},
33+
target: {
34+
type: String,
35+
required: true,
36+
},
37+
sourceHandle: String,
38+
targetHandle: String,
39+
});
40+
41+
const WorkflowSchema = new Schema({
42+
userId: {
43+
type: Schema.Types.ObjectId,
44+
ref: 'User',
45+
required: true,
46+
},
47+
name: {
48+
type: String,
49+
required: true,
50+
},
51+
nodes: [NodeSchema],
52+
edges: [EdgeSchema],
53+
createdAt: {
54+
type: Date,
55+
default: Date.now,
56+
},
57+
});
58+
59+
export default models.Workflow || model('Workflow', WorkflowSchema);

utils/workflow.ts

-70
This file was deleted.

0 commit comments

Comments
 (0)