Files
firefrost-services/services/arbiter-3.0/migrations/138_mvc_licensing.sql
Claude (Chronicler #83 - The Compiler) fd50009f67 Phase 11A: MVC licensing — migration + API routes
- 138_mvc_licensing.sql: mvc_licenses + mvc_activations tables
- src/routes/mvc.js: activate, validate, deactivate, BBB webhook, version check
- Wired /api/mvc into Arbiter index.js
- Ready for Chronicler deployment to Command Center

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:16:16 -05:00

31 lines
1.0 KiB
PL/PgSQL

-- Phase 11A: ModpackChecker Licensing Tables
-- Run: psql -U arbiter -d arbiter_db -f 138_mvc_licensing.sql
BEGIN;
CREATE TABLE mvc_licenses (
id SERIAL PRIMARY KEY,
order_id VARCHAR(64) UNIQUE NOT NULL,
buyer_id VARCHAR(64),
discord_id VARCHAR(32) UNIQUE,
tier VARCHAR(16) NOT NULL DEFAULT 'standard',
max_activations INTEGER NOT NULL DEFAULT 2,
status VARCHAR(16) NOT NULL DEFAULT 'active',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE mvc_activations (
id SERIAL PRIMARY KEY,
license_id INTEGER NOT NULL REFERENCES mvc_licenses(id) ON DELETE CASCADE,
panel_domain VARCHAR(255) NOT NULL,
panel_ip VARCHAR(45),
activated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
last_seen TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(license_id, panel_domain)
);
CREATE INDEX idx_mvc_licenses_status ON mvc_licenses(status);
CREATE INDEX idx_mvc_activations_last_seen ON mvc_activations(last_seen);
COMMIT;