Files
pokemon/src/db/schema.ts

70 lines
2.8 KiB
TypeScript
Raw Normal View History

import { mysqlTable, int, varchar, boolean, decimal, datetime, index } from "drizzle-orm/mysql-core"
2026-02-07 14:02:03 -05:00
export const cards = mysqlTable("cards", {
productId: int().primaryKey(),
originalProductName: varchar({ length: 255 }).default("").notNull(),
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 }),
Artist: varchar({ length: 255 }),
2026-02-07 14:02:03 -05:00
});
2026-02-12 15:22:20 -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
});
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(),
});