import { pgTable, bigint, timestamp, text, doublePrecision, boolean, smallint, uuid, jsonb, json, } from "drizzle-orm/pg-core" import { tenants } from "./tenants" import { units } from "./units" import { authUsers } from "./auth_users" export const products = pgTable("products", { id: bigint("id", { mode: "number" }) .primaryKey() .generatedByDefaultAsIdentity(), createdAt: timestamp("created_at", { withTimezone: true }) .notNull() .defaultNow(), name: text("name").notNull(), manufacturer: text("manufacturer"), unit: bigint("unit", { mode: "number" }) .notNull() .references(() => units.id), tags: json("tags").notNull().default([]), tenant: bigint("tenant", { mode: "number" }) .notNull() .references(() => tenants.id), ean: text("ean"), barcode: text("barcode"), purchasePrice: doublePrecision("purchasePrice"), sellingPrice: doublePrecision("sellingPrice"), description: text("description"), manufacturerNumber: text("manufacturerNumber"), vendorAllocation: jsonb("vendorAllocation").default([]), articleNumber: text("articleNumber"), barcodes: text("barcodes").array().notNull().default([]), productcategories: jsonb("productcategories").default([]), archived: boolean("archived").notNull().default(false), taxPercentage: smallint("taxPercentage").notNull().default(19), markupPercentage: doublePrecision("markupPercentage"), updatedAt: timestamp("updated_at", { withTimezone: true }), updatedBy: uuid("updated_by").references(() => authUsers.id), }) export type Product = typeof products.$inferSelect export type NewProduct = typeof products.$inferInsert