CREATE TABLE files ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), organization_id UUID NOT NULL, user_id UUID NOT NULL, file_name VARCHAR(255) NOT NULL, original_name VARCHAR(255) NOT NULL, file_url VARCHAR(500) NOT NULL, file_size BIGINT NOT NULL, mime_type VARCHAR(100) NOT NULL, file_type VARCHAR(50) NOT NULL, upload_path VARCHAR(500) NOT NULL, is_public BOOLEAN DEFAULT TRUE, metadata JSONB, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- Create indexes for better performance CREATE INDEX idx_files_organization_id ON files(organization_id); CREATE INDEX idx_files_user_id ON files(user_id); CREATE INDEX idx_files_file_type ON files(file_type); CREATE INDEX idx_files_created_at ON files(created_at); -- Add foreign key constraints ALTER TABLE files ADD CONSTRAINT fk_files_organization_id FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE; ALTER TABLE files ADD CONSTRAINT fk_files_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;