ultisuite-backend/migrations/000049_migration_shared_drives.up.sql
R3D347HR4Y 1ffd0817d8
Some checks are pending
CI / Go tests (push) Waiting to run
CI / Integration tests (push) Waiting to run
CI / DB migrations (push) Waiting to run
feat(migration): enhance migration API with roster and audit export features
- Added endpoints for listing and importing migration rosters.
- Introduced audit export functionality for migration jobs in CSV and NDJSON formats.
- Implemented tenant mismatch validation for Microsoft migration claims.
- Enhanced error handling for email claiming and migration processes.
- Added integration tests for roster import and claim workflows.
2026-06-13 13:11:30 +02:00

40 lines
1.7 KiB
SQL

-- Shared drive import mode and project-level dedup for Google Workspace migrations.
ALTER TABLE migration_projects
ADD COLUMN shared_drive_mode TEXT NOT NULL DEFAULT 'auto';
ALTER TABLE migration_projects
ADD CONSTRAINT migration_projects_shared_drive_mode_check
CHECK (shared_drive_mode IN ('auto', 'manual'));
CREATE TABLE migration_shared_drives (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
project_id UUID NOT NULL REFERENCES migration_projects(id) ON DELETE CASCADE,
drive_id TEXT NOT NULL,
name TEXT NOT NULL DEFAULT '',
status TEXT NOT NULL DEFAULT 'pending',
discovered_by_user_id UUID REFERENCES users(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(project_id, drive_id),
CONSTRAINT migration_shared_drives_status_check
CHECK (status IN ('pending', 'approved', 'rejected'))
);
CREATE INDEX idx_migration_shared_drives_project_status
ON migration_shared_drives(project_id, status);
-- Project-level dedup: one import per shared-drive file across all users in a project.
CREATE TABLE migration_shared_drive_items (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
project_id UUID NOT NULL REFERENCES migration_projects(id) ON DELETE CASCADE,
drive_id TEXT NOT NULL,
source_id TEXT NOT NULL,
rel_path TEXT NOT NULL DEFAULT '',
imported_by_job_id UUID REFERENCES migration_jobs(id) ON DELETE SET NULL,
imported_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(project_id, drive_id, source_id)
);
CREATE INDEX idx_migration_shared_drive_items_project
ON migration_shared_drive_items(project_id, drive_id);