2026-02-13 21:28:33 -05:00
|
|
|
import { mysqlTable, int, varchar, boolean, decimal, datetime, index } from "drizzle-orm/mysql-core"
|
2026-02-07 14:02:03 -05:00
|
|
|
|
2026-02-13 21:28:33 -05:00
|
|
|
export const cards = mysqlTable("cards", {
|
|
|
|
|
productId: int().primaryKey(),
|
|
|
|
|
productName: varchar({ length: 255 }).notNull(),
|
|
|
|
|
productLineName: varchar({ length: 255 }).default("").notNull(),
|
|
|
|
|
productLineUrlName: varchar({ length: 255 }).default("").notNull(),
|
|
|
|
|
productStatusId: int().default(0).notNull(),
|
|
|
|
|
productTypeId: int().default(0).notNull(),
|
|
|
|
|
productUrlName: varchar({ length: 255 }).default("").notNull(),
|
|
|
|
|
rarityName: varchar({ length: 100 }).default("").notNull(),
|
|
|
|
|
sealed: boolean().default(false).notNull(),
|
|
|
|
|
sellerListable: boolean().default(false).notNull(),
|
|
|
|
|
setId: int().default(0).notNull(),
|
|
|
|
|
shippingCategoryId: int().default(0).notNull(),
|
|
|
|
|
duplicate: boolean().default(false).notNull(),
|
|
|
|
|
foilOnly: boolean().default(false).notNull(),
|
|
|
|
|
maxFulfillableQuantity: int().default(0).notNull(),
|
|
|
|
|
totalListings: int().default(0).notNull(),
|
|
|
|
|
score: decimal({ precision: 10, scale: 2, mode: 'number' }).default(0).notNull(),
|
|
|
|
|
lowestPrice: decimal({ precision: 10, scale: 2, mode: 'number' }).default(0).notNull(),
|
|
|
|
|
lowestPriceWithShipping: decimal({ precision: 10, scale: 2, mode: 'number' }).default(0).notNull(),
|
|
|
|
|
marketPrice: decimal({ precision: 10, scale: 2, mode: 'number' }).default(0).notNull(),
|
|
|
|
|
medianPrice: decimal({ precision: 10, scale: 2, mode: 'number' }).default(0).notNull(),
|
|
|
|
|
attack1: varchar({ length: 1024 }),
|
|
|
|
|
attack2: varchar({ length: 1024 }),
|
|
|
|
|
attack3: varchar({ length: 1024 }),
|
|
|
|
|
attack4: varchar({ length: 1024 }),
|
|
|
|
|
cardType: varchar({ length: 100 }),
|
|
|
|
|
cardTypeB: varchar({ length: 100 }),
|
|
|
|
|
energyType: varchar({ length: 100 }),
|
|
|
|
|
flavorText: varchar({ length: 1000 }),
|
|
|
|
|
hp: int().default(0).notNull(),
|
|
|
|
|
number: varchar({ length: 50 }).default("").notNull(),
|
|
|
|
|
releaseDate: datetime(),
|
|
|
|
|
resistance: varchar({ length: 100 }),
|
|
|
|
|
retreatCost: varchar({ length: 100 }),
|
|
|
|
|
stage: varchar({ length: 100 }),
|
|
|
|
|
weakness: varchar({ length: 100 }),
|
2026-02-07 14:02:03 -05:00
|
|
|
});
|
2026-02-12 15:22:20 -05:00
|
|
|
|
2026-02-13 21:28:33 -05:00
|
|
|
export const sets = mysqlTable("sets", {
|
|
|
|
|
setId: int().primaryKey(),
|
|
|
|
|
setName: varchar({ length: 255 }).notNull(),
|
|
|
|
|
setUrlName: varchar({ length: 255 }).notNull(),
|
|
|
|
|
setCode: varchar({ length: 100 }).notNull(),
|
2026-02-12 15:22:20 -05:00
|
|
|
});
|
|
|
|
|
|
2026-02-13 21:28:33 -05:00
|
|
|
export const skus = mysqlTable("skus", {
|
|
|
|
|
skuId: int().primaryKey(),
|
|
|
|
|
productId: int().notNull(),
|
|
|
|
|
condition: varchar({ length: 255 }).notNull(),
|
|
|
|
|
language: varchar({ length: 100 }).notNull(),
|
|
|
|
|
variant: varchar({ length: 100 }).notNull(),
|
|
|
|
|
calculatedAt: datetime(),
|
|
|
|
|
highestPrice: decimal({ precision: 10, scale: 2 }),
|
|
|
|
|
lowestPrice: decimal({ precision: 10, scale: 2 }),
|
|
|
|
|
marketPrice: decimal({ precision: 10, scale: 2 }),
|
|
|
|
|
priceCount: int(),
|
|
|
|
|
},
|
|
|
|
|
(table) => [
|
|
|
|
|
index("productIdIdx").on(table.productId),
|
|
|
|
|
]);
|
2026-02-15 15:25:08 -05:00
|
|
|
|
|
|
|
|
export const processingSkus = mysqlTable("processingSkus", {
|
|
|
|
|
skuId: int().primaryKey(),
|
|
|
|
|
});
|