diff --git a/ai-hub/app/api/routes/sessions.py b/ai-hub/app/api/routes/sessions.py index ca5b372..41e549b 100644 --- a/ai-hub/app/api/routes/sessions.py +++ b/ai-hub/app/api/routes/sessions.py @@ -80,6 +80,10 @@ try: if source == "server": assistant.push_workspace(nid, new_session.sync_workspace_id) + elif source == "empty": + assistant.push_workspace(nid, new_session.sync_workspace_id) + assistant.control_sync(nid, new_session.sync_workspace_id, action="START") + assistant.control_sync(nid, new_session.sync_workspace_id, action="UNLOCK") elif source == "node_local": assistant.request_manifest(nid, new_session.sync_workspace_id, path=path or ".") assistant.control_sync(nid, new_session.sync_workspace_id, action="START", path=path or ".") @@ -437,6 +441,12 @@ print(f" [📁📤] Pushing workspace {session.sync_workspace_id} to {nid}") assistant.push_workspace(nid, session.sync_workspace_id) assistant.control_sync(nid, session.sync_workspace_id, action="LOCK") + elif config.source == "empty": + # Empty -> Node: Initialize empty dir, start watching collaboratively + print(f" [📁⚪] Initializing empty collaborative workspace {session.sync_workspace_id} to {nid}") + assistant.push_workspace(nid, session.sync_workspace_id) + assistant.control_sync(nid, session.sync_workspace_id, action="START") + assistant.control_sync(nid, session.sync_workspace_id, action="UNLOCK") elif config.source == "node_local": # Only the designated source node pulls from local disk if config.source_node_id == nid: diff --git a/fix_db.py b/fix_db.py new file mode 100644 index 0000000..6d94814 --- /dev/null +++ b/fix_db.py @@ -0,0 +1,34 @@ +import sys +sys.path.append("/app") +from app.db.session import get_db_session +from app.db.models import User, Session +from sqlalchemy.orm.attributes import flag_modified + +try: + with get_db_session() as db: + users = db.query(User).all() + for u in users: + prefs = u.preferences or {} + nodes = prefs.get("nodes", {}) + defaults = nodes.get("default_node_ids", []) + if "synology-nas" in defaults: + defaults.remove("synology-nas") + nodes["default_node_ids"] = defaults + prefs["nodes"] = nodes + u.preferences = prefs + flag_modified(u, "preferences") + print(f"Removed synology-nas from user {u.id} preferences") + + sessions = db.query(Session).filter(Session.sync_workspace_id == "session-189-5d087351").all() + for s in sessions: + attached = s.attached_node_ids or [] + if "synology-nas" in attached: + attached.remove("synology-nas") + s.attached_node_ids = attached + flag_modified(s, "attached_node_ids") + print(f"Removed synology-nas from session {s.id}") + + db.commit() + print("Done.") +except Exception as e: + print(f"Error: {e}")