42 lines
2.1 KiB
SQL
42 lines
2.1 KiB
SQL
-- Add directory support to files table
|
|
-- Migration: Add directory support for folder uploads
|
|
|
|
-- Add new columns to files table
|
|
ALTER TABLE files
|
|
ADD COLUMN IF NOT EXISTS is_directory BOOLEAN DEFAULT FALSE,
|
|
ADD COLUMN IF NOT EXISTS parent_directory_id UUID REFERENCES files(id) ON DELETE CASCADE,
|
|
ADD COLUMN IF NOT EXISTS relative_path TEXT,
|
|
ADD COLUMN IF NOT EXISTS directory_manifest JSONB,
|
|
ADD COLUMN IF NOT EXISTS upload_session_id UUID,
|
|
ADD COLUMN IF NOT EXISTS processing_status TEXT DEFAULT 'uploaded' CHECK (processing_status IN ('uploaded', 'processing', 'completed', 'failed', 'queued'));
|
|
|
|
-- Create index for efficient directory queries
|
|
CREATE INDEX IF NOT EXISTS idx_files_parent_directory ON files(parent_directory_id);
|
|
CREATE INDEX IF NOT EXISTS idx_files_upload_session ON files(upload_session_id);
|
|
CREATE INDEX IF NOT EXISTS idx_files_processing_status ON files(processing_status);
|
|
CREATE INDEX IF NOT EXISTS idx_files_is_directory ON files(is_directory);
|
|
|
|
-- Create directory manifest structure
|
|
COMMENT ON COLUMN files.is_directory IS 'True if this record represents a directory/folder';
|
|
COMMENT ON COLUMN files.parent_directory_id IS 'ID of parent directory if this file is inside an uploaded folder';
|
|
COMMENT ON COLUMN files.relative_path IS 'Relative path within the uploaded directory structure';
|
|
COMMENT ON COLUMN files.directory_manifest IS 'JSON manifest of directory contents including file count, total size, structure';
|
|
COMMENT ON COLUMN files.upload_session_id IS 'Groups files uploaded together in a single directory upload session';
|
|
COMMENT ON COLUMN files.processing_status IS 'Simple status tracking without auto-processing';
|
|
|
|
-- Example directory_manifest structure:
|
|
-- {
|
|
-- "total_files": 15,
|
|
-- "total_size_bytes": 12345678,
|
|
-- "directory_structure": {
|
|
-- "documents/": {
|
|
-- "file1.pdf": {"size": 123456, "mime_type": "application/pdf"},
|
|
-- "subdirectory/": {
|
|
-- "file2.docx": {"size": 234567, "mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}
|
|
-- }
|
|
-- }
|
|
-- },
|
|
-- "upload_timestamp": "2024-09-23T12:00:00Z",
|
|
-- "upload_method": "directory_picker"
|
|
-- }
|