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-23 19:05:55 -05:00
|
|
|
export const tcgcards = mysqlTable("tcgcards", {
|
2026-02-13 21:28:33 -05:00
|
|
|
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(),
|
2026-02-20 05:49:05 -05:00
|
|
|
setId: int(),
|
|
|
|
|
shippingCategoryId: int(),
|
2026-02-13 21:28:33 -05:00
|
|
|
duplicate: boolean().default(false).notNull(),
|
|
|
|
|
foilOnly: boolean().default(false).notNull(),
|
2026-02-20 05:49:05 -05:00
|
|
|
maxFulfillableQuantity: int(),
|
|
|
|
|
totalListings: int(),
|
|
|
|
|
score: decimal({ precision: 10, scale: 2, mode: 'number' }),
|
|
|
|
|
lowestPrice: decimal({ precision: 10, scale: 2, mode: 'number' }),
|
|
|
|
|
lowestPriceWithShipping: decimal({ precision: 10, scale: 2, mode: 'number' }),
|
|
|
|
|
marketPrice: decimal({ precision: 10, scale: 2, mode: 'number' }),
|
|
|
|
|
medianPrice: decimal({ precision: 10, scale: 2, mode: 'number' }),
|
2026-02-13 21:28:33 -05:00
|
|
|
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 }),
|
2026-02-20 05:49:05 -05:00
|
|
|
hp: int(),
|
2026-02-13 21:28:33 -05:00
|
|
|
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-19 16:04:34 -05:00
|
|
|
Artist: varchar({ length: 255 }),
|
2026-02-07 14:02:03 -05:00
|
|
|
});
|
2026-02-12 15:22:20 -05:00
|
|
|
|
2026-02-23 19:05:55 -05:00
|
|
|
export const cards = mysqlTable("cards", {
|
|
|
|
|
cardId: int().notNull().primaryKey().autoincrement(),
|
|
|
|
|
productId: int().notNull(),
|
|
|
|
|
variant: varchar({ length: 100 }).notNull(),
|
|
|
|
|
productName: varchar({ length: 255 }),
|
|
|
|
|
productLineName: varchar({ length: 255 }),
|
|
|
|
|
productUrlName: varchar({ length: 255 }).default("").notNull(),
|
|
|
|
|
rarityName: varchar({ length: 100 }),
|
|
|
|
|
sealed: boolean().default(false).notNull(),
|
|
|
|
|
setId: int(),
|
|
|
|
|
cardType: varchar({ length: 100 }),
|
|
|
|
|
energyType: varchar({ length: 100 }),
|
|
|
|
|
number: varchar({ length: 50 }),
|
|
|
|
|
Artist: varchar({ length: 255 }),
|
|
|
|
|
},
|
|
|
|
|
(table) => [
|
|
|
|
|
index("card_productIdIdx").on(table.productId, table.variant),
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
export const tcg_overrides = mysqlTable("tcg_overrides", {
|
|
|
|
|
productId: int().primaryKey(),
|
|
|
|
|
productName: varchar({ length: 255 }),
|
|
|
|
|
productLineName: varchar({ length: 255 }),
|
|
|
|
|
productUrlName: varchar({ length: 255 }).default("").notNull(),
|
|
|
|
|
rarityName: varchar({ length: 100 }),
|
|
|
|
|
sealed: boolean().default(false).notNull(),
|
|
|
|
|
setId: int(),
|
|
|
|
|
cardType: varchar({ length: 100 }),
|
|
|
|
|
energyType: varchar({ length: 100 }),
|
|
|
|
|
number: varchar({ length: 50 }),
|
|
|
|
|
Artist: varchar({ length: 255 }),
|
|
|
|
|
});
|
|
|
|
|
|
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(),
|
2026-02-23 19:05:55 -05:00
|
|
|
cardId: int().default(0).notNull(),
|
2026-02-13 21:28:33 -05:00
|
|
|
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) => [
|
2026-02-23 19:05:55 -05:00
|
|
|
index("productIdIdx").on(table.productId, table.variant),
|
2026-02-13 21:28:33 -05:00
|
|
|
]);
|
2026-02-15 15:25:08 -05:00
|
|
|
|
|
|
|
|
export const processingSkus = mysqlTable("processingSkus", {
|
|
|
|
|
skuId: int().primaryKey(),
|
|
|
|
|
});
|