latest
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
import os
|
||||
from modules.logger_tool import initialise_logger
|
||||
from modules.database.supabase.utils.client import SupabaseServiceRoleClient, CreateBucketOptions
|
||||
|
||||
logger = initialise_logger(__name__, os.getenv("LOG_LEVEL"), os.getenv("LOG_PATH"), 'default', True)
|
||||
|
||||
def initialize_buckets() -> dict:
|
||||
"""
|
||||
Initialize storage buckets for ClassroomCopilot documents and files.
|
||||
|
||||
Creates buckets for:
|
||||
- TLDraw snapshot JSON files
|
||||
- Office document files (PDF, DOCX, etc.)
|
||||
- Docling document JSON files
|
||||
- Document page images (PNG/base64)
|
||||
- Document page fragment images (smaller PNG/base64)
|
||||
|
||||
Returns:
|
||||
dict: Result status and message
|
||||
"""
|
||||
logger.info("Starting storage bucket initialization...")
|
||||
|
||||
try:
|
||||
storage_client = SupabaseServiceRoleClient()
|
||||
|
||||
# Define the buckets to create
|
||||
buckets = [
|
||||
# TLDraw snapshot files
|
||||
{
|
||||
"id": "cc.public.snapshots",
|
||||
"options": CreateBucketOptions(
|
||||
name="ClassroomCopilot Public TLDraw Snapshots",
|
||||
public=False,
|
||||
file_size_limit=1000 * 1024 * 1024, # 1GB
|
||||
allowed_mime_types=[
|
||||
'application/json'
|
||||
]
|
||||
)
|
||||
},
|
||||
# User cabinet files
|
||||
{
|
||||
"id": "cc.users",
|
||||
"options": CreateBucketOptions(
|
||||
name="Classroom Copilot Users - Private",
|
||||
public=False,
|
||||
file_size_limit=1000 * 1024 * 1024, # 1GB
|
||||
)
|
||||
},
|
||||
]
|
||||
|
||||
results = {}
|
||||
success_count = 0
|
||||
total_count = len(buckets)
|
||||
|
||||
for bucket in buckets:
|
||||
try:
|
||||
logger.info(f"Creating bucket: {bucket['id']}")
|
||||
result = storage_client.create_bucket(bucket["id"], bucket["options"])
|
||||
|
||||
if result:
|
||||
results[bucket["id"]] = {
|
||||
"status": "success",
|
||||
"result": result
|
||||
}
|
||||
success_count += 1
|
||||
logger.info(f"Successfully created bucket: {bucket['id']}")
|
||||
else:
|
||||
results[bucket["id"]] = {
|
||||
"status": "error",
|
||||
"error": "Failed to create bucket"
|
||||
}
|
||||
logger.error(f"Failed to create bucket: {bucket['id']}")
|
||||
|
||||
except Exception as e:
|
||||
results[bucket["id"]] = {
|
||||
"status": "error",
|
||||
"error": str(e)
|
||||
}
|
||||
logger.error(f"Error creating bucket {bucket['id']}: {str(e)}")
|
||||
|
||||
# Determine overall success
|
||||
if success_count == total_count:
|
||||
message = f"All {total_count} storage buckets created successfully"
|
||||
success = True
|
||||
elif success_count > 0:
|
||||
message = f"Created {success_count}/{total_count} storage buckets. Some failed."
|
||||
success = False
|
||||
else:
|
||||
message = f"Failed to create any storage buckets ({total_count} attempted)"
|
||||
success = False
|
||||
|
||||
logger.info(f"Bucket initialization completed: {message}")
|
||||
|
||||
return {
|
||||
"success": success,
|
||||
"message": message,
|
||||
"results": results,
|
||||
"success_count": success_count,
|
||||
"total_count": total_count
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
error_msg = f"Failed to initialize storage buckets: {str(e)}"
|
||||
logger.error(error_msg)
|
||||
return {
|
||||
"success": False,
|
||||
"message": error_msg,
|
||||
"error": str(e)
|
||||
}
|
||||
Reference in New Issue
Block a user