[questions][chore] update to use company table values

pull/351/head
hpkoh 3 years ago
parent d3c0c21f1b
commit 680708aaee

@ -0,0 +1,13 @@
/*
Warnings:
- You are about to drop the column `company` on the `QuestionsQuestionEncounter` table. All the data in the column will be lost.
- Added the required column `companyId` to the `QuestionsQuestionEncounter` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "QuestionsQuestionEncounter" DROP COLUMN "company",
ADD COLUMN "companyId" TEXT NOT NULL;
-- AddForeignKey
ALTER TABLE "QuestionsQuestionEncounter" ADD CONSTRAINT "QuestionsQuestionEncounter_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE SET NULL ON UPDATE CASCADE;

@ -96,6 +96,8 @@ model Company {
logoUrl String? logoUrl String?
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @updatedAt updatedAt DateTime @updatedAt
questionsQuestionEncounter QuestionsQuestionEncounter[]
} }
// Start of Resumes project models. // Start of Resumes project models.
@ -202,14 +204,15 @@ model QuestionsQuestionEncounter {
id String @id @default(cuid()) id String @id @default(cuid())
questionId String questionId String
userId String? userId String?
// TODO: sync with models // TODO: sync with models (location, role)
company String @db.Text companyId String
location String @db.Text location String @db.Text
role String @db.Text role String @db.Text
seenAt DateTime seenAt DateTime
createdAt DateTime @default(now()) createdAt DateTime @default(now())
updatedAt DateTime @updatedAt updatedAt DateTime @updatedAt
company Company? @relation(fields: [companyId], references: [id], onDelete: SetNull)
user User? @relation(fields: [userId], references: [id], onDelete: SetNull) user User? @relation(fields: [userId], references: [id], onDelete: SetNull)
question QuestionsQuestion @relation(fields: [questionId], references: [id], onDelete: Cascade) question QuestionsQuestion @relation(fields: [questionId], references: [id], onDelete: Cascade)
} }

@ -59,7 +59,7 @@ export const questionsQuestionRouter = createProtectedRouter()
const encounter = data.encounters[i]; const encounter = data.encounters[i];
const matchCompany = const matchCompany =
input.companies.length === 0 || input.companies.length === 0 ||
input.companies.includes(encounter.company); input.companies.includes(encounter.company!.id);
const matchLocation = const matchLocation =
input.locations.length === 0 || input.locations.length === 0 ||
input.locations.includes(encounter.location); input.locations.includes(encounter.location);
@ -93,7 +93,7 @@ export const questionsQuestionRouter = createProtectedRouter()
); );
const question: Question = { const question: Question = {
company: data.encounters[0].company, company: data.encounters[0].company!.name ?? 'Unknown company',
content: data.content, content: data.content,
id: data.id, id: data.id,
location: data.encounters[0].location ?? 'Unknown location', location: data.encounters[0].location ?? 'Unknown location',
@ -166,7 +166,7 @@ export const questionsQuestionRouter = createProtectedRouter()
); );
const question: Question = { const question: Question = {
company: questionData.encounters[0].company, company: questionData.encounters[0].company!.name ?? 'Unknown company',
content: questionData.content, content: questionData.content,
id: questionData.id, id: questionData.id,
location: questionData.encounters[0].location ?? 'Unknown location', location: questionData.encounters[0].location ?? 'Unknown location',
@ -184,7 +184,7 @@ export const questionsQuestionRouter = createProtectedRouter()
}) })
.mutation('create', { .mutation('create', {
input: z.object({ input: z.object({
company: z.string(), companyId: z.string(),
content: z.string(), content: z.string(),
location: z.string(), location: z.string(),
questionType: z.nativeEnum(QuestionsQuestionType), questionType: z.nativeEnum(QuestionsQuestionType),
@ -194,13 +194,13 @@ export const questionsQuestionRouter = createProtectedRouter()
async resolve({ ctx, input }) { async resolve({ ctx, input }) {
const userId = ctx.session?.user?.id; const userId = ctx.session?.user?.id;
const question = await ctx.prisma.questionsQuestion.create({ return await ctx.prisma.questionsQuestion.create({
data: { data: {
content: input.content, content: input.content,
encounters: { encounters: {
create: [ create: [
{ {
company: input.company, company: input.companyId,
location: input.location, location: input.location,
role: input.role, role: input.role,
seenAt: input.seenAt, seenAt: input.seenAt,
@ -212,20 +212,6 @@ export const questionsQuestionRouter = createProtectedRouter()
userId, userId,
}, },
}); });
// Create question encounter
await ctx.prisma.questionsQuestionEncounter.create({
data: {
company: input.company,
location: input.location,
questionId: question.id,
role: input.role,
seenAt: input.seenAt,
userId,
},
});
return question;
}, },
}) })
.mutation('update', { .mutation('update', {

@ -1,3 +1,5 @@
import type { QuestionsQuestionType } from '@prisma/client';
export type Question = { export type Question = {
// TODO: company, location, role maps // TODO: company, location, role maps
company: string; company: string;
@ -9,7 +11,7 @@ export type Question = {
numVotes: number; numVotes: number;
role: string; role: string;
seenAt: Date; seenAt: Date;
type: stringl; type: QuestionsQuestionType;
updatedAt: Date; updatedAt: Date;
user: string; user: string;
}; };

Loading…
Cancel
Save