106 lines
3.2 KiB
SQL
106 lines
3.2 KiB
SQL
PRAGMA foreign_keys = OFF;
|
|
|
|
CREATE TABLE IF NOT EXISTS "candidate_experience_v2" (
|
|
"experience_id" TEXT PRIMARY KEY,
|
|
"candidate_id" TEXT NOT NULL REFERENCES "candidate"("candidate_id") ON DELETE CASCADE,
|
|
"employer_name" TEXT,
|
|
"role_title" TEXT,
|
|
"department" TEXT,
|
|
"start_date" DATE,
|
|
"end_date" DATE,
|
|
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
"last_updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
"country" TEXT,
|
|
"city" TEXT,
|
|
"facility_type" TEXT
|
|
);
|
|
|
|
INSERT INTO "candidate_experience_v2" (
|
|
"experience_id",
|
|
"candidate_id",
|
|
"employer_name",
|
|
"role_title",
|
|
"department",
|
|
"start_date",
|
|
"end_date",
|
|
"created_at",
|
|
"last_updated_at",
|
|
"country",
|
|
"city",
|
|
"facility_type"
|
|
)
|
|
SELECT
|
|
"experience_id",
|
|
"candidate_id",
|
|
"employer_name",
|
|
"role_title",
|
|
"department",
|
|
"start_date",
|
|
"end_date",
|
|
"created_at",
|
|
"last_updated_at",
|
|
"country",
|
|
"city",
|
|
"facility_type"
|
|
FROM "candidate_experience";
|
|
|
|
DROP TABLE "candidate_experience";
|
|
ALTER TABLE "candidate_experience_v2" RENAME TO "candidate_experience";
|
|
|
|
CREATE INDEX IF NOT EXISTS "idx_candidate_experience_candidate_id"
|
|
ON "candidate_experience" ("candidate_id");
|
|
|
|
CREATE TABLE IF NOT EXISTS "recognition_dossier" (
|
|
"dossier_id" TEXT PRIMARY KEY,
|
|
"candidate_id" TEXT NOT NULL REFERENCES "candidate"("candidate_id") ON DELETE CASCADE,
|
|
"target_state" TEXT NOT NULL,
|
|
"target_profession" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'draft',
|
|
"rules_version" TEXT,
|
|
"input_fingerprint" TEXT,
|
|
"generated_at" TIMESTAMP,
|
|
"package_file_path" TEXT,
|
|
"submission_guide_json" JSON NOT NULL DEFAULT '{}',
|
|
"checklist_json" JSON NOT NULL DEFAULT '[]',
|
|
"blocking_issues_json" JSON NOT NULL DEFAULT '[]',
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"last_updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "idx_recognition_dossier_candidate_state_profession"
|
|
ON "recognition_dossier" ("candidate_id", "target_state", "target_profession");
|
|
|
|
CREATE INDEX IF NOT EXISTS "idx_recognition_dossier_candidate_id"
|
|
ON "recognition_dossier" ("candidate_id");
|
|
|
|
CREATE INDEX IF NOT EXISTS "idx_recognition_dossier_status"
|
|
ON "recognition_dossier" ("status");
|
|
|
|
CREATE TABLE IF NOT EXISTS "recognition_dossier_document" (
|
|
"document_id" TEXT PRIMARY KEY,
|
|
"dossier_id" TEXT NOT NULL REFERENCES "recognition_dossier"("dossier_id") ON DELETE CASCADE,
|
|
"candidate_id" TEXT NOT NULL REFERENCES "candidate"("candidate_id") ON DELETE CASCADE,
|
|
"category" TEXT NOT NULL,
|
|
"title" TEXT,
|
|
"note" TEXT,
|
|
"file_path" TEXT NOT NULL,
|
|
"file_name" TEXT NOT NULL,
|
|
"file_size" INTEGER,
|
|
"mime_type" TEXT,
|
|
"uploaded" BOOLEAN NOT NULL DEFAULT 0,
|
|
"document_status" TEXT NOT NULL DEFAULT 'Unverified',
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"last_updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS "idx_recognition_dossier_document_dossier_id"
|
|
ON "recognition_dossier_document" ("dossier_id");
|
|
|
|
CREATE INDEX IF NOT EXISTS "idx_recognition_dossier_document_candidate_id"
|
|
ON "recognition_dossier_document" ("candidate_id");
|
|
|
|
CREATE INDEX IF NOT EXISTS "idx_recognition_dossier_document_category"
|
|
ON "recognition_dossier_document" ("category");
|
|
|
|
PRAGMA foreign_keys = ON;
|