670 lines
22 KiB
SQL
670 lines
22 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"passwordHash" TEXT NOT NULL,
|
|
"name" TEXT,
|
|
"role" TEXT NOT NULL DEFAULT 'SEEKER',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
"companyId" TEXT,
|
|
"emailVerified" TIMESTAMP(3),
|
|
"failedLoginAttempts" INTEGER NOT NULL DEFAULT 0,
|
|
"lockedUntil" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserProfile" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"headline" TEXT,
|
|
"bio" TEXT,
|
|
"phone" TEXT,
|
|
"location" TEXT,
|
|
"isPublic" BOOLEAN NOT NULL DEFAULT true,
|
|
"searchableToEmployers" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "UserProfile_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CandidateSkill" (
|
|
"id" TEXT NOT NULL,
|
|
"profileId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"level" TEXT,
|
|
|
|
CONSTRAINT "CandidateSkill_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "WorkExperience" (
|
|
"id" TEXT NOT NULL,
|
|
"profileId" TEXT NOT NULL,
|
|
"company" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"location" TEXT,
|
|
"startDate" TIMESTAMP(3) NOT NULL,
|
|
"endDate" TIMESTAMP(3),
|
|
"isCurrent" BOOLEAN NOT NULL DEFAULT false,
|
|
"description" TEXT,
|
|
|
|
CONSTRAINT "WorkExperience_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Education" (
|
|
"id" TEXT NOT NULL,
|
|
"profileId" TEXT NOT NULL,
|
|
"institution" TEXT NOT NULL,
|
|
"degree" TEXT NOT NULL,
|
|
"fieldOfStudy" TEXT,
|
|
"startDate" TIMESTAMP(3),
|
|
"endDate" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "Education_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Resume" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL DEFAULT 'My Resume',
|
|
"data" TEXT NOT NULL DEFAULT '{}',
|
|
"isActiveForMatching" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Resume_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Job" (
|
|
"id" TEXT NOT NULL,
|
|
"jobUrlHash" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"company" TEXT NOT NULL,
|
|
"location" TEXT NOT NULL,
|
|
"isRemote" BOOLEAN NOT NULL DEFAULT false,
|
|
"department" TEXT,
|
|
"experienceLevel" TEXT,
|
|
"description" TEXT NOT NULL,
|
|
"salaryMin" DOUBLE PRECISION,
|
|
"salaryMax" DOUBLE PRECISION,
|
|
"jobUrl" TEXT NOT NULL,
|
|
"source" TEXT NOT NULL,
|
|
"datePosted" TIMESTAMP(3),
|
|
"companyId" TEXT,
|
|
"postedById" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Job_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserJobInteraction" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"jobId" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL,
|
|
"notes" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "UserJobInteraction_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Application" (
|
|
"id" TEXT NOT NULL,
|
|
"jobId" TEXT NOT NULL,
|
|
"applicantId" TEXT NOT NULL,
|
|
"resumeId" TEXT,
|
|
"coverLetter" TEXT,
|
|
"status" TEXT NOT NULL DEFAULT 'APPLIED',
|
|
"answersJson" TEXT,
|
|
"snapshotJson" TEXT,
|
|
"employerNotes" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Application_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "JobAlert" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"titleQuery" TEXT,
|
|
"locationQuery" TEXT,
|
|
"isRemoteOnly" BOOLEAN NOT NULL DEFAULT false,
|
|
"minSalary" DOUBLE PRECISION,
|
|
"frequency" TEXT NOT NULL DEFAULT 'DAILY',
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"lastSentAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "JobAlert_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Company" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"logoUrl" TEXT,
|
|
"website" TEXT,
|
|
"cultureInfo" TEXT,
|
|
"location" TEXT,
|
|
"description" TEXT,
|
|
"verificationStatus" TEXT NOT NULL DEFAULT 'UNCLAIMED',
|
|
"verifiedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Company_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "organization_memberships" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"companyId" TEXT NOT NULL,
|
|
"role" TEXT NOT NULL DEFAULT 'RECRUITER',
|
|
"status" TEXT NOT NULL DEFAULT 'ACTIVE',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "organization_memberships_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "company_claims" (
|
|
"id" TEXT NOT NULL,
|
|
"companyId" TEXT NOT NULL,
|
|
"claimantId" TEXT NOT NULL,
|
|
"corporateEmail" TEXT NOT NULL,
|
|
"evidenceType" TEXT NOT NULL,
|
|
"evidenceData" TEXT,
|
|
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
|
"adminNotes" TEXT,
|
|
"reviewedAt" TIMESTAMP(3),
|
|
"reviewedById" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "company_claims_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "organization_invitations" (
|
|
"id" TEXT NOT NULL,
|
|
"companyId" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"role" TEXT NOT NULL DEFAULT 'RECRUITER',
|
|
"token" TEXT NOT NULL,
|
|
"invitedById" TEXT NOT NULL,
|
|
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
"acceptedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "organization_invitations_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CompanyReview" (
|
|
"id" TEXT NOT NULL,
|
|
"companyId" TEXT NOT NULL,
|
|
"authorId" TEXT,
|
|
"rating" INTEGER NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
|
"isApproved" BOOLEAN NOT NULL DEFAULT false,
|
|
"isReported" BOOLEAN NOT NULL DEFAULT false,
|
|
"reportReason" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "CompanyReview_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "FeaturedJob" (
|
|
"id" TEXT NOT NULL,
|
|
"jobId" TEXT NOT NULL,
|
|
"tier" TEXT NOT NULL DEFAULT 'FEATURED',
|
|
"expiresAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "FeaturedJob_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "saved_jobs" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"jobId" TEXT NOT NULL,
|
|
"savedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "saved_jobs_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "saved_searches" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"name" TEXT,
|
|
"keywords" TEXT,
|
|
"location" TEXT,
|
|
"department" TEXT,
|
|
"isRemoteOnly" BOOLEAN NOT NULL DEFAULT false,
|
|
"minSalary" DOUBLE PRECISION,
|
|
"alertFrequency" TEXT NOT NULL DEFAULT 'DAILY',
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"lastSentAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "saved_searches_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "application_status_history" (
|
|
"id" TEXT NOT NULL,
|
|
"applicationId" TEXT NOT NULL,
|
|
"fromStatus" TEXT,
|
|
"toStatus" TEXT NOT NULL,
|
|
"changedById" TEXT,
|
|
"note" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "application_status_history_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "candidate_notes" (
|
|
"id" TEXT NOT NULL,
|
|
"applicationId" TEXT NOT NULL,
|
|
"authorId" TEXT NOT NULL,
|
|
"noteText" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "candidate_notes_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "candidate_tags" (
|
|
"id" TEXT NOT NULL,
|
|
"applicationId" TEXT NOT NULL,
|
|
"tag" TEXT NOT NULL,
|
|
"createdById" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "candidate_tags_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "notifications" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"message" TEXT NOT NULL,
|
|
"link" TEXT,
|
|
"isRead" BOOLEAN NOT NULL DEFAULT false,
|
|
"readAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "notifications_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "notification_preferences" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"emailStatusChange" BOOLEAN NOT NULL DEFAULT true,
|
|
"emailJobAlerts" BOOLEAN NOT NULL DEFAULT true,
|
|
"inAppStatusChange" BOOLEAN NOT NULL DEFAULT true,
|
|
"inAppJobAlerts" BOOLEAN NOT NULL DEFAULT true,
|
|
"digestFrequency" TEXT NOT NULL DEFAULT 'IMMEDIATE',
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "notification_preferences_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "verification_tokens" (
|
|
"id" TEXT NOT NULL,
|
|
"identifier" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "verification_tokens_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "password_reset_tokens" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
"usedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "password_reset_tokens_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "audit_logs" (
|
|
"id" TEXT NOT NULL,
|
|
"actorId" TEXT,
|
|
"action" TEXT NOT NULL,
|
|
"targetId" TEXT,
|
|
"details" TEXT,
|
|
"ipAddress" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "audit_logs_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_role_idx" ON "User"("role");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_companyId_idx" ON "User"("companyId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UserProfile_userId_key" ON "UserProfile"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UserProfile_location_idx" ON "UserProfile"("location");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UserProfile_isPublic_searchableToEmployers_idx" ON "UserProfile"("isPublic", "searchableToEmployers");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CandidateSkill_profileId_idx" ON "CandidateSkill"("profileId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CandidateSkill_name_idx" ON "CandidateSkill"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "WorkExperience_profileId_idx" ON "WorkExperience"("profileId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Education_profileId_idx" ON "Education"("profileId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Resume_userId_idx" ON "Resume"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Job_jobUrlHash_key" ON "Job"("jobUrlHash");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Job_companyId_idx" ON "Job"("companyId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Job_postedById_idx" ON "Job"("postedById");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Job_location_idx" ON "Job"("location");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Job_isRemote_idx" ON "Job"("isRemote");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Job_department_idx" ON "Job"("department");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Job_experienceLevel_idx" ON "Job"("experienceLevel");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Job_datePosted_idx" ON "Job"("datePosted");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Job_source_idx" ON "Job"("source");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UserJobInteraction_userId_idx" ON "UserJobInteraction"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UserJobInteraction_jobId_idx" ON "UserJobInteraction"("jobId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UserJobInteraction_userId_jobId_key" ON "UserJobInteraction"("userId", "jobId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Application_applicantId_idx" ON "Application"("applicantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Application_jobId_idx" ON "Application"("jobId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Application_status_idx" ON "Application"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Application_jobId_applicantId_key" ON "Application"("jobId", "applicantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "JobAlert_userId_idx" ON "JobAlert"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Company_name_key" ON "Company"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "organization_memberships_companyId_idx" ON "organization_memberships"("companyId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "organization_memberships_userId_idx" ON "organization_memberships"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "organization_memberships_role_idx" ON "organization_memberships"("role");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "organization_memberships_userId_companyId_key" ON "organization_memberships"("userId", "companyId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "company_claims_companyId_idx" ON "company_claims"("companyId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "company_claims_claimantId_idx" ON "company_claims"("claimantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "company_claims_status_idx" ON "company_claims"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "organization_invitations_token_key" ON "organization_invitations"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "organization_invitations_companyId_idx" ON "organization_invitations"("companyId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "organization_invitations_email_idx" ON "organization_invitations"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "organization_invitations_token_idx" ON "organization_invitations"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CompanyReview_companyId_idx" ON "CompanyReview"("companyId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CompanyReview_status_idx" ON "CompanyReview"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "CompanyReview_companyId_authorId_key" ON "CompanyReview"("companyId", "authorId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "FeaturedJob_jobId_key" ON "FeaturedJob"("jobId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "saved_jobs_userId_idx" ON "saved_jobs"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "saved_jobs_jobId_idx" ON "saved_jobs"("jobId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "saved_jobs_userId_jobId_key" ON "saved_jobs"("userId", "jobId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "saved_searches_userId_idx" ON "saved_searches"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "saved_searches_isActive_alertFrequency_idx" ON "saved_searches"("isActive", "alertFrequency");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "saved_searches_createdAt_idx" ON "saved_searches"("createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "application_status_history_applicationId_idx" ON "application_status_history"("applicationId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "candidate_notes_applicationId_idx" ON "candidate_notes"("applicationId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "candidate_tags_applicationId_idx" ON "candidate_tags"("applicationId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "candidate_tags_applicationId_tag_key" ON "candidate_tags"("applicationId", "tag");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "notifications_userId_idx" ON "notifications"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "notifications_userId_isRead_idx" ON "notifications"("userId", "isRead");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "notification_preferences_userId_key" ON "notification_preferences"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "verification_tokens_token_key" ON "verification_tokens"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "verification_tokens_identifier_token_key" ON "verification_tokens"("identifier", "token");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "password_reset_tokens_token_key" ON "password_reset_tokens"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "password_reset_tokens_userId_idx" ON "password_reset_tokens"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "audit_logs_actorId_idx" ON "audit_logs"("actorId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "audit_logs_action_idx" ON "audit_logs"("action");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "audit_logs_createdAt_idx" ON "audit_logs"("createdAt");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "User" ADD CONSTRAINT "User_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "UserProfile" ADD CONSTRAINT "UserProfile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CandidateSkill" ADD CONSTRAINT "CandidateSkill_profileId_fkey" FOREIGN KEY ("profileId") REFERENCES "UserProfile"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "WorkExperience" ADD CONSTRAINT "WorkExperience_profileId_fkey" FOREIGN KEY ("profileId") REFERENCES "UserProfile"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Education" ADD CONSTRAINT "Education_profileId_fkey" FOREIGN KEY ("profileId") REFERENCES "UserProfile"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Resume" ADD CONSTRAINT "Resume_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Job" ADD CONSTRAINT "Job_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Job" ADD CONSTRAINT "Job_postedById_fkey" FOREIGN KEY ("postedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "UserJobInteraction" ADD CONSTRAINT "UserJobInteraction_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "UserJobInteraction" ADD CONSTRAINT "UserJobInteraction_jobId_fkey" FOREIGN KEY ("jobId") REFERENCES "Job"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Application" ADD CONSTRAINT "Application_jobId_fkey" FOREIGN KEY ("jobId") REFERENCES "Job"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Application" ADD CONSTRAINT "Application_applicantId_fkey" FOREIGN KEY ("applicantId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "JobAlert" ADD CONSTRAINT "JobAlert_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "organization_memberships" ADD CONSTRAINT "organization_memberships_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "organization_memberships" ADD CONSTRAINT "organization_memberships_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "company_claims" ADD CONSTRAINT "company_claims_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "company_claims" ADD CONSTRAINT "company_claims_claimantId_fkey" FOREIGN KEY ("claimantId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "organization_invitations" ADD CONSTRAINT "organization_invitations_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "organization_invitations" ADD CONSTRAINT "organization_invitations_invitedById_fkey" FOREIGN KEY ("invitedById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CompanyReview" ADD CONSTRAINT "CompanyReview_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CompanyReview" ADD CONSTRAINT "CompanyReview_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "saved_jobs" ADD CONSTRAINT "saved_jobs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "saved_jobs" ADD CONSTRAINT "saved_jobs_jobId_fkey" FOREIGN KEY ("jobId") REFERENCES "Job"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "saved_searches" ADD CONSTRAINT "saved_searches_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "application_status_history" ADD CONSTRAINT "application_status_history_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "Application"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "application_status_history" ADD CONSTRAINT "application_status_history_changedById_fkey" FOREIGN KEY ("changedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "candidate_notes" ADD CONSTRAINT "candidate_notes_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "Application"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "candidate_notes" ADD CONSTRAINT "candidate_notes_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "candidate_tags" ADD CONSTRAINT "candidate_tags_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "Application"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "candidate_tags" ADD CONSTRAINT "candidate_tags_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notifications" ADD CONSTRAINT "notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notification_preferences" ADD CONSTRAINT "notification_preferences_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "password_reset_tokens" ADD CONSTRAINT "password_reset_tokens_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "audit_logs" ADD CONSTRAINT "audit_logs_actorId_fkey" FOREIGN KEY ("actorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|