77from database import get_pad_service , get_backup_service , get_template_pad_service
88from database .service import PadService , BackupService , TemplatePadService
99
10- # Default template name to use when a user doesn't have a pad
11- DEFAULT_TEMPLATE_NAME = "default"
12-
13- pad_router = APIRouter ()
14-
1510# Constants
1611MAX_BACKUPS_PER_USER = 10 # Maximum number of backups to keep per user
1712DEFAULT_PAD_NAME = "Untitled" # Default name for new pads
13+ DEFAULT_TEMPLATE_NAME = "default" # Template name to use when a user doesn't have a pad
14+
15+ pad_router = APIRouter ()
1816
19- @pad_router .post ("" )
17+
18+ @pad_router .post ("/" )
2019async def save_canvas (
2120 data : Dict [str , Any ],
22- auth : UserSession = Depends (require_auth ),
21+ user : UserSession = Depends (require_auth ),
2322 pad_service : PadService = Depends (get_pad_service ),
2423 backup_service : BackupService = Depends (get_backup_service ),
25- request : Request = None
2624):
2725 """Save canvas data for the authenticated user"""
28- # Get user ID from session
29- user_id = auth .user_id
30-
3126 try :
3227 # Check if user already has a pad
33- user_pads = await pad_service .get_pads_by_owner (user_id )
28+ user_pads = await pad_service .get_pads_by_owner (user . id )
3429
3530 if not user_pads :
3631 # Create a new pad if user doesn't have one
3732 pad = await pad_service .create_pad (
38- owner_id = user_id ,
33+ owner_id = user . id ,
3934 display_name = DEFAULT_PAD_NAME ,
4035 data = data
4136 )
42- pad_id = UUID (pad ["id" ])
4337 else :
4438 # Update existing pad
4539 pad = user_pads [0 ] # Use the first pad (assuming one pad per user for now)
46- pad_id = UUID (pad ["id" ])
47- await pad_service .update_pad_data (pad_id , data )
40+ await pad_service .update_pad_data (pad ["id" ], data )
4841
4942 # Create a backup
50- await backup_service .create_backup (pad_id , data )
43+ await backup_service .create_backup (pad [ "id" ] , data )
5144
5245 # Manage backups (keep only the most recent ones)
53- await backup_service .manage_backups (pad_id , MAX_BACKUPS_PER_USER )
46+ await backup_service .manage_backups (pad [ "id" ] , MAX_BACKUPS_PER_USER )
5447
5548 return {"status" : "success" }
5649 except Exception as e :
5750 raise HTTPException (status_code = 500 , detail = f"Failed to save canvas data: { str (e )} " )
5851
59- async def get_default_canvas_data (template_pad_service : TemplatePadService ) -> Dict [str , Any ]:
60- """Get default canvas data from the template pad with name 'default'"""
61- try :
62- # Get the default template pad
63- default_template = await template_pad_service .get_template_by_name (DEFAULT_TEMPLATE_NAME )
64- if not default_template :
65- # Return empty data if default template doesn't exist
66- return {}
67-
68- # Return the template data
69- return default_template ["data" ]
70- except Exception as e :
71- # Log the error but return empty data to avoid breaking the application
72- print (f"Error getting default canvas data: { str (e )} " )
73- return {}
7452
75- @pad_router .get ("" )
53+ @pad_router .get ("/ " )
7654async def get_canvas (
77- auth : UserSession = Depends (require_auth ),
55+ user : UserSession = Depends (require_auth ),
7856 pad_service : PadService = Depends (get_pad_service ),
7957 template_pad_service : TemplatePadService = Depends (get_template_pad_service )
8058):
8159 """Get canvas data for the authenticated user"""
82- # Get user ID from session
83- user_id = auth .user_id
84-
8560 try :
8661 # Get user's pads
87- user_pads = await pad_service .get_pads_by_owner (user_id )
62+ user_pads = await pad_service .get_pads_by_owner (user . id )
8863
8964 if not user_pads :
9065 # Return default canvas if user doesn't have a pad
91- return await get_default_canvas_data ( template_pad_service )
66+ return await create_pad_from_template ( DEFAULT_TEMPLATE_NAME , DEFAULT_PAD_NAME , user , pad_service , template_pad_service )
9267
9368 # Return the first pad's data (assuming one pad per user for now)
9469 return user_pads [0 ]["data" ]
9570 except Exception as e :
9671 raise HTTPException (status_code = 500 , detail = f"Failed to get canvas data: { str (e )} " )
9772
98- @pad_router .post ("/from-template/{template_id}" )
73+
74+ @pad_router .post ("/from-template/{name}" )
9975async def create_pad_from_template (
100- template_id : UUID ,
76+ name : str ,
10177 display_name : str = DEFAULT_PAD_NAME ,
102- auth : UserSession = Depends (require_auth ),
78+ user : UserSession = Depends (require_auth ),
10379 pad_service : PadService = Depends (get_pad_service ),
10480 template_pad_service : TemplatePadService = Depends (get_template_pad_service )
10581):
10682 """Create a new pad from a template"""
107- # Get user ID from session
108- user_id = auth .user_id
109-
83+
11084 try :
11185 # Get the template
112- template = await template_pad_service .get_template ( template_id )
86+ template = await template_pad_service .get_template_by_name ( name )
11387 if not template :
11488 raise HTTPException (status_code = 404 , detail = "Template not found" )
11589
11690 # Create a new pad using the template data
11791 pad = await pad_service .create_pad (
118- owner_id = user_id ,
92+ owner_id = user . id ,
11993 display_name = display_name ,
12094 data = template ["data" ]
12195 )
@@ -126,28 +100,22 @@ async def create_pad_from_template(
126100 except Exception as e :
127101 raise HTTPException (status_code = 500 , detail = f"Failed to create pad from template: { str (e )} " )
128102
103+
129104@pad_router .get ("/recent" )
130105async def get_recent_canvas_backups (
131106 limit : int = MAX_BACKUPS_PER_USER ,
132- auth : UserSession = Depends (require_auth ),
107+ user : UserSession = Depends (require_auth ),
133108 pad_service : PadService = Depends (get_pad_service ),
134109 backup_service : BackupService = Depends (get_backup_service )
135110):
136111 """Get the most recent canvas backups for the authenticated user"""
137- # Get user ID from session
138- user_id = auth .user_id
139-
140112 # Limit the number of backups to the maximum configured value
141113 if limit > MAX_BACKUPS_PER_USER :
142114 limit = MAX_BACKUPS_PER_USER
143115
144116 try :
145117 # Get user's pads
146- user_pads = await pad_service .get_pads_by_owner (user_id )
147-
148- if not user_pads :
149- # Return empty list if user doesn't have a pad
150- return {"backups" : []}
118+ user_pads = await pad_service .get_pads_by_owner (user .id )
151119
152120 # Get the first pad's ID (assuming one pad per user for now)
153121 pad_id = UUID (user_pads [0 ]["id" ])
0 commit comments