Files
OpenFUT-Core/migrations/0005_draft_sessions.sql
T
funman300 bfd6de6896
CI / Build, lint & test (push) Failing after 1m21s
Phase 8 (Core): stateful draft, quick-sell, objectives by ID, market listings
Draft v2 — stateful FUT-style pick sessions:
  - POST /draft/start?difficulty=<> — creates session, returns 5
    candidates for GK slot (position order: GK RB CB CB LB CDM CM CAM RW ST LW)
  - POST /draft/sessions/:id/pick { card_id } — validates candidate,
    advances to next position; on last pick grants coins+pack reward
    (avg OVR ≥84 → gold pack + 2000 coins, ≥78 → silver + 1000, else 400)
  - GET /draft/sessions/:id — session state with per-pick cards
  - POST /draft/sessions/:id/abandon — cancel without reward
  - Migration 0005_draft_sessions.sql

Quick-sell:
  - DELETE /collection/:owned_card_id — removes card, credits coins based
    on overall (85+ → 1500, 80-84 → 900, 75-79 → 600, 65-74 → 300, <65 → 150)

Objectives:
  - GET /objectives/:id — single objective with progress
  - POST /objectives/:id/claim — claim reward by URL param (complement to
    existing POST /objectives/claim body-param endpoint)

Market:
  - GET /market/my-listings — active listings posted by current club
  - DELETE /market/listings/:id — cancel a listing, returns card to collection

Tests: 9 new integration tests (37 total, all passing)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 16:41:55 -07:00

17 lines
794 B
SQL

-- Stateful FUT-style draft sessions.
-- Each session tracks position order, per-position candidates, and picks made.
CREATE TABLE IF NOT EXISTS draft_sessions (
id TEXT PRIMARY KEY,
profile_id TEXT NOT NULL,
difficulty TEXT NOT NULL DEFAULT 'professional',
pick_order TEXT NOT NULL, -- JSON array of position strings, e.g. ["GK","RB",...]
picks TEXT NOT NULL DEFAULT '[]', -- JSON array of picked card_ids (len tracks progress)
current_candidates TEXT, -- JSON array of card_ids offered for the current pick
status TEXT NOT NULL DEFAULT 'active', -- active | completed | abandoned
reward_coins INTEGER DEFAULT 0,
reward_pack_id TEXT,
squad_rating INTEGER DEFAULT 0,
started_at TEXT NOT NULL,
completed_at TEXT
);