Skip to content

Commit

Permalink
feat: added role request and updated relations
Browse files Browse the repository at this point in the history
  • Loading branch information
suxls committed Jan 23, 2025
1 parent ba8799f commit 3787b05
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { createInsertSchema } from "drizzle-zod";
import { z } from "zod";

import { Industry, RequestStatus } from "./misc";
import { Profile } from "./profiles";

export const CompanyRequest = pgTable("company_request", {
id: uuid("id").notNull().primaryKey().defaultRandom(),
Expand All @@ -27,13 +28,12 @@ export const CompanyRequest = pgTable("company_request", {

export type CompanyRequestType = typeof CompanyRequest.$inferSelect;

// export const RequestRelations = relations(Role, ({ one }) => ({
// company: one(Company, {
// fields: [Role.companyId],
// references: [Company.id],
// }),
// roles: one(Role),
// }));
export const RequestRelations = relations(CompanyRequest, ({ one }) => ({
profile: one(Profile, {
fields: [CompanyRequest.id],
references: [Profile.userId],
}),
}));

// Zod validation schema for creating a company request
export const CreateCompanyRequestSchema = createInsertSchema(CompanyRequest, {
Expand Down
48 changes: 48 additions & 0 deletions packages/db/src/schema/roleRequest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { relations, sql } from "drizzle-orm";
import { pgTable, text, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
import { createInsertSchema } from "drizzle-zod";
import { z } from "zod";

import { Company } from "./companies";
import { RequestStatus } from "./misc";

export const RoleRequest = pgTable("role_request", {
id: uuid("id").notNull().primaryKey().defaultRandom(),
roleTitle: varchar("title").notNull(),
roleDescription: text("description"),
companyId: varchar("companyId").notNull(),
createdAt: timestamp("createdAt").defaultNow().notNull(),
updatedAt: timestamp("updatedAt", {
mode: "date",
withTimezone: true,
}).$onUpdateFn(() => sql`now()`),
status: varchar("status", {
enum: ["PENDING", "APPROVED", "REJECTED"], // Explicitly list the enum values (?)
})
.notNull()
.default("PENDING"),
});

export type CompanyRequestType = typeof RoleRequest.$inferSelect;

export const RoleRequestRelations = relations(RoleRequest, ({ one }) => ({
company: one(Company, {
fields: [RoleRequest.companyId],
references: [Company.id],
}),
}));

/*
What is the relationship between companyRequest/roleRequest/company/role
*/

// Zod validation schema for creating a role request
export const CreateCompanyRequestSchema = createInsertSchema(RoleRequest, {
roleTitle: z.string(),
roleDescription: z.string(),
status: z.nativeEnum(RequestStatus),
}).omit({
id: true,
createdAt: true,
updatedAt: true,
});

0 comments on commit 3787b05

Please sign in to comment.