deckhearth/migrations/1787600511000_create-custom-cards.js

44 lines
1.3 KiB
JavaScript
Raw Normal View History

/**
* Custom card designs (card designer feature).
*
* One row per user-designed card. Designer-specific fields live here
* (frame, artwork, actions); on save we also upsert a matching catalog
* row in `cards` (game='Custom') + a `user_cards` row so designed cards
* appear in My Cards, lists, and decks through the normal joins.
*/
export const up = (pgm) => {
pgm.sql(`
CREATE TABLE IF NOT EXISTS custom_cards (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
card_id INTEGER REFERENCES cards(id) ON DELETE SET NULL,
name VARCHAR(255) NOT NULL,
mana_cost VARCHAR(50),
card_type VARCHAR(255),
rarity VARCHAR(50),
rules_text TEXT,
actions TEXT,
power VARCHAR(10),
toughness VARCHAR(10),
frame_id VARCHAR(50) DEFAULT 'classic',
artwork_url TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
`);
pgm.sql(`
CREATE INDEX IF NOT EXISTS idx_custom_cards_user_id
ON custom_cards(user_id)
`);
pgm.sql(`
CREATE INDEX IF NOT EXISTS idx_custom_cards_card_id
ON custom_cards(card_id)
`);
};
export const down = (pgm) => {
pgm.sql(`DROP TABLE IF EXISTS custom_cards CASCADE`);
};