diff --git a/app/routers/dashboard.py b/app/routers/dashboard.py index 585b77e..830e987 100644 --- a/app/routers/dashboard.py +++ b/app/routers/dashboard.py @@ -659,18 +659,27 @@ async def create_workspace(request: Request): import json body = await request.json() name = body.get("name", "New Workspace").strip() + if not name: + return {"error": "Name required"} user = SessionManager.decode_session(request.cookies.get("flowdeck_session", "")) uid = user["id"] if user and user.get("id") else 1 with get_conn() as conn: + # Ensure user exists (FK constraint) + uid_ok = conn.execute("SELECT id FROM users WHERE id=?", (uid,)).fetchone() + if not uid_ok: + conn.execute( + "INSERT OR IGNORE INTO users (id, login, full_name, is_admin) VALUES (?, ?, ?, 1)", + (uid, user.get("login", "admin") if user else "admin", + user.get("full_name", "Admin") if user else "Admin"), + ) cursor = conn.execute( "INSERT INTO workspaces (name, owner_id) VALUES (?, ?)", (name, uid), ) - conn.commit() ws_id = cursor.lastrowid # Add owner as member conn.execute( - "INSERT INTO workspace_members (workspace_id, user_id, role) VALUES (?, ?, 'owner')", + "INSERT OR IGNORE INTO workspace_members (workspace_id, user_id, role) VALUES (?, ?, 'owner')", (ws_id, uid), ) conn.commit()