the flow we just created is not showing up
This commit is contained in:
@@ -22,6 +22,12 @@ const flowSchema = z.object({
|
||||
path: z.string().min(1, 'Path is required').startsWith('/', { message: 'Path must start with /' }),
|
||||
});
|
||||
|
||||
type State = {
|
||||
success: boolean;
|
||||
message: string;
|
||||
errors?: z.ZodIssue[] | null;
|
||||
}
|
||||
|
||||
export async function getFlows(): Promise<Flow[]> {
|
||||
try {
|
||||
const stmt = db.prepare(
|
||||
@@ -46,14 +52,14 @@ export async function getFlow(id: number): Promise<Flow | null> {
|
||||
}
|
||||
}
|
||||
|
||||
export async function saveFlow(formData: FormData) {
|
||||
export async function saveFlow(prevState: State, formData: FormData): Promise<State> {
|
||||
const validatedFields = flowSchema.safeParse(Object.fromEntries(formData.entries()));
|
||||
|
||||
if (!validatedFields.success) {
|
||||
return {
|
||||
success: false,
|
||||
message: 'Invalid fields.',
|
||||
errors: validatedFields.error.flatten().fieldErrors,
|
||||
errors: validatedFields.error.issues,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -75,9 +81,16 @@ export async function saveFlow(formData: FormData) {
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.error('Failed to save flow:', error);
|
||||
if (error.code === 'SQLITE_CONSTRAINT_UNIQUE') {
|
||||
return {
|
||||
success: false,
|
||||
message: 'A flow with this path already exists.',
|
||||
errors: [{ path: ['path'], message: 'A flow with this path already exists.', code: 'custom' }],
|
||||
};
|
||||
}
|
||||
return {
|
||||
success: false,
|
||||
message: error.code === 'SQLITE_CONSTRAINT_UNIQUE' ? 'A flow with this path already exists.' : 'An internal error occurred.',
|
||||
message: 'An internal error occurred.',
|
||||
errors: null,
|
||||
};
|
||||
}
|
||||
|
||||
+28
-2
@@ -4,7 +4,7 @@ import Database from 'better-sqlite3';
|
||||
// Use a file-based database in development
|
||||
const db = new Database('local.db');
|
||||
|
||||
// Create the tables if they don't exist
|
||||
// --- SCHEMA CREATION ---
|
||||
db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -44,11 +44,37 @@ db.exec(`
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
path TEXT NOT NULL,
|
||||
path TEXT NOT NULL UNIQUE,
|
||||
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
`);
|
||||
|
||||
// --- SEEDING LOGIC ---
|
||||
console.log('Running database checks and seeding if necessary...');
|
||||
|
||||
// Seed default user
|
||||
const userStmt = db.prepare('SELECT id FROM users WHERE id = ?');
|
||||
const defaultUser = userStmt.get(1);
|
||||
if (!defaultUser) {
|
||||
const insertUser = db.prepare(
|
||||
"INSERT INTO users (id, email, password, name) VALUES (?, ?, ?, ?)"
|
||||
);
|
||||
insertUser.run(1, 'admin@example.com', 'password', 'Admin User');
|
||||
console.log('Default user created.');
|
||||
}
|
||||
|
||||
// Seed default flow
|
||||
const flowStmt = db.prepare("SELECT id FROM flows WHERE path = ?");
|
||||
const defaultFlow = flowStmt.get('/');
|
||||
if (!defaultFlow) {
|
||||
const insertFlow = db.prepare(
|
||||
"INSERT INTO flows (name, description, path) VALUES (?, ?, ?)"
|
||||
);
|
||||
insertFlow.run('Cost Estimator', 'The main cost estimation tool for clients.', '/');
|
||||
console.log('Default flow created.');
|
||||
}
|
||||
|
||||
console.log('Database setup complete.');
|
||||
|
||||
export default db;
|
||||
|
||||
Reference in New Issue
Block a user