task-managment / src / database / schema / userTool.ts
userTool.ts
Raw
import { relations } from 'drizzle-orm';
import {  pgTable,serial,char,pgEnum, primaryKey,integer,index,uniqueIndex,timestamp,unique, varchar, uuid } from 'drizzle-orm/pg-core';
import { tool } from './tools';
import { user } from './user';


export const userTool = pgTable("userTool", {
    id: uuid("id").primaryKey().notNull(),
	toolId: uuid("toolId").notNull().references(()=>tool.id,{onDelete:'cascade',onUpdate:'cascade'}),
	userId: varchar("userId",{length:255}).notNull().references(()=>user.id),
	toolName: varchar("tool_name",{length:255}).notNull(),
    quantity:integer('quantity').notNull().default(1),
	createdAt: timestamp('createdAt',{mode:'date'}).notNull().defaultNow(),
	updatedAt: timestamp('updatedAt',{mode:'date'}).notNull().defaultNow(),
},(t)=>({
	unq_user_tool:unique().on(t.toolId,t.userId),
	userTool_tool:index("userTool_tool").on(t.toolId),
	userTool_user:index('userTool_user').on(t.userId)
}));


export const userToolRelations=relations(userTool,({one,many})=>({
	tool:one(tool,{
		fields:[userTool.toolId],
		references:[tool.id]
	}),
    user:one(user,{
		fields:[userTool.userId],
		references:[user.id]
	}),
}))

export type UserToolInsert = typeof userTool.$inferInsert
export type UserToolSelect = typeof userTool.$inferSelect