import { integer, pgTable, serial, text, timestamp, varchar, } from "drizzle-orm/pg-core"; import { supportedApp } from "./supported-app.schema"; import { device } from "./device.schema"; import { relations } from "drizzle-orm"; export const link = pgTable("link", { id: serial("id").primaryKey(), token: text("token").notNull().unique(), status: varchar("status", { length: 16 }).notNull().default("active"), // "active" | "inactive" | "expired" | "revoked" linkedDeviceId: integer("linked_device_id").references(() => device.id, { onDelete: "set null", }), supportedAppId: integer("supported_app_id") .notNull() .references(() => supportedApp.id, { onDelete: "restrict", }), expiresAt: timestamp("expires_at"), lastAccessedAt: timestamp("last_accessed_at"), createdAt: timestamp("created_at").notNull(), updatedAt: timestamp("updated_at").notNull(), }); export const linkRelations = relations(link, ({ one }) => ({ device: one(device, { fields: [link.linkedDeviceId], references: [device.id], }), supportedApp: one(supportedApp, { fields: [link.supportedAppId], references: [supportedApp.id], }), }));