import { relations } from "drizzle-orm"; import { boolean, index, numeric, pgTable, text, timestamp, uuid } from "drizzle-orm/pg-core"; import { positionSideEnum } from "./enums"; import { events } from "./events"; import { positions } from "./positions"; import { trades } from "./trades"; export const markets = pgTable( "markets", { id: uuid("id").primaryKey().defaultRandom(), eventId: uuid("event_id") .notNull() .references(() => events.id), slug: text("slug").notNull().unique(), question: text("question").notNull(), priceYes: numeric("price_yes", { precision: 7, scale: 4 }).notNull().default("0.5000"), poolYes: numeric("pool_yes", { precision: 15, scale: 4 }).notNull().default("1000.0000"), poolNo: numeric("pool_no", { precision: 15, scale: 4 }).notNull().default("1000.0000"), volume: numeric("volume", { precision: 15, scale: 4 }).notNull().default("0.0000"), resolutionCriteria: text("resolution_criteria"), result: positionSideEnum("result"), active: boolean("active").notNull().default(true), closedAt: timestamp("closed_at", { withTimezone: true }), resolvedAt: timestamp("resolved_at", { withTimezone: true }), createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(), updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(), }, (t) => [index("markets_event_id_idx").on(t.eventId)], ); export const marketsRelations = relations(markets, ({ one, many }) => ({ event: one(events, { fields: [markets.eventId], references: [events.id] }), trades: many(trades), positions: many(positions), }));