Skip to content

Commit 55beb38

Browse files
committed
[offers][feat] add admin table in db
1 parent ada6a68 commit 55beb38

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-- CreateTable
2+
CREATE TABLE "OffersAdmin" (
3+
"id" TEXT NOT NULL,
4+
"userId" TEXT NOT NULL,
5+
6+
CONSTRAINT "OffersAdmin_pkey" PRIMARY KEY ("id")
7+
);
8+
9+
-- CreateIndex
10+
CREATE UNIQUE INDEX "OffersAdmin_userId_key" ON "OffersAdmin"("userId");
11+
12+
-- AddForeignKey
13+
ALTER TABLE "OffersAdmin" ADD CONSTRAINT "OffersAdmin_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;

apps/portal/prisma/schema.prisma

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ model User {
6262
OffersProfile OffersProfile[]
6363
offersDiscussion OffersReply[]
6464
questionsLists QuestionsList[]
65+
OffersAdmin OffersAdmin?
6566
}
6667

6768
enum Vote {
@@ -241,6 +242,12 @@ model OffersProfile {
241242
analysis OffersAnalysis?
242243
}
243244

245+
model OffersAdmin {
246+
id String @id @default(cuid())
247+
userId String @unique
248+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
249+
}
250+
244251
model OffersBackground {
245252
id String @id @default(cuid())
246253

apps/portal/src/server/router/offers/offers-admin-router.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Currency } from '~/utils/offers/currency/CurrencyEnum';
1010
import { convertWithDate } from '~/utils/offers/currency/currencyExchange';
1111
import { createValidationRegex } from '~/utils/offers/zodRegex';
1212

13-
import { createRouter } from '../context';
13+
import { createProtectedRouter } from '../context';
1414

1515
const getOrder = (prefix: string) => {
1616
return prefix === '+' ? 'asc' : 'desc';
@@ -43,7 +43,7 @@ const getYoeRange = (yoeCategory: number | null | undefined) => {
4343
: null; // Internship
4444
};
4545

46-
export const offerAdminRouter = createRouter().query('list', {
46+
export const offerAdminRouter = createProtectedRouter().query('list', {
4747
input: z.object({
4848
companyId: z.string().nullish(),
4949
countryId: z.string().nullish(),
@@ -463,4 +463,15 @@ export const offerAdminRouter = createRouter().query('list', {
463463
!yoeRange ? JobType.INTERN : JobType.FULLTIME,
464464
);
465465
},
466+
}).query('isAdmin', {
467+
async resolve({ ctx }) {
468+
const userId = ctx.session.user.id;
469+
const result = await ctx.prisma.offersAdmin.findFirst({
470+
where: {
471+
userId
472+
}
473+
})
474+
475+
return result ? true : false
476+
}
466477
});

0 commit comments

Comments
 (0)