Skip to content

Commit

Permalink
feat: set up company request schema and status
Browse files Browse the repository at this point in the history
  • Loading branch information
suxls committed Jan 22, 2025
1 parent 01d3375 commit ba8799f
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
9 changes: 9 additions & 0 deletions packages/db/src/schema/misc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,12 @@ export const WorkTerm = {
} as const;

export type WorkTermType = (typeof WorkTerm)[keyof typeof WorkTerm];

export const RequestStatus = {
PENDING: "PENDING",
APPROVED: "APPROVED",
REJECTED: "REJECTED",
} as const;

export type RequestStatusType =
(typeof RequestStatus)[keyof typeof RequestStatus];
52 changes: 52 additions & 0 deletions packages/db/src/schema/requests.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
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 { Industry, RequestStatus } from "./misc";

export const CompanyRequest = pgTable("company_request", {
id: uuid("id").notNull().primaryKey().defaultRandom(),
companyName: varchar("name").notNull(),
companyDescription: text("description"),
industry: varchar("industry").notNull(),
location: varchar("location").notNull(),
roleTitle: varchar("title").notNull(),
roleDescription: text("description"),
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 CompanyRequest.$inferSelect;

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

// Zod validation schema for creating a company request
export const CreateCompanyRequestSchema = createInsertSchema(CompanyRequest, {
companyName: z.string(),
companyDescription: z.string().optional(),
industry: z.nativeEnum(Industry),
location: z.string(),
roleTitle: z.string(),
roleDescription: z.string(),
status: z.nativeEnum(RequestStatus),
}).omit({
id: true,
createdAt: true,
updatedAt: true,
});
// Example TypeScript type for the Company Request

0 comments on commit ba8799f

Please sign in to comment.